Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema CheckBox
BildScreenshot zu CheckBox CheckBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Label
BildScreenshot zu Label Label-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema ListBox
BildScreenshot zu ListBox ListBox-Seite mit Beispielarbeitsmappe aufrufen

UserForm Kontrolle

Betrifft: UserForm Kontrolle von: xtian
Geschrieben am: 09.10.2020 15:05:31

Hallo zusammen,
ich bin VBA Neuling und würde die Frage stellen, ob folgender Code so geschrieben werden kann. Ab
und zu kommt ein Laufzeitfehler. Ich kann aber leider nicht sagen wann.

Private Sub CommandButton1_Click()
    lngRow = ListBox1.ListIndex + 1
    If ListBox1.ListIndex = -1 Then
            MsgBox "Keinen Eintrag aus ListBox ausgewählt"
        Else
        Sheets(1).Range(Cells(lngRow, 1), Cells(lngRow, 3)).Copy
        Sheets(1).Range(Cells(lngRow, 1), Cells(lngRow, 3)).Insert Shift:=xlDown
        Application.CutCopyMode = False
    End If
        Unload UserForm1
        UserForm1.Show
End Sub
Die Daten (Spalte A bis C) werden in die ListBox eingelesen. Ein Datensatz wird in der ListBox markiert
und sobald der CMB1 gedrückt wird, soll der Datensatz eine Zeile tiefer in der Excel Tabelle und in der
ListBox kopiert werden. Wird kein Datensatz ausgewählt, kommt eine Fehlermeldung.

Gruß
Christian

Betrifft: AW: UserForm Kontrolle
von: Nepumuk
Geschrieben am: 09.10.2020 15:56:16

Hallo Christian,

teste mal:

Private Sub CommandButton1_Click()
    Dim lngRow As Long
    If ListBox1.ListIndex = -1 Then
        MsgBox "Keinen Eintrag aus ListBox ausgewählt"
    Else
        lngRow = ListBox1.ListIndex + 1
        With Worksheets(1)
            .Range(.Cells(lngRow, 1), .Cells(lngRow, 3)).Copy
            .Cells(lngRow, 1).Insert Shift:=xlShiftDown
        End With
        Application.CutCopyMode = False
    End If
    Unload Me
    Me.Show
End Sub

Der Fehler tritt dann auf, wenn die aktive Tabelle nicht die Tabelle(1) ist.

Gruß
Nepumuk

Betrifft: AW: UserForm Kontrolle
von: xtian
Geschrieben am: 10.10.2020 00:35:59

Hallo Nepumuk,
super, vielen Dank.
Gruß
christian