ich würde gern Euren Sachverstand anzapfen:
Um in meinen Tools unabhängig von der Spaltenreihenfolge zu sein, bzw.
diese auch beliebig ändern zu können, gehe ich wie folgt vor:
Im Modul deklariere ich Spaltenköpfe(Header) als Konstanten ..
Const SP_NAME_FIRMA = "Firma"
.. und zugehörige Variablen, die später zeigen, in welcher Spalte sich der gesuchte Header befindet..
Dim spalte_Firma As Integer
Ermittelt wird das mit einer Funktion GetColumn:
spalte_Firma = GetColumn(SP_NAME_FIRMA, wksSearch)
Um im Entwicklungsstadium möglichst flexibel und schnell die Header in den jeweiligen worksheets anlegen/erweitern zu können, editiere ich die Zuordnung von Header zu Worksheet in dem sie angelegt werden sollen, in einem separaten Worksheet.Spalte1 Spalte2
Header worksheet
Firma Projekte importiert
In der Sub UpdateHeader erzeuge ich dann die fehlenden Header:
With wksHeader
lngLastRow = .Cells(Rows.Count, 1).End(xlUp).Row
spalte_wksTarget = GetColumn(SP_NAME_WKS_TARGET_NAME, wksHeader)
For i = 2 To lngLastRow
strWksTargetName = .Cells(i, spalte_wksTarget)
Set wksTarget = ThisWorkbook.Worksheets(strWksTargetName)
intLastCol = wksTarget.Cells(1, Columns.Count).End(xlToLeft).Column
intTargetCol = intLastCol + 1
If ColumnExists(.Cells(i, 1), wksTarget) = False Then
wksTarget.Cells(1, intTargetCol) = .Cells(i, 1)
End If
Next i
End With
Nun meine Frage:
Ist es möglich, im Worksheet an Stelle der Zeichenkette "Firma" (die dem Wert der Konstanten SP_NAME_FIRMA entspricht), auch direkt den Namen der Konstanten SP_NAME_FIRMA zu benutzen?
Spalte1 Spalte2
Header worksheet
SP_NAME_FIRMA Projekte importiert
Ich suche also eine Möglichkeit, daß beim Aufruf von
If ColumnExists(.Cells(i, 1), wksTarget) = False Then
der Ausdruck .Cells(i, 1), "Firma" enthält, obwohl in der Zelle "SP_NAME_FIRMA" steht.Es sollte also der Wert der Konstanten, auf Basis einer Zeichenkette in einer Zelle, die einer im Code deklarierten Konstanten entspricht, ermittelt werden.
Der Vorteil wäre, daß ich bei häufig vorkommenden Header-Änderungen, nur einmal Änderungen im Code vornehmen müßte und nicht an zwei Stellen.
Immerhin sind z.T. sehr viele Attribute (größer 100) zu verwalten.
Ich wünsche Euch einen sonnigen Tag und danke vorab schon einmal jedem, der sich mit der Fragestellung beschäftigt !
Zacharias