wo liegt mein fehler?
hallo leute...
mein problem...
ich möchte aus einer access datenbank heraus eine exceltabelle öffnen,
ein makro ausführen,
die datei dann abspeichern und anschließend
wieder schließen.
Mein Makro:
Dim oXcl As New Excel.Application, ws As Excel.Worksheet
Dim i
Dim v
With oXcl
'öffner die Datei
.Workbooks.Open Filename:="D:\Lokale Daten\test111.xls"
.Visible = True
With Selection
'ermittelt die Anzahl der Datensätze, Abbruchbedingung wenn Zeile (v,1) leer ist, da jeder Datensatz einen Wert in Spalte A haben muss.
v = 1
Do
v = v + 1
Loop Until Cells(v, 1) = " "
For i = 1 To v
'steht überhaupt etwas in der Zelle ?
If Cells(i, 1) > 0 Then
'hat die Zelle einen Hyperlink ?
If Cells(i, 1).Hyperlinks.Count > 0 Then
'schreibe Hyperlink in Spalte 5
Cells(i, 5) = Cells(i, 1).Hyperlinks(1).Address
End If
End If
End If
Next i
End With
'---------------------------------------------------------------------------------------
.ActiveWorkbook.Save
.Quit
End With
End Sub
Mein Makro läuft soweit einwandfrei.
Mein einziges Problem.
Meine Abbruchbedingung bricht nicht ab :-(
Der Zählen läuft immer weiter und weiter obwohl in Spalte A ab Datensatz ca. 200 nichts mehr steht. Da die Anzahl meiner Datensätze aber varriieren kann, muss ich es variable gestalten. Könnt ihr mir sagen wo mein Fehler in meiner Abbruchbedingung liegen kann?
Gruß
Morpheus
Antwort schreiben
Antwort 1 von erik vom 31.07.2019, 08:28 Options
Hallo Morpheus,
du scheinst auf das Vorhandensein eines Leerzeichens zu prüfen, das sicherlich nicht in dieser Form in deiner Tabelle vorkommt:
Loop Until Cells(v, 1) = " "
Suche stattdessen nach einer leeren Zeichenfolge "" oder benutze die IsEmpty()-Funktion:
Loop Until Cells(v, 1) = ""
Loop Until IsEmpty(Cells(v, 1)) = True
Gruß
erik
Hallo Erik,
das mit dem "" statt " " weis ich eigentlich, hatte ich zuerst auch funktioniert aber leider auch nicht.
Deine Lösung mit dem IsEmpty is klasse. Hat super funktioniert.
Vielen Danke für die super schneller Hilfe,
Gruß
Morpheus