3.1k Aufrufe
Gefragt in Tabellenkalkulation von finger59 Experte (1.3k Punkte)
Guten Tag liebe Excel-Fan-Gemeinde,
aktuell hänge ich in einer Case-Abfrage fest, die mir, anstelle einer Msgbox als Hinweis die Fehlermeldung 1004 angibt, die ich natürlich nicht haben möchte.

Zunächst einmal das aktuelle Makro in Kurzform, da die Case-Abfragen sich auf rund 40 Gruppen bezieht.

Private Sub CommandButton1_Click()
Dim Dateiname As String
Dim Antwort As String

Dateiname = "Grp " & Cells(1, 1) & " KW " & Cells(2, 1) & ".XLS"

Select Case Cells(1, 1)
Case 1
Antwort = "Gr1": ActiveWorkbook.SaveAs ("G:\Personal\test\" & Antwort & "\" & Dateiname)
Case 2
Antwort = "Gruppe 02": ActiveWorkbook.SaveAs ("G:\Personal\test\" & Antwort & "\" & Dateiname)
Case 4
Antwort = "Gruppe 04": ActiveWorkbook.SaveAs ("G:\Personal\test\" & Antwort & "\" & Dateiname)

Case Else

MsgBox ("Es wurde eine nicht freigeschaltete Auswahl getroffen!")
End Select
End Sub

Das Speichern, wenn die Bedingung erfüllt ist, funktioniert so wie es sein soll, allerdings, wenn die Bedingung nicht stimmt - hier absichtlich zum test Gruppe xx statt Grxx - dann hätte ich gerne die Msgbox als Infofenster gehabt und nicht die Laufzeitfehlermeldung mit dem Hinweis, dass irgendetwas falsch in der Zuordnung ist.

In der Hoffnung das mir jemand helfen kann, verbleibe ich, nicht ohne allen Interessierten noch einen schönen Tag zu wünschen - MfG.. Helmut

9 Antworten

0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
der Code ist korrekt, es wird die Msgbox angezeigt.

Gruß Hajo
0 Punkte
Beantwortet von finger59 Experte (1.3k Punkte)
Hallo Hajo,

vielen Dank für die Info und habe dann das Makro wie oben nachgestellt - sprich alles andere gelöscht.

Ein wenig seltsam ist es für mich schon was da passiert.

Du hast Recht - das Makro doch funktioniert, wobei ich allerdings immer noch unter bestimmten Bedingungen die Laufzeitfehlermeldung erhalte.

Ist die Auswahl gar nicht vorhanden, dann erscheint die Msgbox als Hinweis (und da ich vorher alle 40 Gruppen vorbereitet hatte - keine Anzeige, weil...)

gibt es den ausgewählten Auswahlwert, aber die Zuordnung stimmt nicht, dann gibt es den Laufzeitfehler 1004.

Ich hatte natürlich gehofft, dass ich diese Laufzeitfehlermeldung nicht angezeigt bekomme, sondern dann auch die Msgbox... aber von der Logik her, kann das so nicht sein.

Falls es eine Möglichkeit geben sollte, anstelle der Laufzeitfehlermeldung die Msgbox anzeigen zu lassen, wäre ich für eine Information dankbar.

Vielen Dank allen Interessierten - Gruß Helmut
0 Punkte
Beantwortet von
Hallo Helmut,

Auch ich kann das Problem nicht nachvollziehen.
Wenn ich das richtig deute ist aber der einzige Unterschied in deinen Case-Anweisungen die laufende Nr. Du kannst das also auch stark einkürzen. Vielleicht behebt das dein Problem.

Dateiname = "Grp " & Cells(1, 1) & " KW " & Cells(2, 1) & ".XLS"

Select Case Cells(1,1)
Case 1 TO 9
Antwort = "Gr" & "0" & Cells(1,1): ActiveWorkbook.SaveAs ("G:\Personal\test\" & Antwort & "\" & Dateiname)

Case 10 TO 40
Antwort = "Gr" & Cells(1,1): ActiveWorkbook.SaveAs ("G:\Personal\test\" & Antwort & "\" & Dateiname)

Case Else

MsgBox "Es wurde eine nicht freigeschaltete Auswahl getroffen!"

End Select

Gruß Mr. K.
0 Punkte
Beantwortet von finger59 Experte (1.3k Punkte)
Hallo Mr. K.,

vielen Dank für das Interesse an meiner Anfrage.

Ok.. das erscheint mir von der Sache her viel kürzer zu werden, wie ich es gemacht habe, da ich statt meiner vierzig Gruppen nur eine Abfrage hätte - Case 1 TO 91 - und dann daraus den Dateinamen entwickeln lasse.

Aber das war eigentlich nicht mein Thema, da die einzelne Abfrage ebenfalls funktioniert - aber in Deiner Version halt um vieles kürzer ist.

Von daher vielen Dank für diese Info, da ich hoffentlich beim nächsten Projekt auch an diese Möglichkeit daran denken werde.

Mein Fragestellung wird sich in der Endversion schon gar nicht mehr stellen, da es weder eine fehlerhaften Gruppen-Nr.-Auswahl geben wird, noch das der Pfadname nicht stimmt; außer man würde seitens der Informatik die Verzeichnisse im nachhinein ändern.

In diesem Sinne... thanx for Infos... Gruß Helmut
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi :-)

vielleicht verliert die msgbox den Focus bzw bezug zu welchem worksheet es gehört ^^

gruss nighty
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi all ^^

kontrolle auf pfad vielleicht

gruss nighty

True=pfad vorhanden
False pfad nicht vorhanden

Function VerzeichnisExists(StrPfad As String) As Boolean
On Error Resume Next
ChDir StrPfad
If Err = 0 Then VerzeichnisExists = True
End Function
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi all ^^

nächste Idee :-))

im vbeditor kannst du mit f5 den einzelschrittmodus nutzen,ein befehl wird mit einmal f5 drücken abgearbeitet zum besseren kontrollieren der variablen ,variable mit der mouse im quelltext selectieren,dann wird der wert angezeigt

gruss nighty
0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
ich hätte ja nun F8 benutzt und nicht F5. Aber das kann bei meinem Rechner ja anders sein.

Gruß Hajo
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi Hajo ^^

ops,danke:-)

gruss nighty
...