How can you make an array of objects?

Y

ynotravid

I am try to make a user form where people can enter thier work schedul
(what days they work).

The format I am trying to reproduce looks like 'this
(http://www.timeanddate.com/calendar/).

The way I have it setup there is a spin button which determines whic
is the current month and then I have 35 labels and textboxes setup in
matrix similart to this:

1 2 3 4 5 6 7
[] [] [] [] [] [] []

8 9 10 11 12 13 14
[] [] [] [] [] [] []

15 16 17 18 19 20 21
[] [] [] [] [] [] []

22 23 24 25 26 27 28
[] [] [] [] [] [] []

29 30 31 32 33 34 35
[] [] [] [] [] [] []

What I want to do is, adjust this for the current month.

For instance, if the current month was September of 2004 then I woul
hide labels and textboxes 1, 2, 3, as well as 34 and 35 by changin
thier 'visible' property to false. I would then rename the remainin
labels/textboxes to reflect the appropriate dates.

The only sane way I can think of doing this is by putting all th
elements in an array and then hide and rename things in a for loo
where appropriate.

Thanks ahead of time
 
B

Bob Phillips

Here's a little routine that does it. Just pass the year and month to it,
e.g. SetupCalendar 2004,9

Sub setupcalendar(yr As Long, mnth As Long)
Dim nWeekday As Long
Dim nDay As Long
Dim i As Long

nWeekday = Weekday(DateSerial(yr, mnth, 1))
nDay = Day(DateSerial(yr, mnth + 1, 0))
For i = 1 To nWeekday - 1
Me.Controls("TextBox" & i).Visible = False
Next i

For i = nWeekday To nDay + nWeekday - 1
Me.Controls("TextBox" & i).Visible = True
Me.Controls("TextBox" & i).Text = i - nWeekday + 1
Next i

For i = nWeekday + nDay To 35
Me.Controls("TextBox" & i).Visible = False
Next i

End Sub

--

HTH

Bob Phillips
... looking out across Poole Harbour to the Purbecks
(remove nothere from the email address if mailing direct)
 
B

Bob Phillips

only (sic!) 37.

This gives an inherent problem, you will have a big gap at the bottom when
you have Feb starting on Sunday.

--

HTH

Bob Phillips
... looking out across Poole Harbour to the Purbecks
(remove nothere from the email address if mailing direct)

Frank Stone said:
I think you will need 42 days. look at October 2004.
-----Original Message-----
I am try to make a user form where people can enter thier work schedule
(what days they work).

The format I am trying to reproduce looks like 'this'
(http://www.timeanddate.com/calendar/).

The way I have it setup there is a spin button which determines which
is the current month and then I have 35 labels and textboxes setup in a
matrix similart to this:

1 2 3 4 5 6 7
[] [] [] [] [] [] []

8 9 10 11 12 13 14
[] [] [] [] [] [] []

15 16 17 18 19 20 21
[] [] [] [] [] [] []

22 23 24 25 26 27 28
[] [] [] [] [] [] []

29 30 31 32 33 34 35
[] [] [] [] [] [] []

What I want to do is, adjust this for the current month.

For instance, if the current month was September of 2004 then I would
hide labels and textboxes 1, 2, 3, as well as 34 and 35 by changing
thier 'visible' property to false. I would then rename the remaining
labels/textboxes to reflect the appropriate dates.

The only sane way I can think of doing this is by putting all the
elements in an array and then hide and rename things in a for loop
where appropriate.

Thanks ahead of time.
 
Y

ynotravid

um stupid question... is 'Me' analogous to 'this' in C++ where it refer
to the current objects name space
 
B

Bob Phillips

Don't know C++, but from your description doesn't sound quite the same. In
VBA, Me refers to the instance of the current executing class. So, in a form
it refers to the userform class, in a worksheet, that worksheet class.

It is useful to pass the instance to a generic routine as a parameter In
this instance it is nor absolutely necessary, I just tend to always qualify
with Me.

--

HTH

Bob Phillips
... looking out across Poole Harbour to the Purbecks
(remove nothere from the email address if mailing direct)
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top