Aage
asked on
Date Control in userform
Hi,
I'm trying to add a calendar function in word 2010, through VBA. I used regedit to register the mscal since it is not incl. in the office package.
I have made a txtbox for the date to be added from the frmCalendar, but can't get it to work.
When I push the command button I get a run-time error 424 in line no. 3. Here is my code for that button:
I have used this code in excel before and it works fine there. Is it not possible to use this in word?
I'm trying to add a calendar function in word 2010, through VBA. I used regedit to register the mscal since it is not incl. in the office package.
I have made a txtbox for the date to be added from the frmCalendar, but can't get it to work.
When I push the command button I get a run-time error 424 in line no. 3. Here is my code for that button:
Private Sub cmdDate_Click()
Load frmCalendar
frmCalendar.Show
Me.txtDate.Text = frmCalendar.Calendar1.Value
' now unload
Unload frmCalendar
End Sub
From frmCalendarPrivate Sub cmdClose_Click()
Me.Hide
End Sub
Private Sub UserForm_Initialize()
If IsDate(ActiveCell.Value) Then
Calendar1.Value = DateValue(ActiveCell.Value)
Else
Calendar1.Value = Date
End If
End Sub
Private Sub Calendar1_Click()
Me.Hide
End Sub
I have used this code in excel before and it works fine there. Is it not possible to use this in word?
I get a compile error because Word doesn't know what the ActiveCell object is in lines 7 and 8 of the second snippet.
Mine is different because I have Option Explicit at the top of every module's code.
I recommend that you set the option to do that automatically for any new modules
Tools/Options, Editor tab, set 'Require Variable Declaration' on. I always disable the Auto Syntax Check at the same time, because it gets very annoying.
I recommend that you set the option to do that automatically for any new modules
Tools/Options, Editor tab, set 'Require Variable Declaration' on. I always disable the Auto Syntax Check at the same time, because it gets very annoying.
ASKER
Yes, it comes from a excel VBA that I had. Should I use ActiveDocument in word instead?
I want to ad a date into a vba userform from the calendar control (frmCalendar).
The main userform has a field called txtDate, next to this I have a command button that calls up frmCalendar. This works but what code can I use to make the calendar control insert a date to the txtDate field?
I want to ad a date into a vba userform from the calendar control (frmCalendar).
The main userform has a field called txtDate, next to this I have a command button that calls up frmCalendar. This works but what code can I use to make the calendar control insert a date to the txtDate field?
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
No,
when the user click the calendar date that he want, the frmCalendar closes and date is put into the textbox "txtDate".
So it should be in the: Private Sub Calendar1_Click()
I tried to update the code I had above, but I do something is defiantly wrong.
when the user click the calendar date that he want, the frmCalendar closes and date is put into the textbox "txtDate".
So it should be in the: Private Sub Calendar1_Click()
I tried to update the code I had above, but I do something is defiantly wrong.
'code for the frmCalendar
Private Sub cmdClose_Click()
Unload Me
End Sub
Private Sub Calendar1_Click()
' Check if active cell contains a date. If 'yes' show
' same date on calendar. If 'no' show today's date.
If IsDate(ActiveDocument.FormField) Then
Calendar1.Value = DateValue(ActiveDocument.Calendar1.Value)
Else
Calendar1.Value = Date
End If
Unload Me
End Sub
Private Sub UserForm_Initialize()
Calendar1.Value = Date
End Sub
'From the cmdButton
Private Sub cmdDato_Click()
Load frmCalendar
frmCalendar.Show
ActiveDocument.txtDate.Text = frmCalendar.Calendar1.Value
' now unload
Unload frmCalendar
End Sub
As a general rule, if your code stops with an error, tell us what it is, and where it is. That saves a lot of guessing.
However, this line must be wrong.
Where and what is txtDate? Is it, too, an ActiveX control on the document?
However, this line must be wrong.
If IsDate(ActiveDocument.FormField) Then
You need to specify a particular FormField and which property is being testedIf IsDate(ActiveDocument.FormFields("MyDate").Result) Then
I don't understand this.Calendar1.Value = DateValue(ActiveDocument.Calendar1.Value)
Do you have a Calendar control on the document as well as on the UserForm? I advise against putting ActiveX controls on the document itself. They don't print well, and they are resource-heavy.Where and what is txtDate? Is it, too, an ActiveX control on the document?
ASKER
No, I do not have a calendar control on the document it self, just on a userform.
I'll try to visualise how I want this function to work.
When I push the command button on the right of the txt.Date field (a little calendar icon on it) the calendar (frmCalendar) will pop up.
When he click the date he wants, the frmCalendar closes and the date he picked are shown in txtDate field on the Main userform. (the first picture).
I think it is many lines that are not correct in this vba. That's why I posted the whole thing :) Not just the error codes, since I was trying to explain it..
I'am a big amateur in word VBA. But I'll try to learn :)
I'll try to visualise how I want this function to work.
When I push the command button on the right of the txt.Date field (a little calendar icon on it) the calendar (frmCalendar) will pop up.
When he click the date he wants, the frmCalendar closes and the date he picked are shown in txtDate field on the Main userform. (the first picture).
I think it is many lines that are not correct in this vba. That's why I posted the whole thing :) Not just the error codes, since I was trying to explain it..
I'am a big amateur in word VBA. But I'll try to learn :)
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Thanks works perfect now.