Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1644to1648
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

Do ... Loop beenden ohne Fehlermeldung

Do ... Loop beenden ohne Fehlermeldung
20.09.2018 12:41:34
Georg
Liebe Mitglieder, ich habe bisher wenig mit Schleifen gemacht (und mir hier tw. helfen lassen) genau mit dem Errorhandler.
Es funktioniert alles super bitte nur das Augenmerk auf folgendes richten:
Sind alle Dateien "abgearbeitet" und ich gehe im Datei Öffnen Dialog auf abbrechen,
kommt immer eine Fehlermeldung, die ich wegklicken kann.
Es stört jetzt nicht wirklich groß, aber ich würde diese gerne loswerden u v. a. wissen warum diese erscheint, bzw. was ich ändern muss im Sinne von Dazulernen.
Falls j-d mal Zeit hat kurz darüber zu schauen, wäre prima, DANKE:
Public Sub Konsolidieren()
Dim strFileName As String
Dim objWorkbook As Workbook
Dim i As Integer
Dim strFilter As String
Dim strString As String
Dim rngCell As Range
'Errorhandler initialisieren
On Error GoTo err_exit
'DateiÖffnen Dialog
strFilter = "Excel-Dateien(*.xlsx), *.xlsx" '** Dateifilter definieren
ChDrive "Z"
ChDir "Q:\XX\XX\" '** Laufwerk und Pfad definieren
strFileName = Application.GetOpenFilename(strFilter)
'Schleife
If strFileName  "" Then
Do
'Excelmappe öffnen
Set objWorkbook = Workbooks.Open(Filename:=strFileName)
'Die eigentliche Aufgabe: verbundene Zellen auflösen, Spalte G wird dadurch überflüssig  _
--> löschen, Spalte F Autofit
For i = 1 To objWorkbook.Worksheets.Count
With objWorkbook.Worksheets(i)
.UsedRange.Cells.UnMerge
.Columns("G:G").Delete
.Columns("F:F").AutoFit
End With
Next i
'Optisches Aufpeppen
For i = 1 To objWorkbook.Worksheets.Count
With objWorkbook.Worksheets(i)
strString = "Bitte senden.."
Set rngCell = Worksheets(i).Columns(1).Find(strString, lookat:= _
xlWhole, LookIn:=xlValues, MatchCase:=True)
If Not rngCell Is Nothing Then
rngCell.Copy rngCell.Offset(, 4)
rngCell.ClearContents
End If
End With
Next i
'Excelmappe schließen - ohne zu speichern = False / mit speichern = True
objWorkbook.Close SaveChanges:=True
Dim a As String
a = MsgBox("Die Datei wurde gespeichert", vbYes)
'nächste Excelmappe suchen
strFileName = Application.GetOpenFilename(strFilter)
'wird keine Mappe mehr gefunde Schleife verlassen
Loop Until strFileName = ""
End If
Exit Sub
err_exit:
MsgBox "Fehler " & CStr(Err.Number) & vbLf & vbLf & _
Err.Description, vbCritical, "Fehlermeldung"
End Sub

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Do ... Loop beenden ohne Fehlermeldung
20.09.2018 12:49:11
Daniel
Hi
wenn du "Abbrechen" klickst, ist der Rückgabewert von Application.GetOpenFilename der Boolsche Wert FALSE.
Da du das in eine Stringvariable schreibst, macht VBA daraus den Text "Falsch".
die Prüfung müsste also lauten:

If strFileName  "Falsch" Then
Gruß Daniel
AW: danke für die Erläuterung, Daniel
20.09.2018 13:44:55
Georg
..funktioniert wie gewünscht. Gruß G
AW: danke für die Erläuterung, Daniel
20.09.2018 13:45:03
Georg
..funktioniert wie gewünscht. Gruß G
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige