Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 81
Default ComboBox last selection

Excel 2003
I have a ComboBox loaded with 30 rows and a dropdown list set to display 9
rows.
When the DropDown button is clicked it displays the first 8 rows in the
list.
How can I make it highlight the last selection when the dropdown button is
clicked and display
the 4 rows either side.
donwb


  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 2,510
Default ComboBox last selection

I think that this is what you are looking for. I tested it on a worksheet but
if you are using a Userform then it will probably work if you replace the
Sheet1 with the userform name (or or alias Me.)

Private Sub ComboBox1_GotFocus()
Sheet1.ComboBox1.DropDown
If Sheet1.ComboBox1.ListIndex 3 Then
Sheet1.ComboBox1.TopIndex = _
Sheet1.ComboBox1.ListIndex - 4
End If
End Sub


--
Regards,

OssieMac


"donwb" wrote:

Excel 2003
I have a ComboBox loaded with 30 rows and a dropdown list set to display 9
rows.
When the DropDown button is clicked it displays the first 8 rows in the
list.
How can I make it highlight the last selection when the dropdown button is
clicked and display
the 4 rows either side.
donwb



  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 2,510
Default ComboBox last selection

Just so you don't have to wait for another answer if you get into trouble if
the combo box is on a userform here is the code. On userform it is the Enter
Event while on worksheet it is GotFocus event.

Private Sub ComboBox1_Enter()
Me.ComboBox1.DropDown
If Me.ComboBox1.ListIndex 3 Then
Me.ComboBox1.TopIndex = _
Me.ComboBox1.ListIndex - 4
End If
End Sub

--
Regards,

OssieMac


"OssieMac" wrote:

I think that this is what you are looking for. I tested it on a worksheet but
if you are using a Userform then it will probably work if you replace the
Sheet1 with the userform name (or or alias Me.)

Private Sub ComboBox1_GotFocus()
Sheet1.ComboBox1.DropDown
If Sheet1.ComboBox1.ListIndex 3 Then
Sheet1.ComboBox1.TopIndex = _
Sheet1.ComboBox1.ListIndex - 4
End If
End Sub


--
Regards,

OssieMac


"donwb" wrote:

Excel 2003
I have a ComboBox loaded with 30 rows and a dropdown list set to display 9
rows.
When the DropDown button is clicked it displays the first 8 rows in the
list.
How can I make it highlight the last selection when the dropdown button is
clicked and display
the 4 rows either side.
donwb



  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 81
Default ComboBox last selection

Thanks Ossiemac for the responses.
I will try the code you suggest.
What I don't understand though, is that On my UserForm,
apart from the "troublesome" ComboBox (populated with Year values
from 1900 to 2050 but limited to displaying 9 rows),
I have an almost identical one populated with Month names
from January to December also only displaying 9 rows and the latter
does exactly what I require.
I can see no difference in any settings between them.
Peculiar.
donwb

"OssieMac" wrote in message
...
Just so you don't have to wait for another answer if you get into trouble
if
the combo box is on a userform here is the code. On userform it is the
Enter
Event while on worksheet it is GotFocus event.

Private Sub ComboBox1_Enter()
Me.ComboBox1.DropDown
If Me.ComboBox1.ListIndex 3 Then
Me.ComboBox1.TopIndex = _
Me.ComboBox1.ListIndex - 4
End If
End Sub

--
Regards,

OssieMac


"OssieMac" wrote:

I think that this is what you are looking for. I tested it on a worksheet
but
if you are using a Userform then it will probably work if you replace the
Sheet1 with the userform name (or or alias Me.)

Private Sub ComboBox1_GotFocus()
Sheet1.ComboBox1.DropDown
If Sheet1.ComboBox1.ListIndex 3 Then
Sheet1.ComboBox1.TopIndex = _
Sheet1.ComboBox1.ListIndex - 4
End If
End Sub


--
Regards,

OssieMac


"donwb" wrote:

Excel 2003
I have a ComboBox loaded with 30 rows and a dropdown list set to
display 9
rows.
When the DropDown button is clicked it displays the first 8 rows in the
list.
How can I make it highlight the last selection when the dropdown button
is
clicked and display
the 4 rows either side.
donwb





  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 2,510
Default ComboBox last selection

Hi again,

My apologies for not getting back to you sooner but the Olympics on TV are
playing havoc with my time.

Something you need to realize is that with a combo box displaying 9 rows, if
the existing value is within the last 4 values in the list then the combo
must display 9 rows. It will not display the existing value in the middle and
leave blank rows at the bottom. It will display the last 9 rows of the list
and the previously selected value will be where ever it falls in the
sequence. Conversely with the first rows in the list. it can't display blank
rows at the top. The code has to handle the top rows or an error occurs
trying to set the TopIndex but it does not appear to generate any errors for
the bottom rows so I did not bother trying to do anything special with them.

My previous code was not quite correct and I have had another look at it.
From your last post, I am assuming that you are trying to pick dates from 3
combo boxes for Year, Month and Day. Is my assumption correct? If so then the
following code might help.

Private Sub ComboYear_Enter()
'ListBox RowSource set to Sheet1.Range("A1:A151)
'which is 1900 to 2050

Me.ComboYear.DropDown
If Me.ComboYear.ListIndex - 4 = 0 Then
Me.ComboYear.TopIndex = _
Me.ComboYear.ListIndex - 4
Else
Me.ComboYear.TopIndex = 0
End If
End Sub

Private Sub ComboMonth_Enter()
'ListBox RowSource set to Sheet1.Range("B1:B12)
'which is January to December

'Because the ComboBox has 9 ListRows,
'if the value is within the last 4 rows
'then it must display the last 9 rows of the list.

Me.ComboMonth.DropDown
If Me.ComboMonth.ListIndex - 4 = 0 Then
Me.ComboMonth.TopIndex = _
Me.ComboMonth.ListIndex - 4
Else
Me.ComboMonth.TopIndex = 0
End If
End Sub

Private Sub ComboDay_Enter()

'Must select year first to determine if leap year.
If Me.ComboYear.Value = 1900 And Me.ComboYear <= 2050 Then

Select Case Me.ComboMonth.Value
Case "January", "March", "May", "July", _
"August", "October", "December"

Me.ComboDay.RowSource = _
"Sheet1!C1:C31"

Case "April", "June", "September", _
"November"

Me.ComboDay.RowSource = "Sheet1!C1:C30"

Case "February"
If Me.ComboYear.Value Mod 4 = 0 Then
'Leap year
Me.ComboDay.RowSource = _
"Sheet1!C1:C29"
Else
'Not a leap year
Me.ComboDay.RowSource = _
"Sheet1!C1:C28"
End If
Case Else
'Must select month to determine number of
'days in the dropdown.
MsgBox "Require Month selection first"
Me.ComboMonth.SetFocus
End Select

Me.ComboDay.DropDown
Else
MsgBox "Require Year selection first"

End If

If Me.ComboDay.ListIndex - 4 = 0 Then
Me.ComboDay.TopIndex = Me.ComboDay.ListIndex - 4
Else
Me.ComboDay.TopIndex = 0
End If

End Sub


--
Regards,

OssieMac




  #6   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 2,510
Default ComboBox last selection

Hi yet again,

I still did not have the code correct. Missed a couple if Exit Sub's after
the MsgBox's if Year or Month not selected. Try this one. Also feel free to
get back to me again if you are still having problems with it.


Private Sub ComboYear_Enter()
'ListBox RowSource set to Sheet1.Range("A1:A151)
'which is 1900 to 2050

Me.ComboYear.DropDown
If Me.ComboYear.ListIndex - 4 = 0 Then
Me.ComboYear.TopIndex = _
Me.ComboYear.ListIndex - 4
Else
Me.ComboYear.TopIndex = 0
End If
End Sub

Private Sub ComboMonth_Enter()
'ListBox RowSource set to Sheet1.Range("B1:B12)
'which is January to December

'Because the ComboBox has 9 ListRows,
'if the value is within the last 4 rows
'then it must display the last 9 rows of the list.

Me.ComboMonth.DropDown
If Me.ComboMonth.ListIndex - 4 = 0 Then
Me.ComboMonth.TopIndex = _
Me.ComboMonth.ListIndex - 4
Else
Me.ComboMonth.TopIndex = 0
End If
End Sub

Private Sub ComboDay_Enter()

'Must select year first to determine if leap year.
If Me.ComboYear.Value = 1900 And Me.ComboYear <= 2050 Then

Select Case Me.ComboMonth.Value
Case "January", "March", "May", "July", _
"August", "October", "December"

Me.ComboDay.RowSource = _
"Sheet1!C1:C31"

Case "April", "June", "September", _
"November"

Me.ComboDay.RowSource = "Sheet1!C1:C30"

Case "February"
If Me.ComboYear.Value Mod 4 = 0 Then
'Leap year
Me.ComboDay.RowSource = _
"Sheet1!C1:C29"
Else
'Not a leap year
Me.ComboDay.RowSource = _
"Sheet1!C1:C28"
End If
Case Else
'Must select month to determine number of
'days in the dropdown.
MsgBox "Require Month selection first"
Me.ComboMonth.SetFocus
Exit Sub
End Select

Me.ComboDay.DropDown
Else
MsgBox "Require Year selection first"
Me.ComboYear.SetFocus
Exit Sub
End If

If Me.ComboDay.ListIndex - 4 = 0 Then
Me.ComboDay.TopIndex = Me.ComboDay.ListIndex - 4
Else
Me.ComboDay.TopIndex = 0
End If

End Sub
--
Regards,

OssieMac


Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
ComboBox Selection [email protected] uk Excel Discussion (Misc queries) 1 November 14th 08 09:38 PM
fill combobox depending on selection from another combobox Adam Francis Excel Discussion (Misc queries) 2 July 24th 08 07:39 PM
Combobox items determined by the selection in another combobox Alerion Excel Programming 2 September 13th 06 01:07 PM
Combobox Selection Phil Floyd Excel Programming 0 May 6th 04 09:19 PM
Combobox selection Ian Coates Excel Programming 4 February 5th 04 09:26 AM


All times are GMT +1. The time now is 04:04 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"