【发布时间】:2015-05-25 01:48:21
【问题描述】:
我正在创建一个用户表单,它应该允许我从组合框中选择一个选项,并且我需要该选择来为它旁边的文本框提供一个值,因为我需要在最后执行计算。
我有 4 个框架,每个框架有 4 个组合框和 5 个文本框(第 5 个用于结果)。
我不确定这是否是正确的方法,因为这是我第一次使用用户表单。
首先,我在工作簿的工作表中创建了一个包含“是”和“否”的列表,并为其指定了一个名称范围。我认为如果将来需要添加更多值而无需修改代码会更容易。
=OFFSET(Lists!$A$2, 0, 0, COUNTA(Lists!$A:$A),1)
这是我到目前为止的一段代码。
Private Sub UserForm_Initialize()
Dim rngResponse As Range
Dim ws As Worksheet
Set ws = Worksheets("Lists")
For Each rngResponse In ws.Range("Response")
Me.cbResponse1.AddItem rngResponse.Value
Me.cbResponse2.AddItem rngResponse.Value
Me.cbResponse3.AddItem rngResponse.Value
Me.cbResponse4.AddItem rngResponse.Value
Me.cbResponse5.AddItem rngResponse.Value
Me.cbResponse6.AddItem rngResponse.Value
Me.cbResponse7.AddItem rngResponse.Value
Me.cbResponse8.AddItem rngResponse.Value
Me.cbResponse9.AddItem rngResponse.Value
Me.cbResponse10.AddItem rngResponse.Value
Me.cbResponse11.AddItem rngResponse.Value
Me.cbResponse12.AddItem rngResponse.Value
Me.cbResponse13.AddItem rngResponse.Value
Me.cbResponse14.AddItem rngResponse.Value
Me.cbResponse15.AddItem rngResponse.Value
Me.cbResponse16.AddItem rngResponse.Value
Next rngResponse
End Sub
每个文本框的命名如下。
txtResponse1
txtResponse2
txtResponse3
txtResponse4
直到 txtResponse16
然后我想在每一帧中显示结果的文本框是
txtResult1
txtResult2
txtResult3
txtResult4
我需要将“是”值设为 1,将“否”值设为 0,然后对帧中的所有值求和,然后将它们除以响应数。所以如果 cbbox 是空白的,那么 txtbox 也应该是空白的。
非常欢迎任何意见或建议。
编辑:
我为每个组合框添加了一个,它可以工作,但现在我有 16 个潜艇。有没有办法缩短这个?
Private Sub cbResponse1_Change()
If Me.cbResponse1.Value = "" Then
Me.txtResponse1.Value = ""
End If
If Me.cbResponse1.Value = "Yes" Then
Me.txtResponse1.Value = 1
End If
If Me.cbResponse1.Value = "No" Then
Me.txtResponse1.Value = 0
End If
End Sub
【问题讨论】: