Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1392to1396
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

2 Schleifen - Wo ist mein Code fehlerhaft?

2 Schleifen - Wo ist mein Code fehlerhaft?
16.11.2014 18:55:59
Michael
Hallo,
ich habe eine Excel-Datei mir folgendem Inhalt:
Zelle B1: Zelle zur Pfadeingabe
Zellen B2 bis E2: Ländernamen
Zellen B3 bis E3: Zusatzinformation
Ziel soll es sein, wenn ich in irgend eine Zelle (außer die oben aufgeführten) ein Datum eintrage, soll im Pfad, der in Zelle "B1" steht, eine PDF-Datei geöffnet werden, die als Dateinamen Land+Zusatz hat.
folgender Code funktioniert 100%ig, wenn ich nur die erste Zele von "Land" und "Zusatz" ansteuere:
#If Win64 Then
Private Declare PtrSafe Function ShellExecute Lib "Shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As LongPtr, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As LongPtr) As LongPtr
Private Declare PtrSafe Function GetDesktopWindow Lib "user32" () As LongPtr
#Else
Private Declare Function ShellExecute Lib "shell32.dll" _
Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As _
String, ByVal lpFile As String, ByVal lpParameters As String, _
ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Private Declare Function GetDesktopWindow Lib "user32" () As Long
#End If
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim lngR As Long
Dim lngC As Long
lngR = ActiveCell.Row
lngC = ActiveCell.Column
If IsDate(Range(Cells(lngR, lngC), Cells(lngR, lngC))) = True Then Call plan01
End Sub
Private Sub plan01()
Dim lngR As Long
Dim lngC As Long
lngR = ActiveCell.Row
lngC = ActiveCell.Column
Pfad = Range("B1")
Land = Range("B2")
Zusatz = Range("B3")
xxx = "" & Pfad & "\" & Land & Zusatz & ".pdf"
If Dir(xxx)  "" Then
ShellExecute 0, "open", xxx, "", "", SHOWMAXIMIZED
Else
MsgBox "Falsch"
End If
End Sub

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

Betreff
Datum
Anwender
Anzeige
AW: 2 Schleifen - Wo ist mein Code fehlerhaft?
16.11.2014 18:57:14
Michael
Möchte ich das Ganze nun mit 2 Variabel erstellen, komme ich m.M.n. zu folgender Lösung:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim lngR As Long
Dim lngC As Long
lngR = ActiveCell.Row
lngC = ActiveCell.Column
If IsDate(Range(Cells(lngR, lngC), Cells(lngR, lngC))) = True Then Call plan01
End Sub
Private Sub plan01()
Dim lngR As Long
Dim lngC As Long
lngR = ActiveCell.Row
lngC = ActiveCell.Column
Pfad = Range("B1")
Land = Range("2", i) 'Land wird ermittelt aus Zeile 2 und Spalte i (variabel)
Zusatz = Range("3", j) 'Land wird ermittelt aus Zeile 3 und Spalte j (variabel)
For i = 2 To 4 'Variable ist von (Spalte) 2 bis 4
For j = 2 To 4 'Variable ist von (Spalte) 2 bis 4
xxx = "" & Pfad & "\" & Land & Zusatz & ".pdf"
If Dir(xxx)  "" Then
ShellExecute 0, "open", xxx, "", "", SHOWMAXIMIZED
Next i
Next j
Else
MsgBox "Falsch"
End If
End Sub
Leider kommt nun die Fehlermeldung "NEXT OHNE FOR".
Ich weiss nicht was ich falsch mache, denn der Aufbau der Schleifen stimmt meiner Meinung nach mit den Beispielen überein, die ich im I-Net gefunden habe.
Ich bin schon ewig an Suchen und "basteln" aber trete nun nur noch auf der Stelle, da mir der entscheidende "Augenöffner" fehlt.
Kann mir bitte jemand helfen und den oben geschriebenen Code so anpassen, dass bei der Suche nach der PDF-Datei alle Land/Zusatz-Kombinationen abgerufen werden und wenn eine Datei gefunden wurde, soll die PDF-Datei geöffnet werden.
Schon jetzt ein großes Dank!
Michael

Anzeige
Erst die If-Abfrage beenden...
16.11.2014 19:01:42
{Boris}
Hi,
...und dann die For-Next-Schleife(n).
VG, Boris

AW: Erst die If-Abfrage beenden...
16.11.2014 19:18:01
Michael
Hallo,
wenn ich den Code umschreibe, also erst die IF-Abfrage beende und dann die SChleifen (next i, next j)
kommt folgende MEldung: Ungültiger Verweis auf next-Steuervariable.
Gruß
Michael
Private Sub plan01()
Dim lngR As Long
Dim lngC As Long
lngR = ActiveCell.Row
lngC = ActiveCell.Column
Pfad = Range("B1")
Land = Range("2", i) 'Land wir ermittelt aus Zeile 2 und Spalte i (variabel)
Zusatz = Range("3", j) 'Land wir ermittelt aus Zeile 3 und Spalte j (variabel)
For i = 2 To 4 'Variable ist von (Spalte) 2 bis 4
For j = 2 To 4 'Variable ist von (Spalte) 2 bis 4
xxx = "" & Pfad & "\" & Land & Zusatz & ".pdf"
If Dir(xxx)  "" Then
ShellExecute 0, "open", xxx, "", "", SHOWMAXIMIZED
Else
MsgBox "Falsch"
End If
Next i
Next j
End Sub

Anzeige
Erst Next j, dann Next i
16.11.2014 20:15:57
{Boris}
Hi,
denn die innere Schleife ist die j-Schleife - und die muss auch zunächst durchlaufen werden.
VG, Boris

AW: Erst Next j, dann Next i
16.11.2014 22:09:51
Michael
Hallo, selbst wenn ich
next i
und
next j
tausche kommt eine Fehlermeldung (next ohne for).
Ich habe hier einmal die Datei:
https://www.herber.de/bbs/user/93808.xls
Schönen Abend!
Michael

AW: Erst Next j, dann Next i
16.11.2014 22:27:04
Luschi
Hallo Michael,
würdest Du den Vba-Code einrücken, so das die korrespondierenden Befehle auf eine Stufe stehen,
dann hättest Du es selbst bemerkt:

For i = 2 To 4 'Variable ist von (Spalte) 2 bis 4
For j = 2 To 4 'Variable ist von (Spalte) 2 bis 4
xxx = "" & Pfad & "\" & Land & Zusatz & ".pdf"
If Dir(xxx)  "" Then
ShellExecute 0, "open", xxx, "", "", SHOWMAXIMIZED
Next j
Next i
Else
MsgBox "Falsch"
End If
If / Else / End If sind durch die For-Schleifen getrennt und das meckert der Compiler an!
Gruß von Luschi
aus klein-Paris
PS: Diese Schreibweise (keine Einrückungen) ist so schlecht zu lesen, das es keinen Sinn macht,
hier Leerzeichen /Tab-Spürünge einzusparen!

Anzeige
AW: Erst Next j, dann Next i
17.11.2014 21:31:43
Michael
Hallo,
wenn ich den Code so umändere, dass erst
Next j
und dann
next i
steht, kommt die Meldung:
Next ohne for.
"Googlen" brachte mir leider so gar kein neuen Lösungsansatz, so dass mein Problem der nicht funktionstüchtigen SChleifen witerhin besteht.
Kann mir irgend jemand schreiben, woran es liegt?
Für jede Art von Hilfe bin ich sehr dankbar.
Schönen Abend!
Michael

AW: Erst Next j, dann Next i
17.11.2014 21:37:11
Crazy
Hallo
    For i
For j
If
Else
End If
Next j
Next i

MfG Tom

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige