Supportnet Computer
Planet of Tech

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:

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

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:

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

Antwort 5 von Stephi

Hallo Massaraksch

Du bist S U P E R ! ! !

Vielen, vielen Dank.

Gruss Stephi