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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | Private Sub UserForm_Initialize()
Dim lZeile, lZeile1 As Long
With ListboxA
.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
.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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | 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
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
|