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

Forumthread: Laufzeitfehler "438" , Objekt...

Laufzeitfehler "438" , Objekt...
08.05.2004 15:32:04
Matthias
hallo,
ich hab ein kleines problem...
beim kompellieren kommt immer dieser fehler: Laufzeitfehler "438" , Objekt unterstützt die Eigenschaft der Methode nicht.
bei folgendem Code...
In "DieseArbeitsmappe":
--------------------------------------------------------------------------------

Private Sub Workbook_Open()
Dim n       As Integer
Dim x       As Integer
Dim Letzter As Integer
'ComboBox 'cmbJahr' mit den Jahren füllen
With Worksheets("Tabelle1").cmbJahr
.Clear
For n = 1990 To 2010
.AddItem n
If n = Year(Date) Then x = n - 1990 + 1
Next n
.ListIndex = x
End With
'ComboBox 'cmbMonat' mit den Monatsnamen füllen
With Worksheets("Tabelle1").cmbMonat
.Clear
For n = 1 To 12
.AddItem Format(DateSerial(2004, n, 1), "mmmm")
If n = Month(Date) Then x = n - 1
Next n
.ListIndex = x
End With
'ComboBox 'cmbTag' mit den Tagen des Monats füllen
'Letzten Tag des aktuellen Monats bestimmen
Letzter = DateSerial(Year(Date), Month(Date) + 1, 1) - _
DateSerial(Year(Date), Month(Date), 1)
With Worksheets("Tabelle1").cmbTag
.Clear
For n = 1 To Letzter
.AddItem n
If n = Day(Date) Then x = n - 1
Next n
.ListIndex = x
End With
End Sub

-------------------------------------------------------------------------------
In "Tabelle1"
-------------------------------------------------------------------------------

Private Sub cmbMonat_Change()
Dim Monat       As Integer
Dim Tag         As Integer
Dim myJahr      As Integer
Tag = Worksheets("Tabelle1").cmbTag.ListIndex
Monat = Worksheets("Tabelle1").cmbMonat.ListIndex + 1
'ComboBox 'cmbTag' mit den Tagen des Monats füllen
'Letzten Tag des aktuellen Monats bestimmen
Letzter = DateSerial(myJahr, Monat + 1, 1) - _
DateSerial(myJahr, Monat, 1)
With Worksheets("Tabelle1").cmbTag
.Clear
For n = 1 To Letzter
.AddItem n
Next n
'wenn möglich, den eingestellten Tag belassen
On Error GoTo errHandle
.ListIndex = Tag
Exit Sub
errHandle:
.ListIndex = -1
End With
End Sub

-------------------------------------------------------------------------------
es sollen damit dropdown felder mit eingabe moglichkeit von Jahr, Monat und Tag
entstehen, habe nur diesen code eingefügt sonst nichts, wie kann ich den fehler beheben und oder hab ich was vergessen?
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Laufzeitfehler "438" , Objekt...
08.05.2004 16:42:46
FloGo
Bist du dir auch sicher, dass du die Namen für deine Comboboxen richtig geschrieben hast?
FloGo
AW: Laufzeitfehler "438" , Objekt...
08.05.2004 17:55:49
Matthias
:) alles klar danke, hatte die combobox falsch benannt
Bitte, bitte,... ;-)) FloGo
08.05.2004 18:16:42
FloGo
123
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Laufzeitfehler 438 in Excel VBA beheben


Schritt-für-Schritt-Anleitung

Um den Laufzeitfehler "438" in Excel VBA zu beheben, folge diesen Schritten:

  1. Überprüfe die Namen der Steuerelemente: Stelle sicher, dass die Namen der ComboBoxen (cmbJahr, cmbMonat, cmbTag) im VBA-Code genau den Namen entsprechen, die Du in der Excel-Oberfläche verwendet hast. Ein häufiger Grund für den Fehler laufzeitfehler 438 ist eine falsche Benennung.

  2. Korrektur der Variablen: Achte darauf, dass alle Variablen korrekt deklariert sind. In dem Beispiel fehlt die Deklaration von myJahr. Füge dies hinzu:

    Dim myJahr As Integer
    myJahr = Worksheets("Tabelle1").cmbJahr.ListIndex + 1990
  3. Kompilieren des Codes: Nach den Änderungen solltest Du den Code kompilieren, um sicherzustellen, dass keine weiteren Fehler vorhanden sind. Gehe im VBA-Editor zu Debug > Kompilieren.

  4. Testen: Führe den Code aus, um zu prüfen, ob der Fehler weiterhin auftritt.


Häufige Fehler und Lösungen

  • Objekt unterstützt diese Eigenschaft oder Methode nicht: Dies geschieht oft, wenn der Name einer ComboBox falsch geschrieben ist. Überprüfe die Namen sorgfältig.

  • Fehlende oder falsche Deklaration von Variablen: Stelle sicher, dass alle Variablen deklariert und initialisiert sind. Dies hilft, den vba fehler 438 zu vermeiden.

  • Unzureichende Fehlerbehandlung: Wenn der Code auf einen Fehler stößt und keine Fehlerbehandlung implementiert ist, kann dies zu unerwartetem Verhalten führen. Verwende On Error GoTo zur Implementierung der Fehlerbehandlung.


Alternative Methoden

Wenn der Fehler weiterhin auftritt, kannst Du folgende alternative Ansätze in Betracht ziehen:

  • Verwendung von ListFillRange: Anstatt die ComboBoxen manuell zu füllen, kannst Du ListFillRange verwenden, um die Werte aus einem bestimmten Zellbereich zu beziehen. Dies kann den Code vereinfachen.

  • Fehlerprotokollierung: Implementiere eine einfache Fehlerprotokollierung, um die genauen Stellen zu identifizieren, an denen der Fehler auftritt. Dies kann durch das Schreiben von Fehlern in eine Log-Datei oder ein Arbeitsblatt erfolgen.


Praktische Beispiele

Hier ist ein einfaches Beispiel, um eine ComboBox mit Jahren zu füllen:

Private Sub Workbook_Open()
    Dim n As Integer
    With Worksheets("Tabelle1").cmbJahr
        .Clear
        For n = 1990 To 2010
            .AddItem n
        Next n
    End With
End Sub

Achte darauf, dass cmbJahr korrekt benannt ist, um den laufzeitfehler 438 zu vermeiden.


Tipps für Profis

  • Strukturierung des Codes: Halte deinen Code gut strukturiert und dokumentiere jeden Schritt. Dies hilft nicht nur bei der Fehlersuche, sondern auch bei der Wartung des Codes.

  • Verwendung von Option Explicit: Füge Option Explicit am Anfang jedes Moduls hinzu, um sicherzustellen, dass alle Variablen deklariert sind. Dies kann viele Laufzeitfehler verhindern.

  • Regelmäßige Backups: Mache regelmäßig Sicherungskopien deiner Arbeitsmappe, um Datenverlust zu vermeiden, wenn Fehler auftreten.


FAQ: Häufige Fragen

1. Was ist der Laufzeitfehler 438?
Der Laufzeitfehler 438 tritt auf, wenn ein Objekt in VBA eine bestimmte Eigenschaft oder Methode nicht unterstützt. Dies kann durch falsche Benennungen oder fehlende Referenzen verursacht werden.

2. Wie kann ich den Laufzeitfehler 438 in Excel verhindern?
Stelle sicher, dass alle Steuerelemente korrekt benannt sind, und verwende Option Explicit, um die Deklaration aller Variablen zu erzwingen. Achte auch darauf, den Code regelmäßig zu kompilieren.

3. Was sollte ich tun, wenn ich den Fehler nicht beheben kann?
Überprüfe alle Codeabschnitte auf mögliche Tippfehler und führe eine gründliche Fehlerbehandlung ein. Wenn nötig, konsultiere Online-Foren oder Experten für spezifische Hilfe.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige