窗体组合框和选项按钮的使用
本例使用了组合框和选项按钮来跟踪和调整物品的状态,如下图所示。当在组合框中选择相应的物品后,下面的方框上方的文字会相应改变为该组合框物品名称,方框中的选项按钮根据该物品是否充足进行相应的选择。同时,在组合框中选择物品后,如果更改方框中选项按钮的状态,则下方库存状态列表中的文字也相应更改。单元格区域B11:C18为物品及相应的库存状态列表。
例如,在组合框中选择物品“潜水泵”,单元格B5会显示“潜水泵 充足还是不充足?”,因为在B11:C18中的潜水泵库存状态为充足,所以方框中名为“充足”的选项按钮被选中。此时,若将选项按钮更改为名为“不足”的选项按钮,那么B11:C18中潜水泵所对应的库存状态也会更改为“不足”。
下面来看看这个示例是如何实现的。
第一步:在工作表中放置一个组合框、两个选项按钮,并调整格式如上图。在B11:C18区域录入数据,当然可以将数据录入到工作表的其他区域或其他工作表中,并且可以为区域命名,以方便调用和扩展。在本例中,为了演示方便,将数据区域与窗体控件放置在一起。
第二步:设置组合框,如下图所示。
第三步:设置选项按钮,将选项按钮的单元格链接为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。

oath:
只是偏移了一位求得states
8 09月 2008, 5:07 pm