Hallo,
ich habe folgendes Problem:
Ich soll einen nicht von mir geschriebenen Code bearbeiten. Ich habe ein Tabellenblatt in Excel, dass ich dynamisch aus einem XML heraus generiere. Nun möchte ich, dass abgefragte Werte in Spalten, die schon vorhanden sind, einfach eingetragen werden und wenn neue Parameter gefunden werden, soll dafür eine neue Spalte am Ende der Tabelle eingefügt werden und darin der Inhalt. Im Moment ist eine Methode vorhanden, die die Spalten alphabetisch anordnet, allerdings sollen sie nun nach verschiedenen Kategorien gruppiert werden (sind eigentlich schon im xml in richtiger Reihenfolge, wird dann aber eben aufgelöst und sortiert).
Die vorhandene Methode legt die neue Spalte an und gibt mir einen Spaltenindex zurück, dann wird die Spalte befüllt:
Hier mal der Code für diese Hilfmethode:
Function getCol(Bean As String, Entry As String) As Integer
Dim CaptRow As Range, C As Range, Caption As String, ColIndex As Integer
Dim Column As Range
Caption = "bla" //Je nachdem wie die Spalte heißen soll, wird aus dem xml ausgelesen
Set CaptRow = ConfigSheet.Range("B1:IV1")
For Each C In CaptRow
If C.Value = Caption Then
getCol = C.Column
Exit Function
ElseIf C.Value > Caption Or C.Value = "" Then
ColIndex = C.Column
ConfigSheet.Select
C.Select
Selection.EntireColumn.Insert (xlRight)
Set Column = ConfigSheet.Range(ConfigSheet.Cells(2, ColIndex), ConfigSheet.Cells(65536, ColIndex))
Column.Clear
Column.Interior.ColorIndex = 2
Call setCaptionCell(ConfigSheet.Cells(1, ColIndex), Caption) //setzt einfach nur die Formatierung für die Zelle
getCol = ColIndex
Exit Function
End If
Next C
End Function
Ich möchte nun gerne diese Methode so umschreiben, dass sie anstatt zu sortieren einfach bei neuen Parametern die neue Spalte am Ende einrichtet und deren Index ausgibt.
Leider kenne ich mich mit vba überhaupt nicht aus, soll das nur hier bei meinem Studentenjob mal "schnell" machen. Habe leider auch nicht die Zeit, mich jetzt richtig einzuarbeiten.
Wäre sehr dankbar über Hilfe, sitze hier schon mehrere Tage drüber und komme nicht darauf
ich habe folgendes Problem:
Ich soll einen nicht von mir geschriebenen Code bearbeiten. Ich habe ein Tabellenblatt in Excel, dass ich dynamisch aus einem XML heraus generiere. Nun möchte ich, dass abgefragte Werte in Spalten, die schon vorhanden sind, einfach eingetragen werden und wenn neue Parameter gefunden werden, soll dafür eine neue Spalte am Ende der Tabelle eingefügt werden und darin der Inhalt. Im Moment ist eine Methode vorhanden, die die Spalten alphabetisch anordnet, allerdings sollen sie nun nach verschiedenen Kategorien gruppiert werden (sind eigentlich schon im xml in richtiger Reihenfolge, wird dann aber eben aufgelöst und sortiert).
Die vorhandene Methode legt die neue Spalte an und gibt mir einen Spaltenindex zurück, dann wird die Spalte befüllt:
Hier mal der Code für diese Hilfmethode:
Function getCol(Bean As String, Entry As String) As Integer
Dim CaptRow As Range, C As Range, Caption As String, ColIndex As Integer
Dim Column As Range
Caption = "bla" //Je nachdem wie die Spalte heißen soll, wird aus dem xml ausgelesen
Set CaptRow = ConfigSheet.Range("B1:IV1")
For Each C In CaptRow
If C.Value = Caption Then
getCol = C.Column
Exit Function
ElseIf C.Value > Caption Or C.Value = "" Then
ColIndex = C.Column
ConfigSheet.Select
C.Select
Selection.EntireColumn.Insert (xlRight)
Set Column = ConfigSheet.Range(ConfigSheet.Cells(2, ColIndex), ConfigSheet.Cells(65536, ColIndex))
Column.Clear
Column.Interior.ColorIndex = 2
Call setCaptionCell(ConfigSheet.Cells(1, ColIndex), Caption) //setzt einfach nur die Formatierung für die Zelle
getCol = ColIndex
Exit Function
End If
Next C
End Function
Ich möchte nun gerne diese Methode so umschreiben, dass sie anstatt zu sortieren einfach bei neuen Parametern die neue Spalte am Ende einrichtet und deren Index ausgibt.
Leider kenne ich mich mit vba überhaupt nicht aus, soll das nur hier bei meinem Studentenjob mal "schnell" machen. Habe leider auch nicht die Zeit, mich jetzt richtig einzuarbeiten.
Wäre sehr dankbar über Hilfe, sitze hier schon mehrere Tage drüber und komme nicht darauf
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „enit87“ ()