Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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.
Antworten 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.
Antworten 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
Antworten Top
#4
Hi Edgar,

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

danke, das funktioniert.
Antworten Top
#5
Hi,

(23.10.2015, 13: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?
Antworten 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)
Antworten Top
#7
Hi André,

(24.10.2015, 04: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.
Antworten Top


Gehe zu:


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