Office: (Office Version unbekannt) Laufzeitfehler 381

Helfe beim Thema Laufzeitfehler 381 in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen, ich habe eine Eingabemaske mit VBA erstellt. diese hat auch bisher funktioniert. nun bekomme ich plötzlich folgenden fehler... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von Samppa, 20. Juli 2020.

  1. Samppa Neuer User

    Laufzeitfehler 381


    Hallo zusammen,

    ich habe eine Eingabemaske mit VBA erstellt. diese hat auch bisher funktioniert. nun bekomme ich plötzlich folgenden fehler

    Laufzeitfehler 381: Eigenschaft List konnte nicht gesetzt werden. Index des Eingabefeldes ungültig.

    Wenn ich auf Debuggen klicken erscheint folgendes:

    Sub Schaltfläche1_Klicken()
    UserForm1.Show
    End Sub

    Nun weiß ich leider nicht weiter
     
    Samppa, 20. Juli 2020
    #1
  2. steve1da Office Guru
    steve1da, 20. Juli 2020
    #2
  3. Samppa Neuer User
    hallo,

    wenn ich mit google weitergekommen wäre, hätte ich nicht ins forum geschrieben.
    aber vielen dank für die hilfe steve1da
     
    Samppa, 20. Juli 2020
    #3
  4. Exl121150 Erfahrener User

    Laufzeitfehler 381

    Hallo,

    du hast uns zwar die Stelle mitgeteilt, an der der Debugger den Fehler 381 anzeigt - aber leider kann ich daraus nur schließen, dass du keine Fehlerbehandlung in der SUB, in der der Fehler aufgetreten ist, programmiert hast. Dadurch hat dich der Debugger in die oberste Makroebene zurückverwiesen. Da auch dort keine Fehlerbehandlung vorhanden ist, kam es schließlich zum Programmabbruch zur Laufzeit.

    Wichtig wäre daher für uns Helfer, wie der VBA-Code innerhalb der "UserForm1"-Form aussieht, der vermutlich die Combo-Box bzw. die List-Box bearbeitet, wo der eigentliche Fehlerherd zu suchen ist. Da man bei dieser Informationslage sonst nichts sagen kann, hat User steve1da eine allgemeine Frage an dich gerichtet, um die Problemlage auszuloten.
     
    Exl121150, 20. Juli 2020
    #4
  5. Samppa Neuer User
    Hallo,

    der Code schaut wie folgt aus:

    Private Sub CommandButton4_Click()

    Option Explicit
    Option Compare Text
    ' ************************************************************************************************
    ' Autor/en: http://www.online-vba.de - Marc Wershoven
    ' Verwendung der Quelltexte auf eigene Gefahr!
    ' Es gelten die Nutzungsbedingungen von www.online-vba.de!
    ' Original-Quelltext: www.online-vba.de/vba_tutorialuserform.php
    ' ************************************************************************************************

    'Neuer Eintrag Schaltfläche Ereignisroutine
    Private Sub CommandButton1_Click()
    Dim lZeile As Long
    'Wenn der Benutzer einen neuen Eintrag erzeugen möchte,
    'erstellen wir einen neuen Eintrag in der ListBox und markieren
    'diesen, damit der Benutzer die Daten eintragen kann

    lZeile = 5 'Start in Zeile 2, Zeile 1 sind ja die überschriftrn
    'Schleife solange etwas in der ersten Spalte in Tabelle 1 drin steht
    Do While Trim(CStr(Tabelle1.Cells(lZeile, 1).Value)) <> ""
    lZeile = lZeile + 1 'Nächste Zeile bearbeiten
    Loop

    'Nach Durchlauf dieser Schleife steht lZeile in der ersten leeren Zeile von Tabelle1
    'Neuen Eintrag in die Tabelle1 schreiben, Spalte ID muss gefüllt sein, damit
    'unsere Routinen die Zeile wiederfinden!
    Tabelle1.Cells(lZeile, 1) = CStr("Neuer Eintrag Zeile " & lZeile)

    'Und neuen Eintrag in die UserForm eintragen
    ListBox1.AddItem CStr("Neuer Eintrag Zeile " & lZeile)

    'Den neuen Eintrag markieren mit Hilfe des ListIndexes
    ListBox1.ListIndex = ListBox1.ListCount - 1
    'Durch das Click Ereignis der ListBox werden die Daten automatisch geladen

    End Sub

    'Löschen Schaltfläche Ereignisroutine
    Private Sub CommandButton2_Click()
    Dim lZeile As Long

    'Wenn kein Datensatz in der ListBox markiert wurde, wird die Routine beendet
    If ListBox1.ListIndex = -1 Then Exit Sub

    'Zum Löschen benötigen wir die Zeilennummer des ausgewählten Datensatzes
    lZeile = 5 'Start in Zeile 2, Zeile 1 sind ja die Überschriften
    'Schleife solange etwas in der ersten Spalte in Tabelle 1 drin steht
    Do While Trim(CStr(Tabelle1.Cells(lZeile, 1).Value)) <> ""

    'Datensatz ID Spalte mit selektiertem Eintrag der ListBox vergleichen
    If ListBox1.Text = Trim(CStr(Tabelle1.Cells(lZeile, 1).Value)) Then

    'Eintrag gefunden, die ganze Zeile wird nun gelöscht
    Tabelle1.Rows(CStr(lZeile & ":" & lZeile)).Delete

    'Die ListBox muss nun neu geladen werden!
    Call UserForm_Initialize
    If ListBox1.ListCount > 0 Then ListBox1.ListIndex = 0

    Exit Do 'Vorzeitiges Ende, da der Datensatz schon gefunden ist

    End If

    lZeile = lZeile + 1 'Nächste Zeile bearbeiten
    Loop

    End Sub

    'Speichern Schaltfläche Ereignisroutine
    Private Sub CommandButton3_Click()
    Dim lZeile As Long

    'Wenn kein Datensatz in der ListBox markiert wurde, wird die Routine beendet
    If ListBox1.ListIndex = -1 Then Exit Sub

    'Wir müssen prüfen, ob die ID Spalte auch gefüllt ist!!
    If Trim(CStr(ComboBox2.Text)) = "" Then
    'Meldung ausgeben
    MsgBox "Sie müssen mindestens einen Namen eingeben!", vbCritical + vbOKOnly, "FEHLER!"
    'Abbrechen der Speicherroutine
    Exit Sub
    End If
    'Ausbauoption: Prüfen, ob die ID in Tabelle1 Spalte 1 schon vorhanden ist!

    'Zum Speichern benötigen wir die Zeilennummer des ausgewählten Datensatzes
    lZeile = 5 'Start in Zeile 2, Zeile 1 sind ja die Überschriften
    'Schleife solange etwas in der ersten Spalte in Tabelle 1 drin steht
    Do While Trim(CStr(Tabelle1.Cells(lZeile, 1).Value)) <> ""

    'Datensatz ID Spalte mit selektiertem Eintrag der ListBox vergleichen
    If ListBox1.Text = Trim(CStr(Tabelle1.Cells(lZeile, 1).Value)) Then

    'Eintrag gefunden, TextBoxen in die Zellen schreiben
    Tabelle1.Cells(lZeile, 1).Value = Trim(CStr(ComboBox2.Text))
    Tabelle1.Cells(lZeile, 2).Value = ComboBox3.Text
    Tabelle1.Cells(lZeile, 3).Value = TextBox2.Text
    Tabelle1.Cells(lZeile, 4).Value = TextBox3.Text
    Tabelle1.Cells(lZeile, 5).Value = TextBox4.Text
    Tabelle1.Cells(lZeile, 6).Value = ComboBox1.Text
    Tabelle1.Cells(lZeile, 7).Value = TextBox6.Text
    Tabelle1.Cells(lZeile, 8).Value = TextBox7.Text
    Tabelle1.Cells(lZeile, 15).Value = TextBox8.Text
    Tabelle1.Cells(lZeile, 18).Value = TextBox9.Text


    'Die ListBox muss nun neu geladen werden
    'allerdings nur, wenn sich der Name (ID) geändert hat
    If ListBox1.Text <> Trim(CStr(ComboBox2.Text)) Then
    Call UserForm_Initialize
    If ListBox1.ListCount > 0 Then ListBox1.ListIndex = 0
    End If

    Exit Do 'Vorzeitiges Ende, da der Datensatz schon gefunden ist

    End If

    lZeile = lZeile + 1 'Nächste Zeile bearbeiten
    Loop

    End Sub

    'Beenden Schaltfläche Ereignisroutine
    Private Sub CommandButton5_Click()
    Unload Me
    End Sub


    Private Sub Label10_Click()

    End Sub

    Private Sub ListBox1_Click()

    With Worksheets("Tabelle1")
    If Me.ListBox1.ListIndex > -1 Then
    Me.ComboBox2 = ""
    Me.ComboBox3 = ""
    Me.TextBox2 = ""
    Me.TextBox3 = ""
    Me.TextBox4 = ""
    Me.ComboBox1 = ""
    Me.TextBox6 = ""
    Me.TextBox7 = ""
    Me.TextBox8 = ""
    Me.TextBox9 = ""

    'TextBoxen füllen
    Me.ComboBox2 = Trim(.Cells(Me.ListBox1.ListIndex + 5, 1))
    Me.ComboBox3 = .Cells(Me.ListBox1.ListIndex + 5, 2)
    Me.TextBox2 = .Cells(Me.ListBox1.ListIndex + 5, 3)
    Me.TextBox3 = .Cells(Me.ListBox1.ListIndex + 5, 4)
    Me.TextBox4 = .Cells(Me.ListBox1.ListIndex + 5, 5)
    Me.ComboBox1 = .Cells(Me.ListBox1.ListIndex + 5, 6)
    Me.TextBox6 = .Cells(Me.ListBox1.ListIndex + 5, 7)
    Me.TextBox7 = .Cells(Me.ListBox1.ListIndex + 5, 8)
    Me.TextBox8 = .Cells(Me.ListBox1.ListIndex + 5, 15)
    Me.TextBox9 = .Cells(Me.ListBox1.ListIndex + 5, 18)
    End If
    End With

    End Sub

    Private Sub TextBox2_Change()

    End Sub

    Private Sub TextBox8_Change()

    End Sub

    Private Sub UserForm_Activate()
    'Wenn die Eingabemaske angezeigt wird, markieren wir den ersten Namen
    'jedoch nur, wenn auch Einträge in der Liste stehen
    If ListBox1.ListCount > 0 Then ListBox1.ListIndex = 0
    End Sub


    Private Sub UserForm_Initialize()

    With Me
    .ComboBox2 = ""
    .ComboBox3 = ""
    .TextBox2 = ""
    .TextBox3 = ""
    .TextBox4 = ""
    .ComboBox1 = ""
    .TextBox6 = ""
    .TextBox7 = ""
    .TextBox8 = ""
    .TextBox9 = ""
    End With

    With ThisWorkbook.Worksheets("Tabelle1")
    If .Cells(5, "A") <> "" Then
    Me.ListBox1.List = .Range(.Cells(5, "A"), _
    .Cells(.Cells(.Rows.Count, "A").End(xlUp).Row, "A")).Value
    End If
    End With

    With Me.ComboBox1
    .AddItem "KM1"
    .AddItem "KM2"
    .AddItem "KM1+2"
    .AddItem "C75"
    .AddItem "C75_2"
    .AddItem "C75+_2"
    End With

    Me.ComboBox2.RowSource = Range("Mandanten!A1:A17").Value
    Me.ComboBox3.RowSource = Range("Mandanten!C1:C7").Value

    End Sub
     
    Samppa, 20. Juli 2020
    #5
  6. Exl121150 Erfahrener User
    Hallo,

    was mir auf den ersten Blick aufgefallen ist, ist, dass du den "CommandButton4" in "CommandButton5" umbenannt hast, dann aber die Click-Ereignisbehandlungsroutine für das neue "CommandButton4" ganz an den Anfang des Codes gestellt hast noch vor die beiden "OPTION"-Deklarationen, jedoch ohne ein abschließendes "End Sub".
    Das kann so nicht funktionieren.
     
    Exl121150, 20. Juli 2020
    #6
  7. Samppa Neuer User
    Hallo,

    ok das hab ich rausgenommen.
    was mir aber auffällt, sobald ich aufträge wieder löscher und nur noch 1 auftrag in der liste steht, kommt der laufzeitfehler.
    wenn mehrere aufträge noch in der liste sind, funktioniert alles.
     
    Samppa, 20. Juli 2020
    #7
Thema:

Laufzeitfehler 381

Die Seite wird geladen...
  1. Laufzeitfehler 381 - Similar Threads - Laufzeitfehler 381

  2. Laufzeitfehler 9 VBA

    in Microsoft Excel Hilfe
    Laufzeitfehler 9 VBA: Nschdem ich die Office Version von 2010 auf 2019 aktualisiert habe wird mir der Laufzeitfehler 9 ausgegeben. Das ist der Code Sub FiberCollect() Dim NumRows As Long 'letzte celle Dim Counter As...
  3. VBA Laufzeitfehler 9

    in Microsoft Excel Hilfe
    VBA Laufzeitfehler 9: Guten Abende an alle VBA Profi, Ich lerne gerade Programmierung mit VBA und habe fast null Ahnung von Fehlern ich habe folgenden Probleme. ich einen xlsm Datei versuche eine Tabelle mit codename...
  4. [VBA] .Documents.Open -> Laufzeitfehler 91

    in Microsoft Excel Hilfe
    [VBA] .Documents.Open -> Laufzeitfehler 91: Hallo zusammen, bekomme aktuell den Laufzeitfehler 91 an der Codestelle, wo ich versuche ein Word Dokument zu öffnen (Set wdDoc = wdApp.Documents.Open(wbBook.Path & "\" & stWordDocument)), das...
  5. MS Access Lauftzeitfehler "2501"

    in Microsoft Access Hilfe
    MS Access Lauftzeitfehler "2501": Hallo Liebe Office Gemeinde, Ich habe ein Problem mit meinem MS Access, wir haben unsere MA Liste in einer Access DB. Wenn man in unserem Formular auf "Drucken MA" klickt dann wird eine PDF...
  6. Excel VBA Laufzeitfehler 424 Objekt erforderlich

    in Microsoft Excel Hilfe
    Excel VBA Laufzeitfehler 424 Objekt erforderlich: Hallo zusammen, ich habe schon verschiedene Antworten zum Laufzeitfehler 424 gefunden, komme aber leider damit doch irgendwie nicht weiter (bin absoluter VBA-Neuling). Folgendes Makro habe ich...
  7. Laufzeitfehler "424" Objekt erforderlich Selenium VBA

    in Microsoft Excel Hilfe
    Laufzeitfehler "424" Objekt erforderlich Selenium VBA: Hallo Zusammen, ich möchte mithilfe von Selenium in VBA eine Tabelle auf einer Webseite in eine Excel Tabelle kopieren. Allerdings bekomme ich den Fehler "Laufzeitfehler "424" Objekt...
  8. ListBox Laufzeitfehler 381

    in Microsoft Excel Hilfe
    ListBox Laufzeitfehler 381: Hallo zusammen, ich habe ein Problem das ich bereits seit 2 Tagen nicht gelöst bekomme. An der Stelle ListBox1_Change meckert er immer wenn er in den Sub TextBoxList wechselt. Dabei markiert er...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden