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

Forumthread: Fehler beim Kompilieren - Außerhalb Prozedur....

Fehler beim Kompilieren - Außerhalb Prozedur....
04.07.2007 09:31:23
Marko
Hallo,
habe hier folgendes Problem:
'Das Kombinationsfeld Category füllen
For i = 2 To 5
UserForm2.ComboBox1.AddItem Sheets("Vorgaben").Cells(i, 1).Value
Next i
'Den ersten Eintrag einstellen
UserForm2.ComboBox2.ListIndex = 0
For i = 2 To 5 gibts die Fehlermeldung: Fehler beim Kompilieren; Ausserhalb einer Prozedur ungültig. Habe das aus einem Buch mit CD; da funktionierts.
Hat jemand eine Ahnung, warum das bei mir nicht geht?

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fehler beim Kompilieren - Außerhalb Prozedur....
04.07.2007 09:36:05
Hajo_Zi
Hallo Marko,
ich vermute mal der Fehler liegt im Code den Du nicht gepostet hast. Eine Beispieldatei ist nicht immer schlecht. Dan haben beide die gleiche Datei. Ein Nachbau sieht meist anders aus als das Original.

AW: Fehler beim Kompilieren - Außerhalb Prozedur....
04.07.2007 09:37:51
Marko
Hallo,
sorry...
Private SubUserForm_Initialize()
Dim i As Integer
'Das Kombinationsfeld Category füllen
For i = 2 To 5
UserForm2.ComboBox1.AddItem Sheets("Vorgaben").Cells(i, 1).Value
Next i
'Den ersten Eintrag einstellen
UserForm2.Combobox2.ListIndex = 0

Private Sub CommandButton1_Click()
'Daten wegschreiben
Sheets("Data").Activate
Range("A65536").End(xlUp).Offset(1, 0).Select
With UserForm2
ActiveCell.Value = .TextBox11.Value
ActiveCell.Offset(0, 2).Value = .ComboBox1.Value
ActiveCell.Offset(0, 3).Value = .TextBox2.Value
ActiveCell.Offset(0, 6).Value = .TextBox3.Value
ActiveCell.Offset(0, 16).Value = .TextBox4.Value
ActiveCell.Offset(0, 4).Value = .TextBox5.Value
ActiveCell.Offset(0, 5).Value = .TextBox6.Value
ActiveCell.Offset(0, 10).Value = .TextBox7.Value
ActiveCell.Offset(0, 11).Value = .TextBox8.Value
ActiveCell.Offset(0, 14).Value = .TextBox9.Value
ActiveCell.Offset(0, 15).Value = .TextBox10.Value
ActiveCell.Offset(0, 1).Value = .TextBox12.Value
If .OptionButton1.Value = True Then _
ActiveCell.Offset(0, 12).Value = .OptionButton1.Caption
If .OptionButton2.Value = True Then _
ActiveCell.Offset(0, 12).Value = .OptionButton2.Caption
If .OptionButton3.Value = True Then _
ActiveCell.Offset(0, 12).Value = .OptionButton3.Caption
If .OptionButton4.Value = True Then _
ActiveCell.Offset(0, 12).Value = .OptionButton4.Caption
If .OptionButton5.Value = True Then _
ActiveCell.Offset(0, 13).Value = .OptionButton5.Caption
If .OptionButton6.Value = True Then _
ActiveCell.Offset(0, 13).Value = .OptionButton6.Caption
If .OptionButton7.Value = True Then _
ActiveCell.Offset(0, 13).Value = .OptionButton7.Caption
If .OptionButton8.Value = True Then _
ActiveCell.Offset(0, 13).Value = .OptionButton8.Caption
If .OptionButton9.Value = True Then _
ActiveCell.Offset(0, 13).Value = .OptionButton9.Caption
End With
End Sub



Private Sub CommandButton3_Click()
Unload UserForm2
End Sub


Anzeige
AW: Fehler beim Kompilieren - Außerhalb Prozedur....
04.07.2007 09:41:00
Hajo_Zi
Hallo Marko,
kein entscheident neuer Stand.
Mir fällt nur auf es fehlt nach dem ersten Teil ein End Sub.
Gruß Hajo

AW: Fehler beim Kompilieren - Außerhalb Prozedur....
04.07.2007 09:45:00
Marko
Habs mittlerweile hinbekommen.
Leerzeichen zwischen Sub & UserForm ist nicht so schlecht.... :-)
Danke trotzdem
.....................

Anzeige
AW: Fehler beim Kompilieren - Außerhalb Prozedur....
04.07.2007 09:53:00
Hajo_Zi
Hallo Marko,

das ist mir neu da diese Leerstelle das End Sub am Ende ersetzt. Aber ich werde trotzdem bei  _
meinem Verfahren bleiben und ein End Sub am Ende zu schreiben.


Gruß Hajo

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Fehler beim Kompilieren in VBA beheben


Schritt-für-Schritt-Anleitung

  1. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Fehler finden: Suche nach der Fehlermeldung „Fehler beim Kompilieren; außerhalb einer Prozedur ungültig“. Diese tritt häufig auf, wenn Code nicht korrekt innerhalb einer Sub oder Function platziert ist.
  3. Code überprüfen: Stelle sicher, dass dein Code korrekt strukturiert ist. Eine häufige Ursache ist das Fehlen eines End Sub oder das Vorhandensein von Leerzeichen zwischen Sub und dem Namen der Prozedur.
    Private Sub UserForm_Initialize()

    Achte darauf, dass es kein Leerzeichen zwischen Sub und UserForm_Initialize() gibt.

  4. Korrekturen vornehmen: Füge gegebenenfalls fehlende End Sub-Anweisungen hinzu und achte auf die korrekte Platzierung des Codes.

Häufige Fehler und Lösungen

  • Fehler: „Fehler beim Kompilieren; außerhalb einer Prozedur ungültig.“

    • Lösung: Überprüfe, ob der Code innerhalb einer Sub oder Function steht. Füge End Sub hinzu, wenn es fehlt.
  • Fehler: Private SubUserForm_Initialize() ist falsch geschrieben.

    • Lösung: Korrigiere den Code zu Private Sub UserForm_Initialize().
  • Fehler: Leere Zeilen oder unerwünschte Leerzeichen können ebenfalls Probleme verursachen.

    • Lösung: Entferne unnötige Leerzeilen und achte auf die korrekte Syntax.

Alternative Methoden

Falls du häufig mit dem „fehler beim kompilieren“-Problem konfrontiert bist, kannst du folgende Methoden ausprobieren:

  • Code-Dokumentation: Halte deinen Code klar und dokumentiere jeden Abschnitt. Das hilft, Fehler schneller zu finden.
  • Schrittweise Ausführung: Führe den Code Schritt für Schritt aus, um die genaue Stelle des Fehlers zu identifizieren.
  • Debugging-Werkzeuge: Nutze die Debugging-Tools im VBA-Editor, um Haltepunkte zu setzen und den Code schrittweise zu durchlaufen.

Praktische Beispiele

Hier ist ein Beispiel, das zeigt, wie man ein Kombinationsfeld in einem UserForm korrekt füllt:

Private Sub UserForm_Initialize()
    Dim i As Integer
    ' Kombinationsfeld füllen
    For i = 2 To 5
        UserForm2.ComboBox1.AddItem Sheets("Vorgaben").Cells(i, 1).Value
    Next i
    ' Den ersten Eintrag einstellen
    UserForm2.ComboBox2.ListIndex = 0
End Sub

Stelle sicher, dass du die UserForm korrekt initialisierst und alle End Sub-Anweisungen vorhanden sind.


Tipps für Profis

  • Code-Review: Lass deinen Code von einem Kollegen überprüfen. Oft sieht jemand anderes Fehler, die du übersehen hast.
  • Strukturierte Codierung: Halte den Code modular, indem du Funktionen und Subs erstellst, die jeweils für einen spezifischen Zweck verantwortlich sind.
  • Regelmäßige Backups: Erstelle regelmäßig Backups deiner Excel-Dateien, damit du bei schwerwiegenden Fehlern auf eine vorherige Version zurückgreifen kannst.

FAQ: Häufige Fragen

1. Was bedeutet „Fehler beim Kompilieren; außerhalb einer Prozedur ungültig“? Dieser Fehler tritt auf, wenn du Code außerhalb einer Sub oder Function platzierst. Alle Anweisungen müssen innerhalb einer Prozedur stehen.

2. Wie kann ich den Fehler schnell beheben? Überprüfe die Struktur deines Codes und stelle sicher, dass alle Prozeduren korrekt mit End Sub abgeschlossen sind.

3. Gibt es spezielle Tools zur Fehlerbehebung in VBA? Ja, der VBA-Editor bietet Debugging-Optionen, wie das Setzen von Haltepunkten und das schrittweise Ausführen des Codes. Diese helfen dir, Fehler schneller zu finden.

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