Arrays kopieren

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: Arrays kopieren
von: Timm F.
Geschrieben am: 24.06.2015 19:51:41

Hallo miteinander,
ich habe gestern schon einmal eine Frage gestellt, die mir auch blendent beantwortet wurde.
Ich habe allerdings noch eine weitere Frage, die ich mit meinen VBA Kenntnissen nicht beantworten kann.
Den Aufbau der Excel-Mappe entnehmen Sie bitte dem Download-Link.
Grundsätzlich möchte ich, dass mir der Code ein Array von einem anderen Blatt in das erste Blatt kopiert. Dazu gibt es aber noch ein paar Einschränkungen:
Im erste Blatt "Menue" gibt es ein CommandButton hinter dem eine Suchmaske mit zwei ComboBoxen hinterlegt ist. in ComboBox1 können die Blätternamen ausgewählt werden. In ComboBox2 die in dem ausgewählten Blatt eingefügten Werte (Das wird deutlich klarer, wenn man sich die Mappe ansieht)
Ich möchte nun, dass wenn man auf den Suchen Button drückt der Code mir das jeweilige Array unter dem Wert in das Blatt "Menue" in das dafür vorgesehene Array schreibt.
Wenn ich also in der UserForm "Stadt" "Stadt2" auswähle, soll mir das Array (41,42,43,44) in "Menue" "Zielarray" kopiert werden.
Ich habe auch eine Idee, wie der Code funktionieren könnte, doch durch meine etwas spärlichen VBA Kenntnisse ist es mir nicht möglich ihn umzusetzen:
1. Nehme den Wert aus ComboBox1 und gehe in dieses Blatt
2. Nehme den Wert aus ComboBox2 und gehe an die Position in dem vorherig ausgewählten Blatt an welcher der Wert aus Combobox2 steht.
3. Gehe von diesem Wert eine Zeile runter und kopiere (Das eingerahmte Array)
4. Füge es in "Menue" "Zielarray" ein
https://www.herber.de/bbs/user/98447.xlsm
Ich hoffe es kann mir jemand helfen!:)

Bild

Betrifft: AW: Arrays kopieren
von: Luschi
Geschrieben am: 24.06.2015 20:58:02
Hallo Timm,
hier mal mein Vorschlag: https://www.herber.de/bbs/user/98450.xlsm
Gruß von Luschi
aus klein-Paris

Bild

Betrifft: AW: Arrays kopieren
von: NoseT
Geschrieben am: 25.06.2015 09:03:58
Hallo Luschi,
vielen Dank für deine Hilfe! Der Code macht genau das, was ich brauche.
Hier der Code zum Verständnis:

Private Sub Suchen_Click()
    Dim ws As Worksheet, _
        rg1 As Range, rg2 As Range, rg3 As Range
    Dim s As String
    
    s = Me.ComboBox2.Value
    
    If s <> "" Then
       Set ws = ThisWorkbook.Worksheets(Me.ComboBox1.Value)
       Set rg1 = ws.Range("3:3")
      --- Set rg2 = rg1.Find(s, , xlValues, xlWhole, xlByColumns, xlNext, False, , False)---
       If Not rg2 Is Nothing Then
          Set rg3 = rg2.Offset(1, 0).Resize(2, 2)
          rg3.Copy Worksheets("Menue").Range("D4")
       End If
    End If
    
    Set rg1 = Nothing
    Set rg2 = Nothing
    Set rg3 = Nothing
    Set ws = Nothing
    
End Sub
Ich verstehe den Code auch soweit, nur die "Find" Zeile mit den vielen Werten in der Klammer verstehe ich nicht. Ich habe sie im Code markiert.
Meine Interpretation ist folgende:
1. Nehme den Wert aus s (Der Suchbegriff aus ComboBox2)und durchsuche "rg1=ws.Range("3:3")"
Und jetzt weiß ich auch nicht mehr weiter...Warum kommen dann zwei Klammern hintereinander und was bedeuten die x1... Befehle und die beiden False am Ende (Die stehen bestimmt für eine Suchart ähnlich wie bei SVERWEIS)
Desweiteren ist es möglich in die Resize Funktion noch einzubauen, dass er die nächstfolgende Zeile nur kopieren soll, wenn dort ein Wert vorhanden ist? Oder braucht die Resize Funktion stets einen Absoluten Wertebereich um Arbeiten zu können?)
Vielen Dank:)

Bild

Betrifft: AW: Arrays kopieren
von: Luschi
Geschrieben am: 25.06.2015 12:05:00
Hallo NoseT,
sollte Deine F1-Taste nicht klemmen, dann stell doch mal den Cursor in den Vba-Code .Find
und drücke auf diese Taste - da wird Dir geholfen.
Ansonsten schaue hier mal nach:
https://msdn.microsoft.com/de-de/library/office/ff839746%28v=office.15%29.aspx
Ist zwar für Excel 2013, aber in der 2010er Version ist das genauso.
Da der 'Vba-Find-Befehl' sich nach den Einstellungen des Suchbefehls auf der Excel-Oberfläche richtet (Strg + F), ist es besser, in Vba alle verfügbaren Parameter festzulegen. Macht man es in der richtigen Reihenfolge, kann man auf die Parameternamen verzichten!
Gruß von Luschi
aus klein-Paris

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Arrays kopieren"