PDA

Vollständige Version anzeigen : Kalender Zelle wählen


schildi2000
12.07.2012, 12:47
Kennt sich jemand mit dem Kalender in Excel aus?
Ich wähle eine Zelle aus, Klicke dann auf ein CommandButton Feld, dort öffnet sich ein Kalender, da wähle ich ein Datum aus und dann wird das Datum in die von mir zuvor ausgesuchte Zelle geschrieben.
Funktioniert, aber ich möchte gerne, dass das Datum nur in eine besteimmte Zelle (E7) geschrieben wird. Anbei die Codes. Weiß jemand, was ich da ändern muss?

Code für Tabelle


Option Explicit

Private Sub CommandButton1_Click()
KalForm.Show
End Sub



Code für Modul 1



Option Explicit

Public cLabel() As New clsLabel
Public aktDat As Date

Function ErsterKW(KW As Integer, Jhr As Integer) As Double
Dim Erstertag As Double
If Month(aktDat) = 1 And KW > 51 Then Jhr = Jhr - 1
Erstertag = DateSerial(Jhr, 1, 1)
Do Until DatePart("WW", Erstertag, 2, 2) = 2
Erstertag = Erstertag + 1
Loop
ErsterKW = DateAdd("WW", KW - 2, Erstertag)
End Function

Private Function KWoche(Datum As Date)
Dim t As Long
t = DateSerial(Year(Datum + (8 - Weekday(Datum)) Mod 7 - 3), 1, 1)
KWoche = ((Datum - t - 3 + (Weekday(t) + 1) Mod 7)) \ 7 + 1
End Function

Sub Füllen()
Dim jCounter As Integer, KWZähler As Integer
Dim Tagzähler As Date

KalForm.Anzeige.Caption = Format(aktDat, "mmmm yyyy")
Tagzähler = ErsterKW(KWoche(DateSerial(Year(aktDat), Month(aktDat), 1)), Year(aktDat))
KWZähler = 1
For jCounter = 1 To 6
KalForm.Controls("Label" & jCounter).Caption = KWoche(DateSerial(Year(aktDat), Month(aktDat), KWZähler))
KWZähler = KWZähler + 7
Next jCounter
For jCounter = 7 To 48
With KalForm.Controls("Label" & jCounter)
.Tag = Tagzähler
.Caption = Format(Tagzähler, "d")
.ForeColor = IIf(Month(Tagzähler) <> Month(aktDat), &HC0C0C0, IIf(Weekday(Tagzähler, 2) > 5, &HFF&, &H0&))
.BackColor = IIf(Tagzähler = Date, &HFFFF&, &HFFFFFF)
End With
Tagzähler = Tagzähler + 1
Next jCounter
End Sub



Code für Klassenmodul

Option
Explicit

Public WithEvents Label As MSForms.Label

Private Sub Label_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
ActiveCell.Value = CDate(Label.Tag)
Unload KalForm
End Sub


(Es gibt dann noch einen Code für den Kalender, welcher aber nur das Bild darstellt)

Danke im Voraus!

chris-kaiser
12.07.2012, 13:07
hi


ActiveCell.Value = CDate(Label.Tag)

auf

[E7]=CDate(Label.Tag)

ändern

schildi2000
12.07.2012, 13:13
Super, Danke!

schildi2000
16.07.2012, 07:27
Kann man auch dass so einstellen, dass wenn man die Zelle E7 anklickt, sich der Kalender öffnet? Was muss ich ändern?

Danke im Voraus!

chris-kaiser
16.07.2012, 08:29
Hi

anklicken würde ich nicht empfehlen da der Code dann ständig ausgeführt wird aber wie wäre es mit Doppelklick oder rechter Maustaste?

Doppelklick

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Address(0, 0) = "E7" Then
KalForm.Show
Cancel = True
End If
End Sub


Rechte Maustaste
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If Target.Address(0, 0) = "E7" Then
KalForm.Show
Cancel = True
End If
End Sub





Der CODE sollte sich im Tabellenblatt befinden! , rechte Maustaste auf dem jeweiligen Blattregister -> Code anzeigen und dort einfügen.

schildi2000
16.07.2012, 08:51
Besten Dank!!!