Sorry to hassle you, I have been reading and searching through Google but cant find my answer...
I'm sure I've see the answer but it just doesn't make sense...
I have a button to load the dates list i want you'll see below..7 days back from the current date...
my comboBox name is "cmbDiffDay" I can successfully add the date using ".AddItem"...so when i click the list i can see the dates ... so I'm happy their LOL....
I want to use "Select Case" for the comboBox but i dont know how to make it work ?
Sub Load7DayCount_Click()
Dim DayMinus1 As Date
Dim DayMinus2 As Date
Dim DayMinus3 As Date
Dim DayMinus4 As Date
Dim DayMinus5 As Date
Dim DayMinus6 As Date
Dim DayMinus7 As Date
DayMinus1 = DateAdd("d", -1, Date)
DayMinus2 = DateAdd("d", -2, Date)
DayMinus3 = DateAdd("d", -3, Date)
DayMinus4 = DateAdd("d", -4, Date)
DayMinus5 = DateAdd("d", -5, Date)
DayMinus6 = DateAdd("d", -6, Date)
DayMinus7 = DateAdd("d", -7, Date)
With Sheet1.cmbDiffDay
.Clear
.AddItem "- Today " & Date & " - "
.AddItem "- 1: " & DayMinus1
.AddItem "- 2: " & DayMinus2
.AddItem "- 3: " & DayMinus3
.AddItem "- 4: " & DayMinus4
.AddItem "- 5: " & DayMinus5
.AddItem "- 6: " & DayMinus6
.AddItem "- 7: " & DayMinus7
End With
Select Case ???????
Case DayMinus1
MsgBox "Selected minus date 1"
Case DayMinus2
MsgBox "Selected minus date 2"
Case DayMinus3
MsgBox "Selected minus date 3"
Case DayMinus4
MsgBox "Selected minus date 4"
Case DayMinus5
MsgBox "Selected minus date 5"
Case DayMinus6
MsgBox "Selected minus date 6"
Case DayMinus7
MsgBox "Selected minus date 7"
End Select
End Sub
You can use (UNTESTED)
If InStr(1, Load7DayCount.Text, ":") Then
sTemp = Trim(Split(Load7DayCount.Text, ":")(1))
Else
sTemp = Load7DayCount.Text
End If
Select Case sTemp
Case DayMinus1: MsgBox "Selected minus date 1"
Case DayMinus2: MsgBox "Selected minus date 2"
Case DayMinus3: MsgBox "Selected minus date 3"
Case DayMinus4: MsgBox "Selected minus date 4"
Case DayMinus5: MsgBox "Selected minus date 5"
Case DayMinus6: MsgBox "Selected minus date 6"
Case DayMinus7: MsgBox "Selected minus date 7"
Case Else: MsgBox "Selected First option" '<~~ Optional
End Select
However like I mentioned int he comment above, if you change .AddItem "- Today " & Date & " - "
to .AddItem "- Today:" & Date & " - "
then you can use the below
Select Case Trim(Split(Load7DayCount.Text, ":")(1))
Case DayMinus1: MsgBox "Selected minus date 1"
Case DayMinus2: MsgBox "Selected minus date 2"
Case DayMinus3: MsgBox "Selected minus date 3"
Case DayMinus4: MsgBox "Selected minus date 4"
Case DayMinus5: MsgBox "Selected minus date 5"
Case DayMinus6: MsgBox "Selected minus date 6"
Case DayMinus7: MsgBox "Selected minus date 7"
Case Else: MsgBox "Selected First option" '<~~ Optional
End Select
Edit
You could also use the .ListIndex
property. For example
Select Case Load7DayCount.ListIndex
Case -1: MsgBox "You didn't select anything"
Case 0: MsgBox "You selected first option"
Case 1: MsgBox "Selected minus date 1"
Case 2: MsgBox "Selected minus date 2"
'
'~~> And So On
'
End Select
I'm not sure Select Case is the way to go here. Maybe this is just example text and doesn't represent what you're trying to accomplish. But based on the information you provided, I would suggest using loops and ListIndex rather than Select Case.
Private Sub cmbDiffDay_Change()
If Me.cmbDiffDay.ListIndex = 0 Then
MsgBox "Today"
Else
MsgBox "Selected minus date " & Me.cmbDiffDay.ListIndex
End If
End Sub
Private Sub UserForm_Initialize()
Dim i As Long
Me.cmbDiffDay.AddItem "- Today " & Date & " - "
For i = 1 To 7
Me.cmbDiffDay.AddItem "- " & i & ": " & Date - i
Next i
End Sub
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.