Makro im Modul kann nicht ausgeführt werden
07.02.2007 12:21:54
Mathias
ich hoffe es kann mir wer helfen.
Ich möchte den unten stehenden Code für mehrere Unserforms innerhalb einer Anwendung verwenden.
Ich lasse den Code mittels eines Change-Ereignisses aus der Userform starten. Jedoch wird die Verarbeitung nicht zugelassen, und statt dessen folgende Fehlermeldung ausgegeben:
"Fehler beim Kompilieren" ... " Unzulässige Verwendung des Schlüsselwortes Me"
Der Code steht in einem Modul, welches beim Change-Ereignis der Textbox ausgeführt wird.
Ich dachte mir, dass ich hier Me als eine Art Genaralist verwenden kann, der den Namen des Userform ersetzt.
Kann mir vielleicht einer sagen, wie es besser geht, oder wie ich den Namen einer Userform deklariere?
Grüße
Mathias
Public
Sub Gradtage1()
' Hiermit werden die Textboxen ohne "1" belegt
Dim WkSh As Worksheet ' Zuordnung des Tabellenblattes
Dim lLetzte As Long ' letzte belegte Zeile in Spalte A
Dim DatumStrt As Date ' das eingegebene Start-Datum aus txtZeitraumBeginn
Dim DatumEnde As Date ' das eingegebene Ende-Datum aus txtZeitraumEnde
Set WkSh = Worksheets("Gradtage") ' <== den Blattnamen ggf. anpassen !!!
lLetzte = IIf(WkSh.Range("A65536") <> "", 65536, WkSh.Range("A65536").End(xlUp).Row)
DatumStrt = CDate(WkSh.Range("A1").Value) ' das niedrigste Datum speichern
DatumEnde = CDate(WkSh.Range("A" & lLetzte).Value) ' das höchste Datum speichern
' die Eingabe in der TextBox1 auf Datum und Einhaltung der Datumsgrenzen prüfen
If Me.ZeitraumBeginn.Value <> "" Then
If IsDate(Me.txtZeitraumBeginn.Value) And _
CDate(Me.txtZeitraumBeginn.Value) >= DatumStrt And CDate(Me.txtZeitraumBeginn.Value) <= DatumEnde Then
Else
MsgBox "Das Beginndatum ist nicht in Ordnung !", _
48, " Hinweis für " & Application.UserName
With (Me.txtZeitraumBeginn.Value)
.SetFocus
.SelStart = 0
.SelLength = Len(.Text)
End With
Exit Sub
End If
End If
' die Eingabe in der TextBox2 auf Datum und Einhaltung der Datumsgrenzen prüfen
If (Me.txtZeitraumEnde.Value) <> "" Then
If IsDate(Me.txtZeitraumEnde.Value) And _
CDate(Me.txtZeitraumEnde.Value) >= DatumStrt And CDate(Me.txtZeitraumEnde.Value) <= DatumEnde Then
Else
MsgBox "Das Enddatum ist nicht in Ordnung !", _
48, " Hinweis für " & Application.UserName
With (Me.txtZeitraumEnde.Value)
.SetFocus
.SelStart = 0
.SelLength = Len(.Text)
End With
Exit Sub
End If
' prüfen, ob das Datum der TextBox2 größer/gleich dem Datum TextBox1 ist
If CDate(Me.txtZeitraumEnde.Value) > CDate(Me.txtZeitraumBeginn.Value) Then
Else
MsgBox "Das Beginndatum ist nicht größer" & vbCrLf & _
" als das Datum Enddatum !", _
48, " Hinweis für " & Application.UserName
Exit Sub
End If
' über die
Function wird das Ergebnis der Addition der Werte, die den
' einzelnen Datumswerten zugeordnet sind, durchgeführt und eingestellt.
Me.txtGradtage.Value = CDbl(DatAdd(CDate(Me.txtZeitraumBeginn.Value), CDate(Me.txtZeitraumEnde.Value)))
End Sub