Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.04.2024 20:05:21
28.04.2024 18:33:31
28.04.2024 18:25:12
28.04.2024 14:18:05
Anzeige
Archiv - Navigation
1892to1896
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
laufzeitfehler 381 eigenschaft list konn
15.08.2022 15:17:34
Sven
Hallo zusammen,
ich sitze gerade vor folgendem Problem. Ich habe eine Bestandserfassungsliste mit einem Formular.
Es gibt zwei Felder für die schnell Ausfüllung der restlichen Produktbezogenen Daten, einmal nach HerstellerArtikelname und einmal nach Artikelnummer.
Jetzt ist es so das der Code für das Feld für HerstellerArtikelname funktioniert, der Code für die Suche nach Artikelnummer gibt aber den Laufzeitfehler 381 aus.
Der erste Code ist der der Funktionier und der zweite ist der mit dem Fehler.
Ich hoffe sehr Ihr könnt mir weiterhelfen. Vielen Dank schon mal vorab für eure Unterstützung.

Private Sub cboHerstellerArtikelname_Change()
'zieht Werte aus cboHerstellerArtikelname in Detailfelder
Me.cboHerstellerArtikelname.SetFocus
a = Me.cboHerstellerArtikelname.ListIndex
Me.txtHersteller.Value = Me.cboHerstellerArtikelname.List(a, 1)
Me.txtArtikelname.Value = Me.cboHerstellerArtikelname.List(a, 2)
Me.cboAbteilung.Value = Me.cboHerstellerArtikelname.List(a, 3)
Me.txtArtikelnummer.Value = Me.cboHerstellerArtikelname.List(a, 5)
Me.txtEAN.Value = Me.cboHerstellerArtikelname.List(a, 4)
End Sub

Private Sub cboArtikelnummer_Change()
'zieht Werte aus cboArtikelnummer in Detailfelder
Me.cboArtikelnummer.SetFocus
b = Me.cboArtikelnummer.ListIndex
Me.txtHersteller.Value = Me.cboArtikelnummer.List(b, 1)
Me.txtArtikelname.Value = Me.cboArtikelnummer.List(b, 2)
Me.cboAbteilung.Value = Me.cboArtikelnummer.List(b, 3)
Me.txtEAN.Value = Me.cboArtikelnummer.List(b, 4)
Me.txtArtikelnummer.Value = Me.cboArtikelnummer.List(b, 0)
End Sub

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: laufzeitfehler 381 eigenschaft list konn
15.08.2022 16:14:40
Nepumuk
Hallo Sven,
kann es sein, dass deine cboArtikelnummer keine 5 Spalten hat?
Die Angabe Me. im Modul des UserForms ist redundant und daher obsolet.
Gruß
Nepumuk
AW: laufzeitfehler 381 eigenschaft list konn
15.08.2022 16:41:12
Sven
Hallo Nepumuk,
alle Tabellen haben 5 Spalten.
https://www.herber.de/bbs/user/154658.zip
Ich war mal so frei und habe die Datei hochgeladen für ein besseres Verständnis meines Problems.
AW: laufzeitfehler 381 eigenschaft list konn
15.08.2022 16:57:32
Nepumuk
Hallo Sven,
sorry, aber bei mir kommt kein Fehler.
Gruß
Nepumuk
AW: laufzeitfehler 381 eigenschaft list konn
15.08.2022 17:09:36
Daniel
Hi
nur so als Hinweis, der Fehler tritt in beiden Makros auf, sobald du einen Eintrag nicht aus der Klappliste auswählst, sondern anfängst diesen per Tastatur einzugeben.
du kannst das .List(b, 1) nur dann ausführen, wenn b einen gültigen Wert hat, also zwischen 0 der Anzahl der Einträge -1 liegt.
b ist bei dir der ListIndex.
wenn du in der Combobox einen Wert eingibst, der nicht in der Liste vorhanden ist, dann ist der ListIndex = -1 und du kannst mit diesem ListIndex nicht das .List(...) ausführen.
da du das ganze im Change-Event ausführst, wird das Makro jedesmal ausgeführt, wenn du ein Zeichen eintippst. Solange du noch keinen Eintrag vollständig eingegeben hast, wird also der ListIndex = -1 sein !
du musst also auf jeden Fall eine Prüfung einbauen wie If b &gt -1 then bevor du .List(b, ...) ausführst.
auch könntest du überlegen, ob Change das richtige Event ist ober ob du nicht lieber eines verwendest, dass erst nach vollständiger Eingabe aktiv wird und nicht sofort bei jedem Tastendruck.
Gruß Daniel
Anzeige
AW: laufzeitfehler 381 eigenschaft list konn
16.08.2022 08:27:08
Sven
Guten Morgen Daniel,
vielen Dank für die detaillierte Fehlerbeschreibung :), was VBA angeht muss ich noch einiges Üben.
Wie würde den der Code aussehen wenn ich den letzten Punkt den du erwähnst Programmieren will. Wenn erst bei vollem Eintrag der Code ausgeführt werden soll.
Vielen Dank schon mal vorab und wünsche einen guten Start in die Tag.
Gruß Sven
AW: laufzeitfehler 381 eigenschaft list konn
16.08.2022 10:06:55
Nepumuk
Hallo Sven,
so:

Private Sub cboHerstellerArtikelname_Change()
'zieht Werte aus cboHerstellerArtikelname in Detailfelder
Dim a As Long
a = cboHerstellerArtikelname.ListIndex
If a > -1 Then
txtHersteller.Text = cboHerstellerArtikelname.List(a, 1)
txtArtikelname.Text = cboHerstellerArtikelname.List(a, 2)
cboAbteilung.Text = cboHerstellerArtikelname.List(a, 3)
txtArtikelnummer.Text = cboHerstellerArtikelname.List(a, 5)
txtEAN.Text = cboHerstellerArtikelname.List(a, 4)
End If
End Sub
Private Sub cboArtikelnummer_Change()
'zieht Werte aus cboArtikelnummer in Detailfelder
Dim b As Long
b = cboArtikelnummer.ListIndex
If b > -1 Then
txtHersteller.Text = cboArtikelnummer.List(b, 1)
txtArtikelname.Text = cboArtikelnummer.List(b, 2)
cboAbteilung.Text = cboArtikelnummer.List(b, 3)
txtEAN.Text = cboArtikelnummer.List(b, 4)
txtArtikelnummer.Text = cboArtikelnummer.List(b, 0)
End If
End Sub
Gruß
Nepumuk
Anzeige
AW: laufzeitfehler 381 eigenschaft list konn
16.08.2022 11:02:11
Sven
Hallo Nepumuk,
vielen Dank für die Erstellung mit If.
Bei Hersteller & Artikelname funktioniert es einwandfrei :) richtig gut.
Wenn ich aber eine Artikelnummer im Feld darunter eingebe, funktioniert es leider nicht. Nur wenn ich es über den DropDown eintrage.
Tippe ich von Hand passiert gar nichts. Er gibt aber auch keine Fehlermeldung aus.
AW: laufzeitfehler 381 eigenschaft list konn
16.08.2022 11:15:07
Nepumuk
Hallo Sven,
das liegt daran, dass das Zahlen sind. Wandle die in Text um dann funktioniert es.

Private Sub UserForm_Initialize()
Dim lngIndex As Long
'füllt bestimmte Felder automatisch aus
txtErfassungsdatum.Value = Date
txtErfassungszeit.Value = Time
'ordnet die ComboBoxes den Tabellen zu
cboErfasser.List = Range("TabErfasser").Value
cboMärkte.List = Range("TabMärkte").Value
cboHerstellerArtikelname.List = Range("TabSortiment").Value
cboArtikelnummer.List = Range("TabSortiment2").Value
cboAbteilung.List = Range("TabAbteilungen").Value
cboBuchungstyp.List = Range("TabBuchungstyp").Value
With cboArtikelnummer
For lngIndex = 0 To .ListCount - 1
.List(lngIndex, 0) = CStr(.List(lngIndex, 0))
Next
End With
End Sub
Gruß
Nepumuk
Anzeige
AW: laufzeitfehler 381 eigenschaft list konn
16.08.2022 11:32:15
Sven
Hallo Nepumuk,
einfach genial. Es funktioniert wie es soll. Echt beeindruckend wie du das so einfach gelöst hast.
Ich muss echt noch einiges Lernen was VBA angeht. Steh noch total am Anfang merke ich.
Vielen Vielen Dank.
Gruß Sven

13 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige