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

Forumthread: do while Schleife ...Abbruch wenn zelle leer

do while Schleife ...Abbruch wenn zelle leer
19.06.2024 11:12:31
Günther
Hallo Experten Team,

und wieder habe ich ein Problem.

Ich habe eine do while Schleife. Diese bricht aber nicht ab, wenn die letzte Zelle leer ist.
Ich erhalte immer den Fehlerhinweis

Laufzeitfehler 1004: [DataFormat.Error] Ungültiger URI: Der Hostname konnte nicht analysiert werden.
Siehe auch in beiliegender Datei im Modul 8
https://www.herber.de/bbs/user/170357.xlsm

Wäre Spitze, wenn mir jemand einen Tipp hätte. Ich habe schon alles mögliche ausprobiert. Es kommt aber immer der gleiche Fehler.

Sub gesamt_test()

Worksheets("start").Select


For Each wks In Worksheets
Application.DisplayAlerts = False
If wks.Name > ActiveSheet.Name _
And wks.Name > "URL" Then wks.Delete
Next

Dim Qus As WorkbookQuery

For Each Qus In ActiveWorkbook.Queries
Qus.Delete
Next

Dim Standort As Variant
Dim website As String
Dim Zeile As Double

Const Spalte As Integer = 1 'Soll in Spalte A nachsehen
Zeile = 2 'Startwert


With Worksheets("Start")
Do While .Cells(Zeile, Spalte) = "" 'solange in der Zelle was steht ausführen
'Do 'funktioniert nicht
Standort = ActiveWorkbook.Sheets("URL").Range("A" & Zeile)
website = ActiveWorkbook.Sheets("URL").Range("B" & Zeile)

ActiveWorkbook.Queries.Add Name:=Standort, Formula:= _
"let" & Chr(13) & "" & Chr(10) & " Quelle = Web.Page(Web.Contents(""" & website & """))," & Chr(13) & "" & Chr(10) & " Data1 = Quelle{1}[Data]," & Chr(13) & "" & Chr(10) & " #""Geänderter Typ"" = Table.TransformColumnTypes(Data1,{{""Column1"", type text}, {""Column2"", type text}})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & " #""Geänderter Typ"""
ActiveWorkbook.Worksheets.Add.Name = Standort
Sheets(Standort).Select

With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
"OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=" & Standort & ";Extended Properties=""""" _
, Destination:=Range("$A$1")).QueryTable
.CommandType = xlCmdSql
.CommandText = Array("SELECT * FROM [" & Standort & "]")
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.ListObject.DisplayName = "Table_Query__" & Standort
.Refresh BackgroundQuery:=False
End With

'Spaltenüberschriften anpassen
ActiveSheet.Range("A1").Value = "Tag"
ActiveSheet.Range("B1").Value = "Zeit"

'Zurück zur Basis
Sheets("start").Select
Range("A1").Select

Zeile = Zeile + 1

'Loop While Cells(Zeile, Spalte) = "" 'funktioniert nicht
'If .Cells(Zeile, Spalte).Value = "" Then 'funktioniert nicht
' Exit Do
'End If

Loop
End With

End Sub


Grüße
Günther
Anzeige

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: do while Schleife ...Abbruch wenn zelle leer
19.06.2024 11:25:33
Sigi.21
Hallo Günther,

du hast 4 Möglichkeiten die Abbruchbedingung für eine Schleife unterzubringen:

DO WHILE (Bedingung)
-Befehl
-Befehl
LOOP


DO UNTIL (Bedingung)
-Befehl
-Befehl
LOOP


DO
-Befehl
-Befehl
LOOP WHILE (Bedingung)


DO
-Befehl
-Befehl
LOOP UNTIL (Bedingung)


Radikale Methoden zum Verlassen (sollte man nicht tun):

If (Bedingung) then EXIT DO
oder
If (Bedingung) then END


Gruß Sigi
Anzeige
AW: do while Schleife ...Abbruch wenn zelle leer
19.06.2024 11:58:44
Onur
DU hast den Fehler verursacht.
Spalte muss = 2 sein.
Bei A steht zwar am Ende der Liste etwas, aber in B NIX
AW: do while Schleife ...Abbruch wenn zelle leer
19.06.2024 12:09:38
Günther
Hallo Onur,

ich habe auf die Spalte 2 umgestellt. Ich erhalte den gleichen Fehlerhinweis.
Sobald er in Zeile 59 "BUR" ankommt, erscheint der Fehler.

Hast Du noch einen weiteren Tipp?

Günther
Anzeige
AW: do while Schleife ...Abbruch wenn zelle leer
19.06.2024 12:44:35
Onur
Do While Sheets("URL").Cells(Zeile, Spalte) > "" 'solange in der Zelle was steht ausführen
AW: do while Schleife ...Abbruch wenn zelle leer
19.06.2024 12:56:48
Günther
Hallo Leute,
Danke für Eure Unterstützung. Leider alles ohne Erfolg. Es kommt immer die gleiche Fehlermeldung.

...bin am verzweifeln.

Kann denn die Fehlermeldung anderweitig vielleicht abgefangen werden und somit das gleiche erzielt werden?

Grüße
Günther
Anzeige
nur so als Info
19.06.2024 13:03:46
Oberschlumpf
Hi Günther,

(d)ein Ziel sollte nie sein, auftretende Fehler "einfach nur irgdwie abzufangen", sondern deren Ursache finden - und beseitigen!

Das is das Gleiche wie: Bei (Zahn-)Schmerzen so viele Schmerztabletten nehmen, bis der Schmerz weg ist = NEE!!! Sondern zum Arzt gehen, und der findet die Schmerz-URSACHE, um sie zu beseitigen...und nur so geht alles seinen richtigen Gang.

Ciao
Thorsten
Anzeige
DANKE
19.06.2024 15:02:10
Günther
Hallo Zusammen,

Es funktioniert! Danke Onur.

ich möchte mich in aller Form bei Euch für die tolle und schnelle Hilfe bedanken. Ja, Onur, du hast Recht. Ich hatte die Änderung vorgenommen, vermutlich aber weiter unten noch alte Einträge nicht deaktiviert. Sorry.

Ich wünsche Euch noch einen angenehmen Tag, vermutlich bis bald mal wieder hier im Forum und viel Spaß heute beim Fußball schauen.

Grüße
Günther
Anzeige
Gerne !
19.06.2024 15:03:03
Onur
AW: do while Schleife ...Abbruch wenn zelle leer
19.06.2024 11:45:01
Günther
Hallo Sigi,
Danke für die Infos. Diese habe ich alle schon ausprobiert. Es kommt immer die gleiche Fehlermeldung.

Stimmt was mit der Syntax nicht?
Do While .Cells(Zeile, Spalte) = ""
In manchen Foren, habe ich die do while Schleife ohne dem "=" Zeichen gesehen. Geht aber auch nicht.

Günther

Anzeige
AW: do while Schleife ...Abbruch wenn zelle leer
19.06.2024 12:43:14
Oberschlumpf
Hi,

Stimmt was mit der Syntax nicht?
Do While .Cells(Zeile, Spalte) = ""

Nein = alles in Ordnung mit Syntax, aber.....Du musst aber auch verstehen, WAS der Befehl tut!

die Zeile mal in Deutsch:
Do While .Cells(Zeile, Spalte) = ""
Mach was, solange Inhalt in Zelle Leer ist = sobald eine Zelle MIT Inhalt kommt, wird DO-LOOP verlassen!

Denn du willst ja:
Mach was, solange Inhalt in Zelle nicht Leer ist
dazu die richtige Codezeile:


Do UNTIL .Cells(Zeile, Spalte) = ""
'...hier dein Code
Loop


Wenn das auch nich hilft, weiß ich nix anderes.

Ciao
Thorsten
Anzeige
AW: do while Schleife ...Abbruch wenn zelle leer
19.06.2024 12:43:57
Sigi.21
Hallo,

ich denke, solange in der Zelle etwas steht? Also ...
Do While Cells(Zeile, Spalte) > "" (ohne Punkt)

Gruß Sigi
oder so rum...owT
19.06.2024 12:45:42
Oberschlumpf
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

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