Tabellenblatt vorhanden?
#1
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.
Top
#2
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.
Top
#3
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
Top
#4
Hi Edgar,

(23.10.2015, 14:31)BoskoBiati schrieb: z.B. so:

danke, das funktioniert.
Top
#5
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?
Top
#6
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 Smile

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)
Top
#7
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.
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste