Supportnet / Forum / Tabellenkalkulation
Daten löschen!!! Datei speichern unter!!!
Frage
Hallo Zusammen
Meine Problemstellung:
Ich habe ein Makro, dass in einem Arbeitsbaltt die Einträge bestimmter Zellen löscht. Beim anklicken des Buttons, dem das Makro zugewiesen wurde, erscheint die Meldung:
Wenn Sie Ihre Eingaben wirklich löschen wollen klicken Sie auf JA !!! - Wenn Sie die Daten erhalten wollen klicken Sie auf NEIN !!! - und gehen Sie auf <Datei> / <Speichern unter...> und speichern Sie das File unter einem neuen Dateinamen !!!
Gibt es die Möglichkeit, dass nach dem anklicken von NEIN direkt „Speichern unter“ aufgerufen wird und das umständliche <Datei> / <Speichern unter...> umgangen werden kann???
Mein Makro sieht so aus:
Sub Daten__Löschen()
´
Application.ScreenUpdating = False
ActiveSheet.Unprotect
If MsgBox("ALLE Ihre Eingaben werden gelöscht !!! - Wenn Sie Ihre Eingaben wirklich löschen wollen klicken Sie auf JA !!! - Wenn Sie die Daten erhalten wollen klicken Sie auf NEIN !!! - gehen Sie auf <Datei> / <Speichern unter...> und speichern Sie das File unter einem neuen Dateinamen !!!", vbYesNo) = vbNo Then Exit Sub
´
Application.ScreenUpdating = False
ActiveSheet.Unprotect
Range("H16:I59").Select
Selection.ClearContents
ActiveWindow.LargeScroll ToRight:=-15
ActiveWindow.LargeScroll Down:=-15
Range("A1").Select
ActiveSheet.Protect
End Sub
Ich wäre euch sehr dankbar wenn Ihr mir eine konfortablere Lösung aufzeigen könntet.
Ich grüsse euch Stephi
Antwort 1 von Massaraksch
Könnte so aussehen:
Und nimm mal die überflüssigen Sachen raus, die beim Aufzeichnen des Makros entstanden sind, wie z.B. die Scroll-Befehle (wozu Scrollen, wenns eh keiner sieht ;-) und überflüssige Select-Anweisungen. So wird aus
Range("H16:I59").Select
Selection.ClearContents
kürzer:
Range("H16:I59").ClearContents
Merke:
In VBA muß man nichts Markieren (Select) um es zu bearbeiten.
Select braucht man nur in den seltensten Fällen
Wieso hast du eigentlich .ScreenUpdating=False und .Unprotect doppelt drin? Scheint mir auch überflüssig.
Mach lieber zum Schluß sicherheitshalber ein ScreenUpdating=True rein.
Massaraksch
Sub Test()
Dim Klick
Klick = MsgBox("Blabla-Text...", vbYesNo)
If Klick = vbYes Then
Application.ScreenUpdating = False
ActiveSheet.Unprotect
´ usw.
´ usw.
Else
Application.Dialogs(xlDialogSaveAs).Show
End If
End Sub Und nimm mal die überflüssigen Sachen raus, die beim Aufzeichnen des Makros entstanden sind, wie z.B. die Scroll-Befehle (wozu Scrollen, wenns eh keiner sieht ;-) und überflüssige Select-Anweisungen. So wird aus
Range("H16:I59").Select
Selection.ClearContents
kürzer:
Range("H16:I59").ClearContents
Merke:
In VBA muß man nichts Markieren (Select) um es zu bearbeiten.
Select braucht man nur in den seltensten Fällen
Wieso hast du eigentlich .ScreenUpdating=False und .Unprotect doppelt drin? Scheint mir auch überflüssig.
Mach lieber zum Schluß sicherheitshalber ein ScreenUpdating=True rein.
Massaraksch
Antwort 2 von Stephi
Hallo Massaraksch
Du erschreckdt mich!!! - das geht wirklich!!! - das Ding läuft wunderbar!!!
Zu: ... überflüssigen Sachen raus!!!
als Lustvolle-Laien-Anwenderin hat man eben seine Unsicherheiten.
Jedenfalls ich danke Dir für Deine Super-Lösung!
Gruss Stephi
Du erschreckdt mich!!! - das geht wirklich!!! - das Ding läuft wunderbar!!!
Zu: ... überflüssigen Sachen raus!!!
als Lustvolle-Laien-Anwenderin hat man eben seine Unsicherheiten.
Jedenfalls ich danke Dir für Deine Super-Lösung!
Gruss Stephi
Antwort 3 von Massaraksch
Habe deine Pager-Nachricht gelesen und antworte aber besser hier.
Du mußt darauf achten, daß deine Löschaktion (Button JA) zwischen IF und ELSE ausgeführt wird. Nochmal ein Beispiel:
Massaraksch
Du mußt darauf achten, daß deine Löschaktion (Button JA) zwischen IF und ELSE ausgeführt wird. Nochmal ein Beispiel:
Sub Daten__Löschen()
Dim Klick
Klick = MsgBox("Wollen Sie löschen usw...", vbYesNo)
If Klick = vbYes Then
Application.ScreenUpdating = False
ActiveSheet.Unprotect
Range("H16:I59").ClearContents
ActiveSheet.Protect
Application.ScreenUpdating = True
Else
Application.Dialogs(xlDialogSaveAs).Show
End If
End Sub
Massaraksch
Antwort 4 von Massaraksch
Kleiner Design-Tipp:
Klick = MsgBox("Wollen Sie löschen usw...", vbYesNo + vbQuestion)
oder
Klick = MsgBox("Achtung! usw...", vbYesNo + vbExclamation)
Massaraksch
Klick = MsgBox("Wollen Sie löschen usw...", vbYesNo + vbQuestion)
oder
Klick = MsgBox("Achtung! usw...", vbYesNo + vbExclamation)
Massaraksch
Antwort 5 von Stephi
Hallo Massaraksch
Du bist S U P E R ! ! !
Vielen, vielen Dank.
Gruss Stephi
Du bist S U P E R ! ! !
Vielen, vielen Dank.
Gruss Stephi

