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

Fehler:"Variable nicht definiert"

Forumthread: Fehler:"Variable nicht definiert"

Fehler:"Variable nicht definiert"
11.04.2018 13:47:39
Idence
Hallo Leute,
wenn auf den OK-Button meiner UserForm geklickt wird, dann soll der Inhalt aus dem Textfeld "Eingabe" in eine Zelle reingeschrieben werden. Die Reihe der Zelle ist definiert über den Mausklick des Users, die Spalte definiere ich.
Private Sub OKButton_Click()
Dim z As String                                  'z = Zeile der aktiven Zelle
z = ActiveCell.row
Cells(z, 4) = Cells(z, 4) & vbCrLf & Eingabe.Value
Unload Me
End Sub
Doch leider läuft das Programm nicht, weil angeblich die Variable "z" nicht definiert wurde. Hat jemand eine Idee, woran dies liegen könnte?
Gruß
Idence
Anzeige

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Dim z As Long und verwende Option Explicit...owT
11.04.2018 13:51:47
Peter(silie)

AW: Fehler:"Variable nicht definiert"
11.04.2018 13:56:02
ChrisL
Hi
Zeilennummern würde ich als Datentyp "Long" (=Ganzzahl) und nicht als "String" (=Text) deklarieren.
Mein Excel 2016 ist jedoch so tolerant, dass es auch mit String funktioniert.
Komisch ist, dass ".row" nicht automatisch in ".Row" geändert wurde.
Lade mal die Beispieldatei.
cu
Chris
Anzeige
AW: Fehler:"Variable nicht definiert"
11.04.2018 14:23:26
Idence
Hallo Peter und Chris,
danke für eure schnellen Antworten.
Ich habe den Typ zu "Long" geändert, das Option Explicit ist schon dabei, habe ich hier nur der Übersicht halber weggelassen.
Der komplette Sub schaut so aus:
Private Sub OKButton_Click()
Dim z As Long                                                     'z = Zeile der aktiven Zelle
z = ActiveCell.row
Cells(z, 4) = Cells(z, 4) & vbCrLf & Eingabe.Value
'ActiveCell.Value = ActiveCell.Value & vbCrLf & Eingabe.Value     'Text aus Textfeld " _
Eingabe" wird in aktive Zelle eingefügt
ActiveCell.Offset(0, 6).Activate
ActiveCell.Value = Termin.Value
ActiveCell.Offset(0, -6).Activate
Unload Me
End Sub

Leider kommt immer noch die Gleiche Fehlermeldung: "Variable nicht definiert"
Anm.: Die auskommentierte Zeile funktioniert zwar, aber ich möchte die Aufgabe so lösen, wie ich es gerade versuche. Sie bietet mir "größere Freiheit".
Die Datei würde ich gerne hochladen, darf ich aber aus Datenschutzgründen nicht.
Gruß
Idence
Anzeige
AW: Fehler:"Variable nicht definiert"
11.04.2018 14:47:53
JoWE
Hallo Idence,
Du hat aber nicht zufällig eine Ereignisprozedur in der aktiven Tabelle, die für Dein Vorhaben evtl. kontraproduktiv sein könnte?
Was passiert wenn Du das Makro schrittweise (F8) ausführst, welchen Wert erhält z dann?
Gruß
Jochen
AW: Fehler:"Variable nicht definiert"
11.04.2018 15:02:36
Idence
Hallo Jochen,
in der aktiven Tabelle befindet sich von dem oben geposteten abgesehen nur noch die Anweisung "Unload Me" für den Cancel-Button der UserForm und "Option Explicit". Dies ist vermutlich nicht die Ursache für den Fehler.
Bisher wurde die Fehlerursache an anderen Stellen vermutet. Verstehe ich es richtig, dass meine Syntax also stimmt?
Wenn ich den Cursor in die erste Zeile setze und auf F8 klicke, öffnet sich direkt die UserForm. Wenn ich anschließend eine Eingabe in das Textfeld tätige, und mit "OK" bestätige kommt die bekannte Fehlermeldung.
Gruß
Idence
Anzeige
AW: Fehler:"Variable nicht definiert"
11.04.2018 15:36:14
JoWE
Bei meinem Nachbau (der muss ja nicht unbedingt wie Deine UF sein) funktioniert Dein Code ohne Fehler!
... welchen Wert erhält z denn nun im Einzelschrittdurchlauf?
... und die TextBox 'Eingabe' existiert und heißt auch so?
Gruß
Jochen
AW: Fehler:"Variable nicht definiert"
11.04.2018 16:06:41
Idence
Ja, die TextBox existiert und heißt auch so.
Wie kann ich nachsehen, welchen Wert z hat? Als ich auf F8 geklickt habe, hat sich direkt die UserForm geöffnet. (Kenne mich in VBA noch nicht so gut aus.)
Gruß
Idence
Anzeige
AW: Fehler:"Variable nicht definiert"
11.04.2018 19:04:47
JoWE
baue ein Stop ein:
z = ActiveCell.row
stop
Cells(z, 4) = Cells(z, 4) & vbCrLf & Eingabe.Value

dann bleibt der Code nach dem Klick auf den Button an dieser Stelle stehen
und Du kannst den Wert von z im Direktfenster abfragen mit ? z
Gruß
Jochen
Anzeige
AW: Fehler:"Variable nicht definiert"
12.04.2018 12:21:17
Idence
Ich habe versucht, deine Beschreibung umzusetzen, jedoch wird mir der Wert der Variablen nicht angezeigt.
Es kann tatsächlich sein, dass, wie Chris schon vermutet hat, mein Office defekt ist, seit einiger Zeit stürzt
es auch regelmäßig ohne Grund ab.
Glücklicherweise habe ich aber eine viel bessere, kürzere Methode gefunden, um mein Vorhaben umzusetzen.
Vielen dank an alle.
Gruß
Idence
Anzeige
AW: Fehler:"Variable nicht definiert"
11.04.2018 14:56:43
Daniel
Hi
du kannst im Prinzip alles Inhalte aus der Datei rauslöschen, die werden für das Problem nicht benötigt.
normalerweise müsste dein Code funktionieren, aber irgendwas ist seltsam, denn wie schon bemerkt wurde, müsste in z = ActiveCell.row das "r" eigentlich automatisch in einen Großbuchstaben gewandelt werden.
Funktioniert es denn, wenn du statt dem z = ActiveCell.Row zum Testen einfach eine Zahl zuweist: z = 15
es gäbe noch eine Variablenfreie Lösung für dein Aufgabe, bei gleiche Flexibilität:
ActiveCell.Offset(0, 4 - ActiveCell.Column) = ActiveCell.Offset(0, 4 - ActiveCell.Column) & vbCrLf & Eingabe.Value

mit der WITH-Klammer kann man sich dann noch die Schreibarbeit sparen, das Objekt, welches in der WITH-Klammer definiert ist, wird in der Folge durch einen Punkt ersetzt.
With ActiveCell
With .Offset(0, 4 - .Column)
.Value = .Value & vbCrLf & Eingabe.Value
end with
end with

Gruß Daniel
Anzeige
AW: Fehler:"Variable nicht definiert"
11.04.2018 15:40:39
ChrisL
Hi
Die Daten interessieren nicht, nur die Datei.
Ich vermute die Datei oder der dein Office ist korrumpiert (eben wegen diesem klein geschriebenen "row").
Teste den Code in einer neuen Datei.
Teste die Datei auf einem anderen PC.
cu
Chris
AW: Fehler:"Variable nicht definiert"
11.04.2018 16:04:09
Idence
Hallo,
anbei ist meine Datei.Ich habe den Inhalt und das Äußere stark geändert, um eine Hinrichtung zu vermeiden.
Aber nun zur Sache:
Wenn Ihr auf die Tabelle "LOP" klickt und Rechtsklick auf eine Zelle der Spalte "Thema" klickt, öffnet sich die betreffende UserForm.
Dies ist meine erste Datei, die ich mit VBA erstellt habe. Darum wird wohl alles etwas chaotisch wirken. Dafür möchte ich mich im voraus entschuldigen.
Es kann tatsächlich sein, dass die Datei selber einen Fehler aufweist. Seit gestern stürzt Excel mehrmals am Tag ab.
Gruß
Idence
https://www.herber.de/bbs/user/121010.xlsm
Anzeige
AW: Fehler:"Variable nicht definiert"
11.04.2018 16:09:51
ChrisL
Hi
Mit Excel 2016 läuft der Code. Aufgrund deiner Abstürze würde ich daher auf ein defektes Office tippen (Updaten und Reparatur laufen lassen). Um ganz sicher zu gehen, müsste jemand mit deiner Version testen.
cu
Chris
AW: Fehler:"Variable nicht definiert"
11.04.2018 16:17:36
Idence
Hi Daniel,
vielen Dank für deine Hilfe. Deiner Vermutung werde ich nachgehen.
Gruß
Idence
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Fehlerbehebung: "Variable nicht definiert" in VBA


Schritt-für-Schritt-Anleitung

  1. Öffne den Visual Basic for Applications (VBA) Editor in Excel, indem du ALT + F11 drückst.
  2. Navigiere zu deiner UserForm und finde das Ereignis, das du beheben möchtest (z.B. OKButton_Click).
  3. Überprüfe die Deklaration deiner Variablen. In deinem Fall sollte die Zeile wie folgt aussehen:
    Dim z As Long
  4. Stelle sicher, dass das Option Explicit am Anfang deines Moduls steht, um sicherzustellen, dass alle Variablen deklariert werden.
  5. Verwende den Befehl Debug.Print z oder füge ein Stop-Statement ein, um den Wert von z während der Ausführung zu prüfen:
    Stop
  6. Wenn der Code nach dem Stop-Befehl stoppt, öffne das Direktfenster (Strg + G) und gib ? z ein, um den Wert von z anzuzeigen.

Häufige Fehler und Lösungen

  • Fehler beim Kompilieren: Variable nicht definiert: Dieser Fehler tritt auf, wenn eine Variable verwendet wird, die nicht deklariert wurde. Stelle sicher, dass du jede Variable korrekt deklarierst.
  • ActiveCell.row nicht erkannt: Überprüfe, ob du .Row anstelle von .row verwendest, da die Großschreibung in VBA wichtig ist.
  • UserForm öffnet sich nicht: Stelle sicher, dass du die UserForm richtig aufrufst, z.B. durch die Verwendung von UserForm.Show.

Alternative Methoden

Falls der Fehler weiterhin besteht, kannst du eine variablenfreie Lösung verwenden. Ersetze den Code zur Zuweisung von z durch:

ActiveCell.Offset(0, 4 - ActiveCell.Column) = ActiveCell.Offset(0, 4 - ActiveCell.Column) & vbCrLf & Eingabe.Value

Oder nutze die With-Anweisung, um die Lesbarkeit zu erhöhen:

With ActiveCell
    With .Offset(0, 4 - .Column)
        .Value = .Value & vbCrLf & Eingabe.Value
    End With
End With

Praktische Beispiele

Hier ist ein Beispiel, das zeigt, wie du die Eingabe aus einer TextBox in eine Zelle schreiben kannst:

Private Sub OKButton_Click()
    Dim z As Long
    z = ActiveCell.Row  ' Aktuelle Zeile der Zelle
    Cells(z, 4) = Cells(z, 4) & vbCrLf & Eingabe.Value  ' In die 4. Spalte schreiben
    Unload Me  ' UserForm schließen
End Sub

Stelle sicher, dass die TextBox tatsächlich als Eingabe benannt ist.


Tipps für Profis

  • Verwende Option Explicit, um sicherzustellen, dass du keine Variablen vergisst zu deklarieren, was häufig zu dem Fehler "Variable nicht definiert" führt.
  • Debugge deinen Code schrittweise mit F8, um die Ausführung zu verfolgen und den Status der Variablen zu überprüfen.
  • Teste deinen Code in einer neuen Arbeitsmappe, wenn du auf unerklärliche Probleme stößt, um festzustellen, ob die Datei beschädigt ist.

FAQ: Häufige Fragen

1. Was bedeutet "Variable nicht definiert" in VBA?
Dieser Fehler tritt auf, wenn du eine Variable verwendest, die nicht deklariert wurde. Stelle sicher, dass du alle Variablen mit Dim deklarierst.

2. Wie kann ich den Wert meiner Variablen während der Ausführung sehen?
Setze ein Stop-Statement in deinen Code ein und verwende das Direktfenster, um den Wert mit ? z abzurufen.

3. Warum funktioniert ActiveCell.row nicht?
Achte darauf, dass du .Row mit einem großen "R" schreibst, da VBA zwischen Groß- und Kleinschreibung unterscheidet.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige