Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1820to1824
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Tabellen via VBA formatieren

Tabellen via VBA formatieren
30.03.2021 09:31:04
Christian
Hallo Zusammen, trotz tagelanger Suche finde ich keine passende Lösung zu meinem Problem. Ich habe eine Spalte (in meinem Fall Spalte "O") in der in verschiedenen Zeilen Werte stehen, die als Tabelle formatiert werden müssen. In meinem Fall stehen in Spalte "O" in Zeile 1 ; 9 ; 18; 31 und 41 jeweils der gewünschte Tabellenname. Unter dem Tabellenname (also in Spalte
"O" Zeile, 2 ; 10; 19; 32 und 42) ein bestimmter Wert. Ich möchte nun Zeile 1 & 2, 9 & 10, 18 & 19, 31 & 32 sowie 41 & 42 als Tabelle formatieren sowie im Nachgang je Tabelle über das Feld "Namensfeld" einen Namen geben.
Wie gesagt, habe ich schon einige Lösungsansätze gefunden, die mir aber bei meinem Problem nicht allzuviel weiterhelfen können.
Gruß, Chris

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabellen via VBA formatieren
30.03.2021 09:52:40
Rudi
Hallo,
Sub aaaa()
Dim r As Range, a As Range
With ActiveSheet
Set r = .Columns(15).SpecialCells(xlCellTypeConstants)
For Each a In r.Areas
.ListObjects.Add(xlSrcRange, a, , xlYes).Name = a.Cells(1)
Next a
End With
End Sub

Gruß
Rudi

AW: Tabellen via VBA formatieren
30.03.2021 10:17:36
Christian
Hallo Rudi, vielen Dank für die wirklich schnelle Rückmeldung. Die Formatierung zur Tabelle scheint funktioniert zu haben. Zumindest hat es den Anschein. Mir fehlt aber leider noch der eigentliche Faktor. Ich muss die Tabelle "benennen". Das hat den Hintergrund, da ich auf einem anderen Datenblatt eine "Drop-Down"-Abfrage habe, die nur auf die Wert zurückgreifen kann, die einen Tabellennamen besitzen. Normalerweise mache ich das manuell, in dem ich z.B. in Spalte "O" die Zeile 1 kopiere, in Zeile 2 gehe und dann den Wert (oder hier Namen) aus der ersten Zeile in das Namenfeld (bei mir ganz links oben) rein klicke und über "strg + V" den Namen aus Zeile 1 einfüge. Jetzt hat der Wert in Zeile 2 einen Namen und kann über das Drop-Down abgerufen werden.
LG, Chris

Anzeige
AW: Tabellen via VBA formatieren
30.03.2021 10:33:34
Rudi
genau das geschieht hier:
.Name = a.Cells(1)
Gruß
Rudi

AW: Tabellen via VBA formatieren
30.03.2021 11:02:25
Christian
Ich weiß nicht, ob ich etwas falsch mache. Aber die Namensgebung scheint nicht zu funktionieren. Ich kann die neu eingetragenen Daten nicht über das Drop-Down aufrufen. Nur die Daten werden angezeigt, bei denen ich manuell die Formatierung vorgenommen habe. Vielleicht hilft es ja, wenn ich Dir mal mein schon fertiges VBA zeige. Ich starte über eine UserForm eine Abfrage. Die dort eingefügten Werte werden dann in ein Datenblatt übertragen bzw. es wird eine neue Spalte "O" generiert und mit den Daten aus der UserForm gefüllt. Funktioniert auch alles prima. Der nächste Schritt, bei der ich Deine Hilfe benötige, ist dann eben das formatieren.
Mein VBA welches ich schon geschrieben habe, soll Werte aus meiner UserForm in eine Spalte eintragen bzw. eine neue Spalte generieren
------------------------------------------------------------------------
Private Sub ComboBox6_Change()
End Sub

Private Sub ComboBox7_Change()
End Sub

Private Sub ComboBox8_Change()
End Sub

Private Sub ComboBox9_Change()
End Sub

Private Sub TextBox2_Change()
End Sub

Private Sub TextBox3_Change()
End Sub

Private Sub TextBox4_Change()
End Sub

Private Sub TextBox6_Change()
End Sub

Private Sub UserForm_Initialize()
'Variable deklarieren
Dim Wiederholungen As Integer
'Schleife zum Füllen der ComboBox mit den Daten aus Blatt "Grunddaten"
'Spalte C ab Zeile 2 bis zur letzten gefüllten Zeile
For Wiederholungen = 2 To Sheets("Grunddaten").Range("A65536").End(xlUp).Row
ComboBox7.AddItem Sheets("Grunddaten").Cells(Wiederholungen, 1)
ComboBox8.AddItem Sheets("Grunddaten").Cells(Wiederholungen, 11)
ComboBox6.AddItem Sheets("Grunddaten").Cells(Wiederholungen, 12)
Next
End Sub

Private Sub CommandButton2_Click()
'UserForm schließen
Unload Me
End Sub
Private Sub CommandButton1_Click()
'Variable deklarieren
Dim erste_freie_Zeile As Integer
'erste freie Zeile in Blatt "DB_TB" ermitteln
'und in Variable "erste_freie_Zeile" schreiben
erste_freie_Zeile = Sheets("DB_TB").Range("C65536").End(xlUp).Offset(1, 3).Row
'In Blatt "DB_TB"
'With Sheets("DB_TB")
'erste freie Zeile das ausgewählte Konto übertragen
'Sheets("DB_TB").Cells(erste_freie_Zeile, 15) = ComboBox4.Text
'Sheets("DB_TB").Cells(erste_freie_Zeile, 3) = ComboBox1.Text
'End With
Sheets("DB_TB").Cells(erste_freie_Zeile, 3) = ComboBox7.Text
Sheets("DB_TB").Select
Columns("O:O").Select
Columns("GB:GB").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
'Fipo inklusive Tabellenname
Worksheets("DB_TB").Range("O1") = "DEZ_" & ComboBox7.Text
Worksheets("DB_TB").Range("O9") = "MAN_" & ComboBox7.Text
Worksheets("DB_TB").Range("O18") = "PSP_" & ComboBox7.Text
Worksheets("DB_TB").Range("O31") = "SK_" & ComboBox7.Text
Worksheets("DB_TB").Range("O41") = "MB_" & ComboBox7.Text
Worksheets("DB_TB").Range("GB1") = "IA_" & TextBox2.Text
Worksheets("DB_TB").Range("GB17") = "PO_" & TextBox2.Text
'Sachkonto
Worksheets("DB_TB").Range("O32") = ComboBox6.Value
'Maßnahme
Worksheets("DB_TB").Range("O10") = TextBox4.Value
'PSP-Element
Worksheets("DB_TB").Range("O19") = TextBox3.Value
'Mittelbindungsnummer
Worksheets("DB_TB").Range("O42") = TextBox2.Value
'Dezernat
Worksheets("DB_TB").Range("O2") = ComboBox8.Value
'Innenauftragsnummer
Worksheets("DB_TB").Range("GB2") = TextBox5.Value
'Position
Worksheets("DB_TB").Range("GB18") = TextBox6.Value
Unload Me
End Sub
-------------------------------------------------------------------------------------------
LG, Chris

Anzeige
AW: Tabellen via VBA formatieren
30.03.2021 11:39:13
ralf_b
es ist ein Unterschied ob man eine intelligente Tabelle erstellt oder einen Bereichsnamen. Auch wenn beides im Namensmanager aufgelistet wird.
Der Zugriff auf die Daten ist verschieden und in deinem Fall meinst du bestimmt Bereichsnamen. Es gibt unterschiedliche Symbole im Namensmanager vor den jeweiligen Namen. Bereichsnamen kann man dort auch löschen. aber Intelligente Tabellen nicht. Gibt es einen Grund warum du leere Subs hier gepostet hast? Die Anwendung der Bereichsnamen ist in deinem Code auch nicht ersichtlich.
Ein paar bessere Infos hilft uns dir zu helfen.
gruß
rb

Anzeige
AW: Tabellen via VBA formatieren
30.03.2021 12:58:46
Christian
Wahrscheinlich liegt es daran, dass ich mich mit den Begriffen noch nicht so auskenne. Ich hatte nur den Begriff "Tabellenname" im Kopf. Nach Deiner Erklärung gehe ich aber auch davon aus, dass der Begriff "Bereichsname" korrekt ist. Die leeren Subs haben sich automatisch generiert. Das war ich nicht. Die hätte ich wahrscheinlich auch gar nicht mitschicken müssen.
Leider darf ich aus Sicherheitsgründen die Datei nicht hochladen (Regierungseigentum). Ich versuche das aber mal zu erklären. Ich habe eine Datenbank erstellt, die mit mehreren Ableitungen versehen ist. So gehört zu einer bestimmten Haushaltsstelle ein bestimmtes Konto mit einem bestimmten Verwendungszweck (etc.). Die Datenbank manuell zu pflegen ist enorm zeitaufwendig. Daher wollte ich das in irgendeiner Form "Teil-Automatisieren". Wenn unser Finanzminister nun auf die Idee Kommt, eine neue Haushaltsstelle freizugeben (zu der immer ein bestimmtes Konto kommt sowie weitere Variablen), können diese in meine UserForm eingetragen werden. Durch drücken des CommandButton1 werden diese Daten in Form einer Ableitung in die Datenbank eingespielt (ganz so, als würde ich dies manuell machen). Eine neue Spalte (in meinem Fall Spalte "O") wird erzeugt, die Daten werden dort unereinander eingespielt (auch noch ein paar Daten mehr, aber das soll hier nicht interessieren). Wenn die Datenbank gefüllt ist, hat der User über ein anderes Datenblatt (was ich eigens dafür erstellt habe) die Möglichkeit, alle bis dahin eingespielten Daten aus der Datenbank über ein Drop-Down-Feld abzurufen. So kann er dann die Haushaltsstelle aufrufen, das dazugehörige Konto (ein eigenes Drop-Down-Feld), den Verwendzungszweck (wieder eigenes Drop-Down-Feld), etc. Am Ende hat er also die Gesamte Ableitung im Druckformat vor sich (so, als würdest Du Online-Banking machen. Da müssen auch verschiedene Felder ausgefüllt werden. Nur gibt meine Datenbank vor, was möglich ist. Also keine freie Eingabe). Jetzt kommt die Krux an der ganzen Geschichte......man kann die Daten über das Drop-Down-Feld nur aufrufen, wenn die Tabelle einen "Namen" (wahrscheinlich der Bereichsname) hat. Ansonsten taucht der gesuchte Wert nicht im Drop-Down auf.
Ich hoffe, dass diese Erklärung ausreicht.
LG, Chris

Anzeige
AW: Tabellen via VBA formatieren
30.03.2021 13:45:49
ralf_b
in deinem Code wird nich eine neue Spalte O, sonder eine neue Spalte "GB" erzeugt.

Columns("O:O").Select
Columns("GB:GB").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove

Wie auch immer du die dropdowns realisieren willst. Es gibt unterschiedliche Möglichkeiten. Über Bereichsname oder über intelligente Tabellen oder nur über den Zellbereich. Es kommt drauf an was du über die Daten weist. Ist der Zellbereich immer gleich, nimm lieber diesen. Namen werden bei Kopieraktionen gern von Excel vervielfältigt und können zu Problemen führen. Man sollte so wenig wie möglich Aufwand betreiben. Das erspart später Pflegeaufwand. Nicht zu vergessen eine gute Dokumentation um später bei Anpassungen sich leichter zurecht zu finden.
gruß
rb
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige