窗体组合框和选项按钮的使用

本例使用了组合框和选项按钮来跟踪和调整物品的状态,如下图所示。当在组合框中选择相应的物品后,下面的方框上方的文字会相应改变为该组合框物品名称,方框中的选项按钮根据该物品是否充足进行相应的选择。同时,在组合框中选择物品后,如果更改方框中选项按钮的状态,则下方库存状态列表中的文字也相应更改。单元格区域B11:C18为物品及相应的库存状态列表。

例如,在组合框中选择物品“潜水泵”,单元格B5会显示“潜水泵 充足还是不充足?”,因为在B11:C18中的潜水泵库存状态为充足,所以方框中名为“充足”的选项按钮被选中。此时,若将选项按钮更改为名为“不足”的选项按钮,那么B11:C18中潜水泵所对应的库存状态也会更改为“不足”。

comboboxandoptionbutton1

下面来看看这个示例是如何实现的。

第一步:在工作表中放置一个组合框、两个选项按钮,并调整格式如上图。在B11:C18区域录入数据,当然可以将数据录入到工作表的其他区域或其他工作表中,并且可以为区域命名,以方便调用和扩展。在本例中,为了演示方便,将数据区域与窗体控件放置在一起。

第二步:设置组合框,如下图所示。

comboboxandoptionbutton2 

第三步:设置选项按钮,将选项按钮的单元格链接为C8。

第四步:设置单元格B5,使之显示相关的提示信息。在单元格B5中输入公式:

=INDEX(B12:B18,D3) & ” 充足还是不充足?”

第五步:编写组合框和选项按钮相关联的代码。在VBE的标准模块中输入下面的代码:

   1: Sub GetStates()
   2:     Dim ws As Worksheet
   3:     Dim iWPNumber As Integer
   4:     Dim sStates As String
   5:     On Error Resume Next
   6:     Set ws = ThisWorkbook.Worksheets("组合框示例")
   7:     iWPNumber = ws.Range("D3")
   8:     '获取组合框中当前所选物品的状态
   9:     sStates = ws.Range("B11").Offset(iWPNumber, 1)
  10:     If sStates = "充足" Then
  11:         '激活名为"充足"的选项按钮
  12:         ws.Range("C8").Value = 1
  13:     Else
  14:         '激活名为"不足"的选项按钮
  15:         ws.Range("C8").Value = 2
  16:     End If
  17:     Set ws = Nothing
  18: End Sub
  19:  
  20: Sub SetStates()
  21:     Dim ws As Worksheet
  22:     Dim iWPNumber As Integer
  23:     On Error Resume Next
  24:     Set ws = ThisWorkbook.Worksheets("组合框示例")
  25:     iWPNumber = ws.Range("D3")
  26:     If ws.Range("C8").Value = 1 Then
  27:         '更新物品的状态为充足
  28:         ws.Range("B11").Offset(iWPNumber, 1).Value = "充足"
  29:     Else
  30:         '更新物品的状态为不足
  31:         ws.Range("B11").Offset(iWPNumber, 1).Value = "不足"
  32:     End If
  33:     Set ws = Nothing
  34: End Sub

其中,GetStates过程为组合框对应的宏代码,当组合框选项发生变化时更改对应的选项按钮。SetStates过程为选项按钮对应的宏代码,当组合框选项选定后,更改选项按钮设置时,相应更改库存列表中物品的库存状态。

第六步:为组合框指定宏为GetStates,为两个选项按钮指定宏为SetStates。


提示:您可以在评论中使用HTML标签,且任何与HTML标签相同的符号都会被理解为HTML标签并以相应的格式显示.如果您的评论中有代码,可以使用相应的标签,例如,如果有VB或VBA代码,则可以使用[vb]标签,即[vb]放置的代码[/vb],这样会很清晰地显示代码.

1条评论

  1. oath:

    只是偏移了一位求得states

发表评论