Also habe ich versucht, ein kleines Excel-Blatt zusammenzustellen, das einen Eintrag Log es hat. Wann immer das Blatt geschlossen wird, werden Name, Datum und Uhrzeit hinzugefügt.BeforeClose wird mein Excel-Sheet VBA nicht schließen
Also im Grunde habe ich drei Makro läuft, werde ich nur zwei erwähnen. Das Hauptmakro fragt, ob ich das Blatt schließen will und ich werde mit ja oder nein antworten müssen. Das funktioniert gut. Wenn ich Ja drücke, ruft das Hauptmakro ein Untermakro auf, das mich auffordert, eine Zeichenkette einzugeben. Wenn diese Eingabebox leer ist oder der Eintrag abgebrochen wird, möchte ich, dass die Hauptsubroutine nicht mehr ausgeführt wird und den Schließvorgang abbricht. Was nicht funktionieren wird. Der Fehler im Code zu mir scheint ziemlich klar, aber ich weiß nicht, wie man es verhindert und eine bessere Lösung findet. Wenn Sie mir helfen könnten, eine Lösung zu finden, würde ich es sehr schätzen.
Diese Codezeile scheint das Problem zu sein:
If Cancel_Button_LOG = False Then Cancel = True
Here I komprimierte Versionen der beiden Makros hinzufügen, werden
Public Sub Add_Entry_to_Log()
Dim i As Integer
Dim response As Variant
Cancel_Button_LOG = True
response = InputBox("Please enter your Name", "Name")
If response <> "" Then
Else
Cancel_Button_LOG = False
MsgBox "Please enter your name", vbExclamation + vbOKOnly, "Name"
End If
Worksheets("Log").Protect "secret"
ThisWorkbook.Save
End Sub
Jetzt möchte ich die Cancel_Button_log
Variable verwenden, die stornieren Hauptsubsystem:
Dim answer As Variant
answer = MsgBox("Are your sure you want to close the workbook?", vbYesNo) Cancel = False
Select Case answer
Case Is = vbYes
Worksheets("Log").Unprotect "secret"
Call Test
Call Add_Entry_to_Log
If Cancel_Button_LOG = False Then Cancel = True
Worksheets("Log").Protect "secret"
Case Is = vbNo
Cancel = True
End Select
ThisWorkbook.Save
End Sub
Sie Verwenden Sie 'Option Explicit' am Anfang Ihrer Codes (ich empfehle es)? Und wird 'Cancel_Button_LOG' global deklariert? Weil es notwendig ist, wenn Sie es in mehr als einer Untereinheit verwenden möchten. –
Meinst du, wenn du schließst (oder zu einem anderen Blatt wechselst), als du "So wann immer das Blatt geschlossen wurde", ** ODER ** schreibst, wenn du deine Arbeitsmappe schließt (wie in deinem angehängten Code)? –