Hallo alle zusammen,
ich beschäftige mich seit ein paar Tagen mit VBA. Ich habe momentan eine Arbeitsmappe die ich dafür gebrauche um eine Liste auszulesen und bestimmte daten dann immer wieder neu erstellten Worksheets zuzuweisen.
als erstes habe ich es ganz statisch nur mit einem worksheet versucht und es hat auch alles geklappt. Nun habe ich das Problem, dass ich über einen Butten ein die neuen Worksheets erstelle und können immer wieder neue kommen und gelöscht werden.
Vor jeder Abfrage der auszulesenden Tabelle wird mir ein globales Array mit den Namen angelegt und nun will ich eine Spalte mit Inhalten mit dem Array vergleichen. Der Code schaut derzeit folgendermaßen aus:
Sub test()
Dim Name As Variant
Dim x As Integer
Dim z As String
Dim w As Integer
While x < 20
x = x + 1
'Spalte die verglichen werden soll
Name = Cells(3, 4).Offset(x, 0)
Set PA = Worksheets("Datenaufbereitung").Cells(3, 4).Offset(x, -3)
Set Kunde = Worksheets("Datenaufbereitung").Cells(3, 4).Offset(x, -2)
Set Menge = Worksheets("Datenaufbereitung").Cells(3, 4).Offset(x, -1)
Set Start = Worksheets("Datenaufbereitung").Cells(3, 4).Offset(x, 1)
Set Planung = Worksheets("Datenaufbereitung").Cells(3, 4).Offset(x, 2)
If Name = "Fr. XYZ" Then
With ActiveWorkbook.Sheets(Name)
.Cells(.Cells(.Rows.Count, 3).End(xlUp).Row + 1, 2) = PA
.Cells(.Cells(.Rows.Count, 2).End(xlUp).Row, 3) = Kunde
.Cells(.Cells(.Rows.Count, 2).End(xlUp).Row, 4) = Menge
.Cells(.Cells(.Rows.Count, 2).End(xlUp).Row, 5) = Start
.Cells(.Cells(.Rows.Count, 2).End(xlUp).Row, 6) = Planung
End With
End If
'statisches Beispiel das geht
For w = 1 To 100
'Array Personal wurde global definiert und mit einem anderen Makro gefüllt
If Name = Personal(w) Then
With ActiveWorkbook.Worksheets(Personal(w))
.Cells(.Cells(.Rows.Count, 3).End(xlUp).Row + 1, 2) = PA
.Cells(.Cells(.Rows.Count, 2).End(xlUp).Row, 3) = Kunde
.Cells(.Cells(.Rows.Count, 2).End(xlUp).Row, 4) = Menge
.Cells(.Cells(.Rows.Count, 2).End(xlUp).Row, 5) = Start
.Cells(.Cells(.Rows.Count, 2).End(xlUp).Row, 6) = Planung
End With
End If
Next
'Hier soll das Array durchgegangen werden und die Inhalte aus der Tabelle in die Worksheets die übereinstimmen Übertragen werden
Wend
End Sub
Es kann sein, dass der Code etwas umständlich ist, aber wie gesagt ich bin ein blutiger Anfänger. Ich freue mich über Vorschläge.
|