2011-12-20 9 views
17

Mam przycisk w moim formularzu, który czyści cały skoroszyt 8-arkuszowy. Chciałbym to od czasu do czasu oczyścić, ale nie chciałbym tego zrobić przez przypadek. Próbowałem googling, ale każdy wynik, który znalazłem zakłada, że ​​mam dużo mocniejsze zrozumienie VBA niż ja. Jak mogę to zrobić po kliknięciu przycisku Otworzy się okno dialogowe z napisem "To wszystko wymazuje! Czy na pewno? [Kontynuuj] [Anuluj]"? Dzięki.Dodaj "Czy na pewno?" do mojego przycisku Excel, jak mogę?

Odpowiedz

53

Na istniejącego kodu przycisku, wystarczy włożyć tę linię przed zabiegiem:

If MsgBox("This will erase everything! Are you sure?", vbYesNo) = vbNo Then Exit Sub 

To zmusi go rzucić wtedy, gdy użytkownik nie ma.

+0

+1 dokładniej do pracy z wbudowanymi stałymi – brettdj

+0

+1 Zgadzam się z @brettdj. Generalnie lepiej jest używać stałych, aby zapewnić czytelność i łatwość konserwacji. –

+3

+1 Podoba mi się ta odpowiedź, ale mówiąc ściśle: "Jeśli MsgBox (" To wszystko wymazuje, czy jesteś pewien? ", VbOKCancel) = vbOK Wtedy' byłoby bliżej, ponieważ poprosił o przyciski 'Kontynuuj' i' Anuluj' . – JimmyPena

0

Po prostu utwórz niestandardową postać użytkową, która jest wyświetlana po naciśnięciu przycisku "usuń", a następnie połącz przycisk kontynuacji z rzeczywistym kodem usuwającym. Ustaw przycisk Anuluj, aby ukryć formularz użytkownika.

9

Utwórz nowy okręt podwodny z następującym kodem i przypisz go do przycisku. Zmień "DeleteProcess" na nazwę swojego kodu, aby dokonać usunięcia. Spowoduje to wyświetlenie okienka z OK lub Anuluj i zadzwoni do skasowania sub, jeśli trafisz ok, a nie jeśli naciśniesz anuluj.

Sub AreYouSure() 

Dim Sure As Integer 

Sure = MsgBox("Are you sure?", vbOKCancel) 
If Sure = 1 Then Call DeleteProcess 

End Sub 

Jesse

Powiązane problemy