Werte aus LB in Range schreiben

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

Betrifft: Werte aus LB in Range schreiben
von: Chris
Geschrieben am: 29.05.2015 10:59:09

Hallo VBAler,
ich möchte mit der Maus selektierte Einträge aus einer Listbox in einen bestimmten range untereinander schreiben. Leider tut sich nix bei meinem Makro. Zum Testen habe ich ein Sheets genommen, das gar nicht existiert - und es gab keine Fehlermeldung. Offensichtlich wird das Makro ignoriert...
jmd eine Idee?
---
Zum Füllen der LB:

Private Sub Worksheet_Activate()
UserForm1.Show
With UserForm1.ListBox1
.ColumnCount = 3
.ColumnWidths = "50;50;50"
.ColumnHeads = True
.RowSource = "'Admin'!E2:G3"
 
    End With
  End Sub
---
Doppelklick auf LB-Objekt dann eingefügt:
Private Sub ListBox1_Click()
Dim zeile As Long
zeile = 1
 With UserForm1.ListBox1
                  
     For i = 0 To .ListCount - 1
            If .Selected(i) Then
                Sheets("Admin").Cells(zeile, 2) = ListBox1.Column(1, i)
                zeile = zeile + 1
                End If
                Next i
                End With
          
End Sub
Gruß
Chris

Bild

Betrifft: AW: Werte aus LB in Range schreiben
von: Kenny
Geschrieben am: 29.05.2015 11:49:51
Hi Chris,
Probiere es mal so. Verstehe nicht genau warum du eine Schleife benutzt. Soll doch bei jedem neuen Klick eingefügt werden oder?
Liebe Grüße


Public zeile
Private Sub ListBox1_Click()
With UserForm1.ListBox1
        zeile = zeile + 1
         Sheets("Admin").Cells(zeile, 2) = .Value
End With
End Sub


Bild

Betrifft: AW: Werte aus LB in Range schreiben
von: Chris
Geschrieben am: 29.05.2015 12:26:48
Hi Kenny,
ja bei jedem Klick. Das Makro läuft für das erste Column der LB. Meine LB hat jedoch drei Spalten. Ich bräuchte daher immer alle Einträge.
Also bei klick auf irgendein Item....copy zum Beispiel nacH
A1 = Item.column1
B1 = Item.column2
C1 = Item.Column3
Gruß
Chris

Bild

Betrifft: AW: Werte aus LB in Range schreiben
von: Kenny
Geschrieben am: 29.05.2015 13:12:30
Das würde dann so gehen:


Public zeile
Private Sub ListBox1_Click()
With UserForm1.ListBox1
        zeile = zeile + 1
         Sheets("Admin").Cells(zeile, 2) = .List(.ListIndex, 0)
         Sheets("Admin").Cells(zeile, 3) = .List(.ListIndex, 1)
         Sheets("Admin").Cells(zeile, 4) = .List(.ListIndex, 2)
End With
End Sub


Bild

Betrifft: AW: Werte aus LB in Range schreiben
von: Chris
Geschrieben am: 29.05.2015 14:04:09
Hi Kenny,
danke - genau.
Noch eine letzte Sache: Bei Klick auf einen Button, sollen alle markierten Einträge von LB2 in einem bestimmten Range gelöscht werden. ActiveSheet, range("F1:H100") ... vergleich die in LB2 angeklickten Items (3 columns) mit den Einträgen im range, wenn gefunden, lösche dort alle drei Angaben).
Nochmal danke,
Chris

Bild

Betrifft: AW: Werte aus LB in Range schreiben
von: Chris
Geschrieben am: 29.05.2015 14:20:56
Hi Kenny,
danke - genau.
Noch eine letzte Sache: Bei Klick auf einen Button, sollen alle markierten Einträge von LB2 in einem bestimmten Range gelöscht werden. ActiveSheet, range("F1:H100") ... vergleich die in LB2 angeklickten Items (3 columns) mit den Einträgen im range, wenn gefunden, lösche dort alle drei Angaben).
Nochmal danke,
Chris

Bild

Betrifft: AW: Werte aus LB in Range schreiben
von: Kenny
Geschrieben am: 29.05.2015 14:30:44


Private Sub CommandButton1_Click()
ende = zeile
With UserForm1.ListBox1
    For x = 0 To .ListCount - 1
        If .Selected(x) = True Then
            For zeile2 = 1 To ende
                If Sheets("Admin").Cells(zeile2, 2) = .List(x, 0) And _
                Sheets("Admin").Cells(zeile2, 3) = .List(x, 1) And _
                Sheets("Admin").Cells(zeile2, 4) = .List(x, 2) Then
                    Sheets("Admin").Range(Sheets("Admin").Cells(zeile2, 2), Sheets("Admin"). _
Cells(zeile2, 4)).ClearContents
                End If
            Next
        End If
    Next
End With
End Sub
so?

Bild

Betrifft: AW: Werte aus LB in Range schreiben
von: Chris
Geschrieben am: 01.06.2015 12:47:43
Hi Kenny,
ja genau. vielen Dank. Soweit kann ich dein Makro nachvollziehen. Außer an zwei Stellen:
zeile=ende
For zeile2 = 1 To ende: suche von oben bis zum Ende einer Spalte nach den Begriffen.
Müsste Ende nicht genau definiert werden? Zum Beispiel:
ende = ActiveSheet.Range("blabla").Find(What:="*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
Danke.
Chris

Bild

Betrifft: AW: Werte aus LB in Range schreiben
von: Beni
Geschrieben am: 01.06.2015 13:40:50
Hallo Chris
nicht Click, sondern MouseUp
bei Click ist noch nichts ausgewählt mit MouseUp schon
Gruss Beni
Private Sub ListBox1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
ListBox1.SetFocus
i = ListBox1.ListIndex
If ListBox1.ListIndex = -1 Then Exit Sub
Sheets("Admin").Cells(i+1, 2) = ListBox1.List(i, 1)

Bild

Betrifft: AW: Werte aus LB in Range schreiben
von: Chris
Geschrieben am: 01.06.2015 13:20:32
Hi Kenny,
ja genau. vielen Dank. Soweit kann ich dein Makro nachvollziehen. Außer an zwei Stellen:
zeile=ende
For zeile2 = 1 To ende: suche von oben bis zum Ende einer Spalte nach den Begriffen.
Müsste Ende nicht genau definiert werden? Zum Beispiel:
ende = ActiveSheet.Range("blabla").Find(What:="*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
Danke.
Chris

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Werte aus LB in Range schreiben"