Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Variable Anstelle der Ueberschrift des Headers

Forumthread: Variable Anstelle der Ueberschrift des Headers

Variable Anstelle der Ueberschrift des Headers
05.03.2025 23:57:36
Thorsten
Hallihallo!

Weiss jemand, ob ich eine Variable anstelle einer Headerueberschrift verwenden kann?

Header = tbl.Range("Planer[[#Headers],[KPRoe1]]").Offset(1, i)


Die Headerueberschrift KPRoe1 soll durch eine Variable ersetzt werden.

Gruss

Thorsten
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Variable Anstelle der Ueberschrift des Headers
06.03.2025 00:57:24
ralf_b
die Headerbezeichnung ist ein Text. Natürlich kannst du den auch mit Variablen zusammenbauen.
da es sich um ein Listobject handelt, könntest du auch andere Möglichkeiten nutzen. Kommt halt drauf an was du damit vorhast.
AW: Variable Anstelle der Ueberschrift des Headers
06.03.2025 04:57:13
Ulf
Hi,
wie erwähnt mit Listobjects:


Dim lObj As ListObject
Dim Spaltenkopf As Range
Dim i As Integer
i = 1
Set lObj = ThisWorkbook.Worksheets(1).ListObjects(1)
Set Spaltenkopf = lObj.HeaderRowRange.Columns(2).Cells(1)
Debug.Print "Kopf: " & Spaltenkopf.Value & " Z(+1)S(+1) in Tabelle " & Spaltenkopf.Offset(1, i)

hth
Ulf
Anzeige
AW: Variable Anstelle der Ueberschrift des Headers
06.03.2025 11:04:11
Yal
Hallo Thorsten,

als Ergänzung des bereits zielführenden Beitrags von Ulf, 2 Spielereien mit den Unterobjekten von ListObject:

Sub ListObject_test()

Dim LO As ListObject
Dim SpaltenKopf As Range
Dim Z As Range

'Version "einfach"
Set LO = Range("tblTest").ListObject
Set SpaltenKopf = LO.HeaderRowRange.Cells(LO.ListColumns("KPRoe1").Index) 'Ermitteln der Spalten-Index von KPRoe1
For Each Z In LO.ListColumns("KPRoe1").DataBodyRange 'Behandlung aller Daten-Zellen der Spalte KPRope1. Die Zellen sind als Blatt-Zellen referenziert
Debug.Print "Kopf: " & SpaltenKopf.Value & vbTab & "Tab.Zeile: " & Z.Row & vbTab & "Wert: " & Z.Value
Next
End Sub


Sub ListObject_test2()

Dim LO As ListObject
Dim SpNr As Long
Dim Z As ListRow

'Version "nicht so einfach"
Set LO = Range("tblTest").ListObject
SpNr = LO.ListColumns("KPRoe1").Index
With LO.HeaderRowRange.Cells(SpNr)
For Each Z In LO.ListRows
Debug.Print "Kopf: " & .Value, "Tab.Zeile: " & Z.Index, "Wert: " & Z.Range(SpNr).Value, "Blattzeile: " & Z.Range.Row
Next
End With
End Sub

Ich habe noch nicht entdeckt, wie man g'scheid die ListRow- und ListColumn-Referenzierung miteinander kombinieren kann...Wenn jemand Ideen hat, gerne.

VG
Yal
Anzeige
AW: Variable Anstelle der Ueberschrift des Headers
06.03.2025 12:46:03
Thorsten
Vielen Dank für die schnelle Antwort!

Leider habe ich mich missverständlich ausgedrückt. Ich möchte nicht die Spaltenüberschrift als Variable, sondern eine Variable beim Ansprechen benutzen.
Ich habe eine Wartungstabelle erstellt, die 12x7 Spalten hat (KPRö1, KPDL1… KPRö2, KPDL2… usw.), die jeweils durch eine Leere Spalte optisch getrennt sind. Nun möchte ich, daß z.B im Februar alle mit „X“ markierten Zellen durch „F“ ersetzt werden (X=erledigt, F=fällig) dazu wollte ich eine Variable nutzen wie:
Dim i as String
Dim spalte as string
i = 2 (die zwei steht hier für Februar und sol noch über das Datum ausgelesen werden)
spalte = „KPRoe“ + i

Dann wollte och die entsprechende spalte mit dem Variablennamen ansprechen, dirch die Zellen alternieren, mit „replace“ die Werte ändern und das ganze in eine For i to i + 6 Schleife legen und mit offset(0, i) die nächsten Spalten ändern. Im März würde „i“ dann „3“ sein (übers Datum ausgelesen.

Mein Problem ist, wenn ich in

 bl.Range("Planer[[#Headers],[KPRoe1]]").Offset(1, i) 


„KPRoe1“ durch „spalte“ ersetze gibt es natürlich eine Fehlermeldung, weil VBS nach einer Überschrift „spalte“ sucht, anstelle der enthaltenen Variable.

Puha…. Ich hoffe ihr könnt in etwa nachvollziehen, was ich möchte. Ich habe mir bereits viel erlesen, doch hier stehe ich aif dem Schlauch. Heute Abend könnte ich auch das entsprechende Tabellenblatt hochladen, oder sogar die komplette Tabelle.

Den Ansatz mit ListColums finde ich gut, aber auch hier müsstee „KPRoe1“ durch eine Varoable ersetzt werden.

Danke schonmal für“s lesen! 😉

LG
Thorsten
Anzeige
AW: Variable Anstelle der Ueberschrift des Headers
06.03.2025 13:02:50
daniel
Hi

wenn ein Text aus festem Text und Variablen bestehen soll, dann kann man nicht einfach die Variablen in den Text einfügen (dann sind sie einfacher Text) sondern man muss den festen Text beenden und dann die Variable mit & verketten, also in deinem Fall:

spalte = „KPRoe“ & i

...
bl.Range("Planer[[#Headers],[" & spalte & ]]").Offset(1, i)


eine andere Methode wäre, den Text zunächst mit einem Dummy-Text an der Stelle, wo die Variable eingefügt werden soll, abzuspeichern und dann dein Dummy-Text durch den Varablenwert zu ersetzen. Der DummyText darf natürlich nicht an anderere Stelle als normaler Text vorkommen.
Ist zwar für einfache Beispiele etwas aufwendiger, aber wenns mal komplizierter wird, dann ist es übersichtlicher.
dim bereich as String, bereichX as String

...
bereich = "Planer[[#Headers],[xxx]]"
spalte = "KPRoe" & i
bereichX = Replace(bereich, "xxx", spalte)
blRange(bereichX).Offset(1, i)


Gruß Daniel
Anzeige
AW: Variable Anstelle der Ueberschrift des Headers
06.03.2025 14:39:11
Thorsten
Hallo Daniel!

Spitze! Das mit dem „&“ war mir nicht klar! Hab‘s mit Klammer probiert ect. Wahrscheinlich ist das VBA Basiswissen das mir noch fehlt! 🫣 Ich arbeite daran! 😁

Tausend Dank für eure schnelle und professionelle Hilfe!

Liebe Grüße

Thorsten
Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18