Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Laufzeitfehler 381

Laufzeitfehler 381
11.07.2002 10:57:45
Trek
Einen Wunderschönen,

Habe ein Problem mit einer UserForm.Show Funktion.

Sobald ich die Datei öffne, gibt VBA (XL 2000) folgende Fehlermeldung raus:"Laufzeitfehler 381. Eigenschaft List konnte nicht gesetzt werden. Index des Eigenschaftenfeldes ungültig"

Wenn ich dann den Debugger starte zeigt sich folgendes Bild, wobei die Zeile "UserForm.3.Show" gelb hinterlegt ist.

Private Sub Workbook_Open()
If ActiveWindow.Caption = "Eingabe.xls" Then
ActiveWindow.WindowState = xlMinimized
ChDir "C:\Eigene Dateien"
UserForm3.Show
End If
End Sub

Wenn jemand mir helfen kann wäre ich sehr dankbar...

P.S. Ich weiß wie man einen Computer einschaltet, bin aber trotzdem nur ein User.

MfG
Trek

Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Laufzeitfehler 381
11.07.2002 11:06:40
Hans W. Herber
Hallo,

der Code stoppt zwar an dieser Stelle, das Problem ist aber vermutlich im Initialize-Ereignis der UserForm zu suchen.
Hier werden vermutlich einer ListBox (oder ComboBox) Werte aus einem Zellbereich zugewiesen. Möglicherweise erfolgt die Zuweisung mit:
ListBox1.List = Range("A1:A16")
In XL97 wird diese Zuweisung akzeptiert, bei den höheren Versionen wird verlangt:
ListBox1.List = Range("A1:A16").Value

hans

Anzeige
Re: Laufzeitfehler 381
11.07.2002 11:29:22
Trek

Ich ahne böses ... Ich habe wircklich nicht viel Plan, aber bei der Datei handelt es sich um eine Eingabemaske für EK Preisänderungen für ein Kalkulationsprogramm, d.h. dann ja das sehr Viele Werte Zellbereichen zugewiesen werden müssen oder ?

Sorry ich muss mich wie ein Schuljunge anhören...

Anzeige
Re: Laufzeitfehler 381
11.07.2002 11:33:02
Hans W. Herber
... das muss durchaus nicht sein, möglicherweise wird nur eine Combo- oder ListBox gefüllt. Du musst im Initialize-Ereignis nach einer oder mehreren Code-Zeilen suchen, in denen die Befehlssequenz:
...List =
zu finden ist. Berücksichtige aber dabei, dass die Fehlerquelle nur eine Vermutung von mir sein kann.

hans

Anzeige
Re: Laufzeitfehler 381
11.07.2002 11:42:33
trek
Das habe ich mitten raus kopiert kann hier der Hund begraben liegen ?


Sheets("EK Preise").Select
ButtonListBox.List() = Worksheets("EK Preise").Range(Cells(3, 16).Address, Cells(16, 16).Address)
ButtonListBox.ListIndex = -1

sorry wenn ich nerve .. bin echt verzweifelt

Re: Laufzeitfehler 381
11.07.2002 12:03:57
Hans W. Herber
... ändere die Zeile:
ButtonListBox.List() = Worksheets("EK Preise").Range(Cells(3, 16).Address, Cells(16, 16).Address)

in:
ButtonListBox.List = Worksheets("EK Preise").Range(Cells(3, 16), Cells(16, 16)).Value

hans

Anzeige
Re: Laufzeitfehler 381
11.07.2002 12:16:04
Trek
Nein,

tut mir leid ... gleich Fehlermeldung. Immer noch das Anfangsproblem...

MfG Trek

Re: Laufzeitfehler 381
11.07.2002 12:59:44
Trek
Hier sagt er mir das dies ein Syntaxfehler ist ... ?


ButtonListBox.Lis = Worksheets("EK Preise").Range(Cells(3, 16), Cells(16, 16)).Value)
ButtonListBox.ListIndex = -1

Ich glaube das war die letzte Zeile in "Initialize" die in Frage kam

Ein letztes Mal

Anzeige
Re: Laufzeitfehler 381
11.07.2002 13:56:33
Hans W. Herber
... sieh Dir das Teil an und Deine Logik wird Dir sagen, dass es sich ja nunmal um einen Syntaxfehler handeln muss, oder?

hans

;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Laufzeitfehler 381 in Excel beheben


Schritt-für-Schritt-Anleitung

  1. Öffne die betroffene Excel-Datei und gehe zum VBA-Editor mit ALT + F11.
  2. Finde den entsprechenden Code: Suche nach der Workbook_Open()-Subroutine in ThisWorkbook.
  3. Überprüfe die Zeile: Achte darauf, dass die Zeile UserForm3.Show korrekt ist.
  4. Gehe zur UserForm: Doppelklicke auf die UserForm und suche nach dem Initialize-Ereignis.
  5. Ändere die Zuweisung: Wenn du eine ListBox oder ComboBox verwendest, stelle sicher, dass du die Werte richtig zuweist:
    ListBox1.List = Range("A1:A16").Value
  6. Teste den Code: Schließe den VBA-Editor und teste die UserForm erneut.

Häufige Fehler und Lösungen

  • Laufzeitfehler 381: Dieser Fehler tritt häufig auf, wenn die Eigenschaften einer ListBox oder ComboBox nicht richtig gesetzt sind.

    • Lösung: Überprüfe die Zuweisung der Werte in der Initialize-Subroutine.
  • Syntaxfehler: Wenn du einen Syntaxfehler erhältst, achte darauf, dass du die richtige Schreibweise verwendest.

    • Lösung: Stelle sicher, dass der Code korrekt ist, z.B. ButtonListBox.List anstelle von ButtonListBox.Lis.

Alternative Methoden

  • Verwendung von Arrays: Anstatt direkt Zellen zuzuweisen, kannst du auch ein Array verwenden, um die Werte zu speichern und dann der ListBox zuzuweisen.

    Dim myArray As Variant
    myArray = Application.Transpose(Worksheets("EK Preise").Range("A3:A16").Value)
    ButtonListBox.List = myArray
  • Debugging mit MsgBox: Setze MsgBox-Befehle in deinen Code, um sicherzustellen, dass die richtigen Werte zugewiesen werden.


Praktische Beispiele

Hier sind einige Beispiele, wie du die ListBox korrekt füllen kannst:

  1. Direkte Zuweisung:

    ListBox1.List = Range("A1:A16").Value
  2. Mit einer Schleife:

    Dim i As Integer
    For i = 1 To 16
       ListBox1.AddItem Cells(i, 1).Value
    Next i
  3. Zuweisung aus einer anderen Tabelle:

    ButtonListBox.List = Worksheets("EK Preise").Range("A3:A16").Value

Tipps für Profis

  • Verwende Option Explicit: Dies zwingt dich, alle Variablen zu deklarieren, was hilft, Fehler wie den Laufzeitfehler vba zu vermeiden.
  • Nutze Fehlerbehandlung: Implementiere On Error Resume Next und On Error GoTo 0, um Fehler zu handhaben.
  • Organisiere deinen Code: Halte deinen Code sauber und gut strukturiert, um Fehler leichter zu finden.

FAQ: Häufige Fragen

1. Was ist der Laufzeitfehler 381?
Der Laufzeitfehler 381 tritt auf, wenn bei der Zuweisung von Werten an eine ListBox oder ComboBox ein ungültiger Index verwendet wird.

2. Wie kann ich diesen Fehler in Excel VBA beheben?
Überprüfe die Zuweisung der ListBox-Werte in der Initialize-Subroutine und stelle sicher, dass die angegebenen Zellbereiche korrekt sind und die richtigen Datentypen verwendet werden.

3. Was kann ich tun, wenn der Fehler weiterhin auftritt?
Teste die Zuweisungen schrittweise und nutze Debugging-Tools, um den genauen Punkt zu finden, an dem der Fehler auftritt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige