Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema Label
BildScreenshot zu Label Label-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

hwhCalendar_Developer.xls

Betrifft: hwhCalendar_Developer.xls von: GregorJ
Geschrieben am: 08.01.2006 21:49:20

Hallo,
ich verwende den Calendar aus einem Formular in einem Formular,
dabei wird das Datum in eine Textbox eingefügt.
Das funktioniert super,
doch beim öffnen des Calendar, wird nicht immer das aktuelle Datum angezeigt,
manchmal wird es doch angezeigt,
doch dann verschwindet die Markierung des aktuellen Datums nicht
und es wird sich kein Datum der Zukunft übernommen.
Muster: https://www.herber.de/bbs/user/29837.xls


Danke überhaupt für diese praktische Programmierung,
der Calendar ist eine tolle Sache :)

GregorJ

  


Betrifft: AW: hwhCalendar_Developer.xls von: Luschi
Geschrieben am: 09.01.2006 08:48:58

Hallo Gregor,

in dem Kalender-Programm gibt es einige Unstimmigkeiten:
   vCaller = Application.Caller 'ergibt lt. Excel-Hilfe an der Stelle
   'immer Error - es wird also nie der Else-Zweig zutreffen
   If IsError(vCaller) Then
      'es wird immer die Active Zelle aus der Tabelle "Daten" genommen, weil beim
      'Aktivieren des Formulars "Eingabemodul" der Befehl steht:
      'Sheets("Daten").Select
      'und nicht auf die Tabelle "Alle" zurückgesetzt wird
      Set rng = ActiveCell
   Else
      'triit nie ein
      Set rng = ActiveSheet.Buttons(Application.Caller).TopLeftCell.Offset(0, -1)
   End If
   'hier kommt es jetzt zum eigentlichen Fehler
   'Aktive Zelle (Tabelle "Daten") ist leer -» korrekte Datumsanzeige
   'Aktive Zelle enthält Text -» Vba-Laufzeitfehler
   'Aktive Zelle enthält Zahl -» irgend ein Datum von 1900 entspr. der Zahl
   If Not IsEmpty(rng) Then
      datAct = rng.Value
   Else
      datAct = Date
   End If

Gruß von Luschi
aus klein-Paris



  


Betrifft: Lösung gefunden :) von: GregorJ
Geschrieben am: 09.01.2006 22:11:16

Danke Luschi,
du hast mir einen Hinweis gegeben und ich habe eine Lösung für meine Anwendung gefunden.
Das Falsche Datum kommt wie du sagst von der Aktivierten Zelle, da die nicht leer ist,

Private Sub UserForm_Activate()
Application.ScreenUpdating = False
Worksheets("Daten").Visible = True 
Sheets("Daten").Select 'damit die Daten des Formular in die richtige Tabelle kommen
Range("A1").Select 'leere Zelle Auswählen für den Kalender
Range("A1").Value = "" 'sicherstellen, dass die Zelle leer ist
End Sub

Das Verhalten mit der Markierung und dem Datum der Zukunft, kommt daher,
da ich vier Calendar verwende, für jede Textbox einen,
benötige ich auch je ein Klassenmodul:
Dim Labels(9 To 50) As New clsDays1 'im Modul
With frmCalendar1.Controls("Label" & iLabel) 'im Klassenmodul
und das vier mal.

Aber warum ist das nötig:
Sub SetDate1(myDat As Date)
If Not ActiveCell Is Nothing Then Eingabemodul.TextBoxRedatumNeu.Value = myDat
End Sub

Es geht doch auch so:
Sub SetDate1(myDat As Date)
Eingabemodul.TextBoxRedatumNeu.Value = myDat
End Sub
oder?
wenn ich das richtig verstehe wird damit sichergestellt,
das die Funktion nur ausgeführt wird, wenn eine Zelle ausgewählt wurde
und = myDat nicht ins leere geht, oder?

Gregor