Hallo Freunde,
Ich versuche verzweifelt über 2 listboxen verschiedene Bereiche zu kopieren.
In eine Tabelle „Export“ sind 2 Hauptbereiche - Bereich A (A1:AI556) und Bereich B (AK1:BS556)
Diese Bereiche A & B sind jeweils in 15 (Max) Unterbereiche aufgeteilt wie Folgt
Bereich A Bereich B
(A1:AI1) – Titelzeile (AK1:BS1) – Titelzeile
(A2:AI38) – Bereich 1a (AK2: BS38) – Bereich 1b
(A39:AI75) – Bereich 2a (AK39: BS75) – Bereich 2b
(A76:AI112) – Bereich 3a (AK76: BS112) – Bereich 3b
..... .....
(A520:AI556) – Bereich 15a (AK520: BS556) – Bereich 15b
Jeweils in der ersten Zeile jedes Bereiches stehen die Hauptangaben von denen zwei Zellen (Spalte D & E) sowie (Spalte AN & AO) in 2 listboxen einlesen lasse.
Also Listbox1 – Bereich A und Listbox2 Bereich B, das einzige was ich geschafft habe.
Private Sub UserForm_Initialize()
Dim lZeile, lZeile1 As Long
With ListboxA 'Bereich A
.ColumnCount = 2
.ColumnWidths = "30 ; 100"
.RowSource = ""
.Clear
ThisWorkbook.Worksheets("Export").Activate
For lZeile = 2 To 556 Step 37
If Range("D" & lZeile).Value <> "" Then
ListboxA.AddItem " "
ListboxA.List(.ListCount - 1, 0) = Range("D" & lZeile).Value
ListboxA.List(.ListCount - 1, 1) = Range("E" & lZeile).Value
End If
Next lZeile
End With
With ListboxB 'Bereich B
.ColumnCount = 2
.ColumnWidths = "30 ; 100"
.RowSource = ""
.Clear
ThisWorkbook.Worksheets("Export").Activate
For lZeile1 = 2 To 556 Step 37
If Range("AN" & lZeile1).Value <> "" Then
ListboxB.AddItem " "
ListboxB.List(.ListCount - 1, 0) = Range("AN" & lZeile1).Value
ListboxB.List(.ListCount - 1, 1) = Range("AO" & lZeile1).Value
End If
Next lZeile1
End With
End Sub
Nun will ich über diese beiden Listboxen Daten von Bereich B - zu Bereich A kopieren,
beziehungsweise bei Auswahl von ListboxB er mir den dazugehörigen Bereich (z.b. Bereich 2c) in ListboxA Auswahl (z.b. Bereich 7a) Kopiert.
Private Sub CMD_ImportSel_Click()
Dim i As Long, bl As Boolean, j As Long
bl = False
For i = 0 To Me.ListboxB.ListCount - 1
If Me.ListboxB.Selected(i) = True Then
For j = 0 To Me.ListboxA.ListCount - 1
If Me.ListboxB.Column(0, i) = Me.ListboxA.Column(0, j) Then
bl = True
Exit For
End If
Next
If bl = False Then
Me.ListboxA.AddItem Me.ListboxB.Column(0, i)
Else
MsgBox "Field already added", vbInformation, "Note:"
End If
End If
Next
End Sub
Beim Kopieren von ListboxB zu ListboxA schaffe ich nur, das er mir die erste spalte kopiert (fehlt die 2 spalte).
Wie kann ich dann, die Bezüge zwischen die Listboxen zu den Bereichen herstellen?
Ich habe über Select Case (index Listbox) gedacht kriege es aber nicht hin.
'Wie z.b. Auswahl Kopieren
Select Case (index ListboxB)
Case 0
Range(AK2: BS38).Copy
Case 1
Range(AK39: BS75).Copy
Case 2
Range(AK76: BS112).Copy
….
…..
Case 14
Range(AK520: BS556).Copy
End Select
'Auswahl Einfügen
Select Case (index ListboxA)
Case 0
Range(A2:AI38). PasteSpecial Paste:=xlPasteValues
Case 1
Range(A39:AI75). PasteSpecial Paste:=xlPasteValues
Case 2
Range(A76:AI112). PasteSpecial Paste:=xlPasteValues
….
…..
Case 14
Range(A520:AI556). PasteSpecial Paste:=xlPasteValues
End Select
Ich Hoffe mich einiger maßen verständlich gemacht zu haben und bedanke mich im Voraus für jede Hilfe.
Gruß Paulo
|