Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Variable nicht definiert

Variable nicht definiert
pabro
Hallo Excel Freunde,
habe mit eurer tatkräftigen Unterstützung das unten stehende Macro gechrieben:
Dieses Macro soll
1. eine Verzeichnis mit dem Namen bestehend aus den Inhalten der Zellen H8, H10 und D16 erstellen.
2. die akive Datei in diesem Verzeichnis nach einem festgelegten Muster (LB-&n, n1 und n2) abspeichern
3. das aktive Blatt kopieren und per Mail versenden
Ohne 1. hat schon alles wunderbar funktioniert, 1.alleine geht auch, nur wenn ich das ganze jetzt kombiniere (siehe unten) dann kommt (Variable nicht definiert) in der ersten strpfad-Zeile, ich finde hier leider keinen Fehler, kann mir da jemand helfen?
Option Explicit
Private Declare

Function MakeSureDirectoryPathExists Lib "imagehlp.dll" (ByVal lpPath As String) As Long

Sub LB_senden()
Dim strPath
Dim OApp As Object, OMail As Object
Dim strAtt As String
Dim attAdd As Boolean
Dim n As String
Dim n1 As String
Dim n2 As String
Dim n3 As String
Dim n4 As String
Dim n5 As String
Dim rngR As Range
Dim DateiZ As String
n = Range("F8").Value
n1 = Range("H8").Value
n2 = Range("G23").Value
n3 = Range("G50").Value
n4 = Range("D16").Value
n5 = Range("H10").Value
strpfad = "C:\Dokumente und Einstellungen\P.Broich\Eigene Dateien\Broich\Lackberichte\ _
Abgesendet\" & n1 & " " & n5 & " " & n4 'Hier den Pfad eingeben
If Dir(strpfad, vbDirectory) = "" Then
MkDir strpfad
Exit Sub
Else
MsgBox ("Das gewünscht Verzeichnis ist schon vorhanden, bitte einen anderen Namen eingeben!") _
_
' wenn da kommt MsgBox und springt dann zu nochmal
GoTo nochmal
End If
nochmal:
n1 = InputBox("Neuer Name")
If StrPtr(n1) = 0 Then ' Hier abbrechen der InputBox, falls doch kein neuer Name gewünscht.
Exit Sub
End If
strpfad = "C:\Dokumente und Einstellungen\P.Broich\Eigene Dateien\Broich\Lackberichte\ _
Abgesendet\" & n1 & " " & n5 & " " & n4 'Hier den Pfad eingeben
If Dir(strpfad, vbDirectory) = "" Then
On Error Resume Next
MkDir strpfad
Else
MsgBox ("schon da! Neu!")
GoTo nochmal
End If
DateiZ = "-1"
Do Until Dir("C:\Dokumente und Einstellungen\P.Broich\Eigene Dateien\Broich\Lackberichte\ _
Abgesendet\" & "LB-" & n & "-" & n1 & DateiZ & ".xls") = ""
DateiZ = Val(DateiZ) - 1
Loop
If DateiZ = "-1" Then
If Dir("C:\Dokumente und Einstellungen\P.Broich\Eigene Dateien\Broich\Lackberichte\ _
Abgesendet\" & "LB-" & n & "-" & n1 & ".xls") = "" Then DateiZ = "" Else DateiZ = "-2"
ActiveWorkbook.SaveAs Filename:="C:\Dokumente und Einstellungen\P.Broich\Eigene Dateien\ _
Broich\Lackberichte\Abgesendet\" & "LB-" & n & "-" & n1 & DateiZ & ".xls"
If DateiZ = "-2" Then Name "C:\Dokumente und Einstellungen\P.Broich\Eigene Dateien\Broich\  _
_
Lackberichte\Abgesendet\" & "LB-" & n & "-" & n1 & ".xls" As "C:\Dokumente und Einstellungen\P. _
Broich\Eigene Dateien\Broich\Lackberichte\Abgesendet\" & "LB-" & n & "-" & n1 & "-1.xls"
Else
ActiveWorkbook.SaveAs Filename:="C:\Dokumente und Einstellungen\P.Broich\Eigene Dateien\  _
_
Broich\Lackberichte\Abgesendet\" & "LB-" & n & "-" & n1 & DateiZ & ".xls"
End If
Set OApp = CreateObject("Outlook.Application")
OApp.Session.Logon
Set OMail = OApp.CreateItem(0)
With OMail
.To = "LBKOELN@FORD.COM" 'Empfänger
.Subject = "LB-" & n & "-" & n1 & "-" & n2
.Attachments.Add ActiveWorkbook.FullName
Do
strAtt = Application.GetOpenFilename("Alle Dateien (*.*),*.*")
If strAtt  "Falsch" Then
.Attachments.Add strAtt
attAdd = True
End If
If Not attAdd Then
If MsgBox("Wollen Sie die Datei wirklich ohne weitere Anlagen versenden?", 36, " _
_
Mailanhang") = 7 Then strAtt = ""
End If
Loop While strAtt  "Falsch"
.Display 'oder .Send um die Mail gleich zu versenden
End With
ActiveWorkbook.Close
ErrExit:
Set OMail = Nothing
Set OApp = Nothing
With Application
.EnableEvents = True
.ScreenUpdating = True
End With
End 

Sub


		
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Excel sagt dir doch wo der Fehler liegt,...
10.11.2009 12:48:34
Ramses
Hallo
Du hast die Variable "strPfad" nicht definiert.
Lösung: Variable deklarieren und alles ist gut
Dim strPfad as String
Gruss Rainer
AW: Excel sagt dir doch wo der Fehler liegt,...
10.11.2009 14:25:53
pabro
Super Rainer, danke jetzt läuft er, bin halt kein VBA-Profi
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Fehlerbehebung: Variable nicht definiert in VBA


Schritt-für-Schritt-Anleitung

Um den Fehler "Variable nicht definiert" in VBA zu beheben, folge diesen Schritten:

  1. Öffne den VBA-Editor: Drücke ALT + F11 in Excel, um den VBA-Editor zu öffnen.
  2. Finde die Fehlerquelle: Suche den Code, in dem der Fehler auftritt. In deinem Fall ist das die Zeile mit strpfad.
  3. Deklariere die Variable: Stelle sicher, dass du alle Variablen korrekt deklariert hast. Füge die folgende Zeile hinzu:
    Dim strPfad As String
  4. Ändere die Variable im Code: Achte darauf, dass du überall die gleiche Schreibweise verwendest. In deinem Code gibt es strpfad und strPfad. Diese müssen übereinstimmen.
  5. Speichere und teste den Code: Speichere den Code und führe ihn aus, um zu überprüfen, ob der Fehler behoben ist.

Häufige Fehler und Lösungen

  • Fehler: "Variable nicht definiert"

    • Ursache: Eine Variable wurde verwendet, ohne dass sie deklariert wurde.
    • Lösung: Füge die Deklaration der Variable hinzu, wie in der Schritt-für-Schritt-Anleitung beschrieben.
  • Fehler: Tippfehler in Variablennamen

    • Ursache: Unterschiedliche Schreibweisen einer Variable (z.B. strpfad vs. strPfad).
    • Lösung: Stelle sicher, dass alle Verwendungen der Variablen genau übereinstimmen.

Alternative Methoden

Wenn du oft mit "Variable nicht definiert" Fehlern konfrontiert wirst, kannst du folgende Vorgehensweisen in Betracht ziehen:

  • Option Explicit: Füge diese Zeile ganz oben in deinem Modul ein. Dadurch wird VBA gezwungen, alle Variablen zu deklarieren, was die Fehlersuche erleichtert.

  • Code-Reviews: Lass deinen Code von jemand anderem überprüfen. Oft sieht ein frisches Paar Augen Dinge, die dir entgangen sind.


Praktische Beispiele

Hier ist ein einfaches Beispiel, um den Fehler zu vermeiden:

Option Explicit

Sub Beispiel()
    Dim strPfad As String
    strPfad = "C:\Beispiel\"

    If Dir(strPfad, vbDirectory) = "" Then
        MkDir strPfad
    End If
End Sub

In diesem Beispiel wird die Variable strPfad korrekt deklariert, wodurch der Fehler "variable nicht definiert vba" vermieden wird.


Tipps für Profis

  • Verwende aussagekräftige Variablennamen: Dadurch wird der Code leserlicher und es ist einfacher, Fehler zu identifizieren.

  • Nutze die Möglichkeit, Fehlerbehandlung hinzuzufügen: Mit On Error GoTo kannst du deinen Code robuster gestalten und besser auf unerwartete Fehler reagieren.

  • Regelmäßige Tests: Teste deinen Code regelmäßig während der Entwicklung, um Fehler frühzeitig zu erkennen.


FAQ: Häufige Fragen

1. Was bedeutet "Variable nicht definiert"? Es bedeutet, dass eine verwendete Variable nicht deklariert wurde oder falsch geschrieben ist.

2. Wie kann ich sicherstellen, dass alle Variablen deklariert sind? Füge Option Explicit am Anfang deines Moduls hinzu, um sicherzustellen, dass alle Variablen deklariert werden müssen.

3. Was kann ich tun, wenn ich immer noch Probleme habe? Überprüfe die Schreibweise deiner Variablen und führe den Code Schritt für Schritt aus, um den Fehler zu identifizieren.

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