【问题标题】:VBA Excel 2010 ComboBox and Select CaseVBA Excel 2010 组合框和选择案例
【发布时间】:2014-02-01 23:20:57
【问题描述】:

很抱歉打扰您,我一直在通过谷歌阅读和搜索,但找不到我的答案......

我确定我已经看到了答案,但它只是没有意义......

我有一个按钮来加载日期列表,我希望你会在下面看到......从当前日期起 7 天......

我的组合框名称是“cmbDiffDay”我可以使用“.AddItem”成功添加日期......所以当我点击列表时我可以看到日期......所以我很高兴他们的 LOL......

我想为组合框使用“选择案例”,但我不知道如何使它工作?

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

【问题讨论】:

  • 如果用户选择“-今天”会发生什么
  • 如果您将.AddItem "- Today " & Date & " - " 更改为.AddItem "- Today:" & Date & " - " 请注意冒号,然后我们可以使用Trim(Split(Load7DayCount.Text, ":")(1))

标签: vba excel excel-2010


【解决方案1】:

您可以使用(未​​测试)

    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

但是,就像我在上面的评论中提到的那样,如果您将 .AddItem "- Today " &amp; Date &amp; " - " 更改为 .AddItem "- Today:" &amp; Date &amp; " - ",那么您可以使用以下内容

    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

编辑

您也可以使用.ListIndex 属性。例如

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

【讨论】:

    【解决方案2】:

    我不确定 Select Case 是否适合这里。也许这只是示例文本,并不代表您要完成的工作。但根据您提供的信息,我建议使用循环和 ListIndex 而不是 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-08
      • 2010-12-22
      • 1970-01-01
      • 1970-01-01
      • 2021-07-11
      • 2011-06-10
      • 1970-01-01
      • 2013-02-03
      相关资源
      最近更新 更多