Rückgabewert für gedrückten Butto

  • #1
B

bythom

Bekanntes Mitglied
Themenersteller
Dabei seit
25.06.2004
Beiträge
602
Reaktionspunkte
0
Hallo allerseits,

ich hab da mal ein kleines Problem. Kennt jemand eine Möglichkeit, um festzustellen welcher Button bei einer Excelinternen VbOKCancel - Meldung gedrückt wurde? Ich möchte mittels Makro ein zuvor angegebenes Tabellenblatt löschen. An der Stelle

Sheets(Eingabe).Delete

bring Excel eine VbOKCancel Meldung

>>In den Arbeitsblättern, die Sie löschen möchten könnten Daten vorhanden sein. Um die Blätter endgültig zu löschen, drücken Sie Löschen.<<

Bei Löschen funktioniert es. Beim Betätigen von Abbrechen wird das Blatt zwar nicht gelöscht, der Makro läuft aber weiter und bringt mir die von mir erstellte Meldung, dass das Blatt gelöscht wurde. Ich müsste einen Zähler verändern um aus dem Makro rauszuspringen.

Makro sieht bisher so aus:

Code:
Sub Blatt_mit_Mbox_Loeschen()
z = 0
Dim Name, Titel, Eingabe
Titel = Tabellenblatt löschen
Eingabe = LCase(InputBox(Mldg, Titel))
'alle Arbeitsblätter abfragen
For Each ws In Worksheets
If Eingabe =  Then Exit Sub
If z = 2 Then Exit Sub
If LCase(ws.Name) = Eingabe Then
    If Eingabe =  Then Exit Sub
    z = 2
        Sheets(Eingabe).Delete
'Hier erscheint die VbOkCancel Meldung und nach Betätigen von Abbrechen wird der Makro weiter ausgeführt
    MsgBox Tabelle  & Eingabe &  wurde gelöscht
End If
'hier wird die Schleife abgebrochen, wenn es nicht das letzte Tabellenblatt ist
If z = 2 Then Exit Sub
Next
MsgBox Tabelle  & Eingabe &  ist nicht vorhanden
End Sub
 
  • #2
Hallo bythom,

am einfachsten ist es diese Meldung erst garnicht erscheinen zu lassen.

In etwa so:
Code:
Sub Blatt_mit_Mbox_Loeschen()

  Const c_Titel = Tabellenblatt löschen
  Const c_Mldg = Bitte geben sie den Namen des Tabellenblattes an.
  Dim Eingabe As String, bGefunden As Boolean
  Dim ws As Worksheet

  Eingabe = InputBox(c_Mldg, c_Titel)
 ->Abbruch oder keine Eingabe?
  If Eingabe =  Then Exit Sub
  
 ->alle Arbeitsblätter abfragen
  bGefunden = False
  For Each ws In Worksheets
    If LCase(ws.Name) = LCase(Eingabe) Then
     ->Nachfrage abschalten
      Application.DisplayAlerts = False
      ws.Delete
     ->Nachfrage anschalten
      Application.DisplayAlerts = True
      bGefunden = True
      MsgBox Tabelle  & ws.Name &  wurde gelöscht
    End If
  Next
  
  If Not bGefunden Then MsgBox Tabelle  & Eingabe &  ist nicht vorhanden
  
AUFRAEUMEN:
  Set ws = Nothing
End Sub
Gruß Matjes :)
 
  • #3
Danke, funktioniert Klasse.

Sorry, dass ich mich erst jetzt melde, ich war übers Wochenende mal kurz weg
 
Thema:

Rückgabewert für gedrückten Butto

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.838
Beiträge
707.961
Mitglieder
51.491
Neuestes Mitglied
haraldmuc
Oben