Home |
Search |
Today's Posts |
#1
Posted to microsoft.public.excel.programming
|
|||
|
|||
2003 - MS Calendar Control VBA weirdness
I have a VBA form that I added 2 text boxes to determine a date range. In
those boxes, it calls a calendar control that's initially invisible. Here's the code: Dim sWhere As String Private Sub tbFrom_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) cal1.Visible = True sWhere = "From" End Sub Private Sub tbThru_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) cal1.Visible = True sWhere = "Thru" End Sub Private Sub cal1_Click() If sWhere = "From" Then tbFrom.Text = cal1.Value Else tbThru.Text = cal1.Value End If sWhere = "" cal1.Visible = False End Sub What's not happening is when I 'mouse down' over either of the text boxes, the calendar doesn't come up. If I click in the area where the calendar control is located, then it selects a date even though I can't see what date I'm selecting. From then it works as expected. What am I missing? I've tried to put the same code in "dbl-click" and "change" and still get the same result. |
#2
Posted to microsoft.public.excel.programming
|
|||
|
|||
2003 - MS Calendar Control VBA weirdness
1) Create a separate form called 'UFCalendar'
2) Put the active X calendar control on it. 3) Name the calendar control 'AXCalendar' 4) put the following code in the UFCalendar form - double-clicking will cause date to be stored '/==========================================/ Private Sub UserForm_Activate() AXCalendar.Value = Now() End Sub '/==========================================/ Private Sub AXCalendar_DblClick() 'put selected date into registry SaveSetting AppName:="ActiveXCalendar", _ section:="Date", Key:="Value", _ setting:=AXCalendar.Value Unload UFCalendar End Sub '/==========================================/ 5) the 2 'MouseDown' subs s/b: '/==========================================/ Private Sub tbFrom_MouseDown(ByVal Button As Integer, _ ByVal Shift As Integer, ByVal X As Single, _ ByVal Y As Single) 'show calendar UFCalendar.Show 'get date from registry and put in textbox Me.tbFrom.Value = GetSetting(AppName:="ActiveXCalendar", _ section:="Date", Key:="Value") End Sub '/==========================================/ '/==========================================/ Private Sub tbThru_MouseDown(ByVal Button As Integer, _ ByVal Shift As Integer, ByVal X As Single, _ ByVal Y As Single) 'show calendar UFCalendar.Show 'get date from registry and put in textbox Me.tbThru.Value = GetSetting(AppName:="ActiveXCalendar", _ section:="Date", Key:="Value") End Sub '/==========================================/ -- Hope this helps. If it does, please click the Yes button. Thanks in advance for your feedback. Gary Brown "musclpete" wrote: I have a VBA form that I added 2 text boxes to determine a date range. In those boxes, it calls a calendar control that's initially invisible. Here's the code: Dim sWhere As String Private Sub tbFrom_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) cal1.Visible = True sWhere = "From" End Sub Private Sub tbThru_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) cal1.Visible = True sWhere = "Thru" End Sub Private Sub cal1_Click() If sWhere = "From" Then tbFrom.Text = cal1.Value Else tbThru.Text = cal1.Value End If sWhere = "" cal1.Visible = False End Sub What's not happening is when I 'mouse down' over either of the text boxes, the calendar doesn't come up. If I click in the area where the calendar control is located, then it selects a date even though I can't see what date I'm selecting. From then it works as expected. What am I missing? I've tried to put the same code in "dbl-click" and "change" and still get the same result. |
#3
Posted to microsoft.public.excel.programming
|
|||
|
|||
2003 - MS Calendar Control VBA weirdness
So there's no way to create a global var and 'pass' between forms?
Is that why you have to use the registry? Or is it just something funky with the calendar control? "Gary Brown" wrote: 1) Create a separate form called 'UFCalendar' 2) Put the active X calendar control on it. 3) Name the calendar control 'AXCalendar' 4) put the following code in the UFCalendar form - double-clicking will cause date to be stored |
#4
Posted to microsoft.public.excel.programming
|
|||
|
|||
2003 - MS Calendar Control VBA weirdness
I THINK that the global variables work between modules but I THINK they get
'lost' when switching bwetween forms and modules. So to be safe, I write the date to the registry then pull it out when I need it and not worry about scope. -- Hope this helps. If it does, please click the Yes button. Thanks in advance for your feedback. Gary Brown "musclpete" wrote: So there's no way to create a global var and 'pass' between forms? Is that why you have to use the registry? Or is it just something funky with the calendar control? "Gary Brown" wrote: 1) Create a separate form called 'UFCalendar' 2) Put the active X calendar control on it. 3) Name the calendar control 'AXCalendar' 4) put the following code in the UFCalendar form - double-clicking will cause date to be stored |
#5
Posted to microsoft.public.excel.programming
|
|||
|
|||
2003 - MS Calendar Control VBA weirdness
Public variables shouldn't get lost unless you do something in the code (or via
the VBE user interface) to reset them. Gary Brown wrote: I THINK that the global variables work between modules but I THINK they get 'lost' when switching bwetween forms and modules. So to be safe, I write the date to the registry then pull it out when I need it and not worry about scope. -- Hope this helps. If it does, please click the Yes button. Thanks in advance for your feedback. Gary Brown "musclpete" wrote: So there's no way to create a global var and 'pass' between forms? Is that why you have to use the registry? Or is it just something funky with the calendar control? "Gary Brown" wrote: 1) Create a separate form called 'UFCalendar' 2) Put the active X calendar control on it. 3) Name the calendar control 'AXCalendar' 4) put the following code in the UFCalendar form - double-clicking will cause date to be stored -- Dave Peterson |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
Similar Threads | ||||
Thread | Forum | |||
VBA Form with Calendar Control - Excel 2002 to 2003 compatibility | Excel Programming | |||
calendar control excle 2003 | Excel Worksheet Functions | |||
Calendar Control in Excel 2000 can't display date in Excel 2003? | Excel Discussion (Misc queries) | |||
Backwards compatibility with Excel 2003 Calendar Control | Excel Programming | |||
calendar control xls 2003 | Excel Programming |