Autom. Makro-Start manuell unterbinden

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
UserForm InputBox MsgBox


Excel-Version: 10.0 (Office XP)
nach unten

Betrifft: Autom. Makro-Start manuell unterbinden
von: Mike
Geschrieben am: 19.05.2002 - 15:05:40

Seid gegrüßt,
bei jedem Wechsel des Arbeitsblattes in meiner Mappe wird eine msg-Box zur Datumseingabe automatisch gestartet. Das ist auch so gewollt.
Könnte man einen autom. Start auch manuell durch eine Tastenkombination unterbinden? Ich habe es durch Gedrückthalten der Esc-Taste vor dem Wechsel probiert, aber dann kommt die Meldung "Ausführung des Codes wurde unterbrochen" und unter "Debuggen" ist "End With" gelb unterlegt. Natürlich könnte man die geöffnete Box nach dem Wechsel auch manuell wieder schließen. Ich will aber erreichen, dass sie gewollt vor dem Öffnen nicht gestartet wird.

Gruß Mike


nach oben   nach unten

Re: Autom. Makro-Start manuell unterbinden
von: Rainer3
Geschrieben am: 19.05.2002 - 15:30:34

Hallo Mike,

ändere Dein Makro wie folgt

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If ActiveCell.Row <> 1 Or ActiveCell.Column <> 1 Then Exit Sub
'
'
'Hier Dein bisheriger Makrotext
'
'
'
End Sub

Jetzt wird Dein Makro erst nach einem Doppelklick in die Zelle A1 gestartet.

Gruß
Rainer


nach oben   nach unten

Re: Autom. Makro-Start manuell unterbinden
von: Mike
Geschrieben am: 19.05.2002 - 15:45:38

Hallo Rainer,
danke für deinen Lösungsvorschlag. Aber das ist nicht das, was ich wollte. Das Makro soll bei einem Blattwechsel nur dann nicht automatisch ausgeführt werden, wenn ich dies nicht möchte (z.B. zu Kontrollzwecken). Ich möchte quasi vor dem Blattwechsel eine Taste gedrückt halten (z.B., "Esc"), damit das Makro nicht gestartet wird. Geht sowas überhaupt?

Gruß Mike


nach oben   nach unten

Re: Autom. Makro-Start manuell unterbinden
von: Rainer3
Geschrieben am: 19.05.2002 - 16:28:58

Hallo Mike,

wenn überhaupt, aber ohne Kenntnis Deines Makros kann ich Dir da nicht weiter helfen.

Gruß
Rainer


nach oben   nach unten

Re: Autom. Makro-Start manuell unterbinden
von: Mike
Geschrieben am: 19.05.2002 - 16:51:22

Hallo Rainer,
im Modul Datum_abfragen steht folgender Code:


Option Explicit

Function DATUMSABFRAGE() As String
    Dim strDatum_vorher As String
    Dim strDatum_Vorgabe As String
    Dim strDatum_neu As String
    Dim TT$, MM$, JJJJ$
    Do Until strDatum_neu <> ""
        If ActiveSheet.Range("A55").Value <> "" Then
            strDatum_vorher = ActiveSheet.Range("A55").Value
            strDatum_neu = Application.InputBox("Bitte geben Sie das Datum ein!" & vbCrLf & vbCrLf & vbCrLf & vbCrLf _
                                                & "Eingetragenes Datum:", , _
                                                strDatum_vorher)
        Else
            strDatum_Vorgabe = Date
            strDatum_neu = Application.InputBox("Bitte geben Sie das Datum ein!" & vbCrLf & vbCrLf & vbCrLf & vbCrLf _
                                                & "Vorschlag: heutiges Datum.", , _
                                                strDatum_Vorgabe)
        End If
        If strDatum_neu = "Falsch" Then
            DATUMSABFRAGE = ActiveSheet.Range("A55").Value
            Exit Function
        End If
        If strDatum_neu = "" Then Exit Do
        
        On Error Resume Next
        TT = Left(strDatum_neu, InStr(strDatum_neu, ".") - 1)
        MM = Left(Mid(strDatum_neu, Len(TT) + 2), InStr(Mid(strDatum_neu, Len(TT) + 2), ".") - 1)
        If MM = "" Then MM = Mid(strDatum_neu, Len(TT) + 2)
        JJJJ = Mid(Mid(strDatum_neu, Len(TT) + 2), Len(MM) + 2)
        
        If Len(TT) = 1 Then TT = "0" & TT
        If Len(MM) = 1 Then MM = "0" & MM
        If Len(JJJJ) = 0 Then JJJJ = Format(Date, "yyyy")
        If Len(JJJJ) = 1 Then JJJJ = Left(Format(Date, "yyyy"), 3) & JJJJ
        If Len(JJJJ) = 2 Then JJJJ = Left(Format(Date, "yyyy"), 2) & JJJJ
        strDatum_neu = TT & "." & MM & "." & JJJJ

        If IsDate(strDatum_neu) = False Or _
        Len(strDatum_neu) > 10 Or Len(TT) > 2 Or Len(MM) > 2 Or CInt(TT) > 31 Or _
        CInt(MM) > 12 Or Len(JJJJ) = 3 Or Len(JJJJ) > 4 Then
            MsgBox "Fehler bei der Eingabe des Datums!", _
                    vbExclamation, "Hinweis"
            strDatum_neu = ""
        End If
    Loop
    
    DATUMSABFRAGE = strDatum_neu

'und in den Tabellenblättern:


Private Sub Worksheet_Activate()
Range("A55").Value = DATUMSABFRAGE
blnInitialisierung = True 'Variable setzen um die Initialisierung der Userform bei Visible-Abfrage abzubrechen.
If Zeit.Visible = False Then 'Wenn Userform nicht angezeigt.
blnInitialisierung = False
Unload Zeit 'Userform Entladen. (Da sie beim abfragen initialisiert wird)
Exit Sub 'Abbrechen.
End If
Initialisierung False
blnInitialisierung = False
End Sub

Vielleicht kannst du damit was anfangen.

Gruß Mike






nach oben   nach unten

Nachtrag
von: Mike
Geschrieben am: 19.05.2002 - 16:55:06

es fehlt noch der Schluss des Makros "Datum_abfragen"
.
.
End Function

Sorry


nach oben   nach unten

Re: Nachtrag
von: Rainer3
Geschrieben am: 19.05.2002 - 19:37:46

Hallo Mike,

was Du Dir vorstellst, geht meines Wissens nicht.
Entweder Du verwendest das von mir genannte DoubleClick-Ereignis oder Du müßtest im vorliegenden Worksheet_activate-Ereignis als ersten Befehl die Abfrage einbauen ob die Datumsfunktion gestartet werden soll oder nicht.
Im Klartext heißt das: entweder einen Doppelklick ausführen oder den Ja- oder Nein-Button betätigen.

Gruß
Rainer

 nach oben

Beiträge aus den Excel-Beispielen zum Thema "Autom. Makro-Start manuell unterbinden"