Registriert seit: 10.04.2014
Version(en): 2016 + 365
23.10.2015, 14:13
(Dieser Beitrag wurde zuletzt bearbeitet: 23.10.2015, 14:13 von Rabe.)
Hallo, ich öffne eine Datei per Makro: Code: OQOneu = Application.GetOpenFilename("Excel-Dateien, *.xl*", , "Auswählen der ersten Datei zum Datenabgleich!") Set WB = Workbooks.Open(OQOneu) With Sheets("BOM")
und will einen Bereich des Tabellenblattes "BOM" kopieren und in ein Blatt einer anderen Mappe einfügen. Wenn nun das Blatt "BOM" in der Quellmappe nicht existiert (= falsche Datei gewählt), bricht das Makro ab. Wie kann ich das abfangen, und mit einer Messagebox zum Wählen der korrekten Datei auffordern? Code: For i = 1 to sheetcount If not exist Sheets("BOM") then messagebox("Keine BOM enthalten, falsche Datei, bitte die richtige auswählen!") end if next
geht ja nicht.
Registriert seit: 13.04.2014
Version(en): 365
23.10.2015, 14:31
(Dieser Beitrag wurde zuletzt bearbeitet: 23.10.2015, 14:43 von BoskoBiati.)
Hallo, z.B. so: Code: Dim bolIstDa As Boolean bolIstDa = False For i = 1 To Sheets.Count If Sheets(i).Name = "BOM" Then bolIstDa = True Next If Not bolIstDa Then MsgBox "Keine BOM enthalten, falsche Datei, bitte die richtige auswählen!"
Gruß
Edgar
Meine Antworten sind freiwillig und ohne Gewähr! Über Rückmeldungen würde ich mich freuen.
Registriert seit: 29.09.2015
Version(en): 2030,5
Code: with Workbooks.Open(Application.GetOpenFilename("Excel-Dateien, *.xl*", , "Auswählen der ersten Datei")) if [isref(bom!A1)] then msgbox [bom!a1] end if end with
Registriert seit: 10.04.2014
Version(en): 2016 + 365
Hi Edgar, (23.10.2015, 14:31)BoskoBiati schrieb: z.B. so: danke, das funktioniert.
Registriert seit: 10.04.2014
Version(en): 2016 + 365
Hi, (23.10.2015, 14:50)snb schrieb: Code: with Workbooks.Open(Application.GetOpenFilename("Excel-Dateien, *.xl*", , "Auswählen der ersten Datei")) if [isref(bom!A1)] then msgbox [bom!a1] end if end with
das funktioniert leider nicht, die falsche Datei wird geöffnet und dann kommt die Fehlermeldung, daß die BOM nicht vorhanden sei. "Error 9, Index außerhalb des gültigen Bereichs" Wenn die richtige Datei gewählt wird, dann kommt die MessageBox. Also grad andersrum als gewollt. Mit "If Not [isref..." funktioniert es richtig, aber dann macht das Makro weiter. Wie bekomme ich es dann hin, daß der Datei-Öffnungsdialog dann wieder kommt, um die richtige Datei zu laden?
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
24.10.2015, 05:15
(Dieser Beitrag wurde zuletzt bearbeitet: 24.10.2015, 05:16 von schauan.)
Hallo Ralf, ich habe Dir hier mal 2 Prinzipbeispiele für Schleifen aufgeschrieben. Ansatzt wäre eine Do-Loop Schleife, die solange durchlaufen wird, bis mal eine passende Datei geöffnet wird. Als Bedingung hab ich einen Zähler drin, Du müsstest dann Deine Blattabfrage einsetzen. Du könntest auch beides mit Or einbinden, also den Zähler und die Prüfung - sonst kommt der user nicht ohne harte Bandagen aus der Schleife raus, wenn es tausende Exceldateien gibt und er nicht die richtige trifft Code: Sub test() i = 1 'Schleife wird nicht durchlaufen, wenn i schon 3 ist 'Schleife, Solange i nicht 3 ist Do While Not i = 3 MsgBox i i = i + 1 Loop 'Schleife wird mindestens 1x durchlaufen 'Schleifenbeginn Do MsgBox i i = i + 1 'Wiederhole solange i nicht 5 ist Loop Until i = 5 End Sub
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 10.04.2014
Version(en): 2016 + 365
Hi André, (24.10.2015, 05:15)schauan schrieb: ich habe Dir hier mal 2 Prinzipbeispiele für Schleifen aufgeschrieben. Ansatzt wäre eine Do-Loop Schleife, die solange durchlaufen wird, bis mal eine passende Datei geöffnet wird. danke, das sieht auch gut aus. Momentan habe ich die Lösung von Edgar umgesetzt.
|