根据 Combobox 的输入将数值指定为公式的变量

Assign Numeric Value as a Variable for an Equation Based on Input From Combobox

提问人:SGRacing 提问时间:8/26/2023 最后编辑:Scott CranerSGRacing 更新时间:8/29/2023 访问量:35

问:

我有一本工作簿,每张纸上都有各种用于焊接工程的“计算器”。对于其中一个计算器,方程式基于材料密度,但不是让用户输入正确的值,而是我想使用一个带有材料列表的组合框,然后我可以让宏使用在方程式中分配正确的密度值。

我以前没有使用过 combobox,所以老实说我不知道如何完成这一步,到目前为止,我的搜索还没有产生任何有用的东西。

当工作簿打开时,我有一个组合框填充材料(位于“ThisWorkbook”中),一旦我到达可以分配的点,比如说 .2854 到工作表宏中的“钢”(“存放的重量”),我就可以得到其余的。

Sub Workbook_open()

With ThisWorkbook.Worksheets("Deposited Weight").ComboBox1
    .AddItem "Steel"
    .AddItem "Stainless"
    .AddItem "Aluminum"
End With

End Sub
Excel VBA 组合框

评论

1赞 cybernetic.nomad 8/26/2023
为此,您可以使用查找表

答:

0赞 taller 8/26/2023 #1

请考虑使用 ComboBox 属性而不是代码。无需编码即可实现。

在 ComboBox 上填充材料和价值列可改善用户体验。

性能 价值 注意
ColumnCount 2 指定 ComboBox 中显示的列数
边界列 2 使用第 2 列 use 作为 ComboBox 的值
链接单元 答1 使用 combobox 的值更新单元格 A1
ListFillRange $A$15:$B$18 设置用于填充组合框的工作表区域

enter image description here

请参阅 Microsoft 文档:

ControlFormat.LinkedCell 属性 (Excel)

ControlFormat.ListFillRange 属性 (Excel)


如果目标是从 VBA 代码中的组合框中检索所选值,则可以使用 Change 事件

Private Sub ComboBox1_Change()
    MsgBox "Selection is " & Me.ComboBox1.Value
End Sub
0赞 SGRacing 8/29/2023 #2

我能够找到一个解决方案,允许我将所有内容都保留在宏中,而不是在工作表的某个地方构建一个表格。我真的很想保持计算器表的清洁。

我发现了另一个问题,其中需要组合框的值作为打开灯泡的字符串,我可以使用几个 if-then 语句根据组合框的输入为单个变量定义不同的值。

这不是最有效的解决方案,但对于下拉列表中的 3 个可选选项,它就可以工作。(Combobox名称由“ComboBox1”改为“CboMaterials”)

Dim MatType as String
MatType = Me.CboMaterials.Text

If MatType = "Steel" Then
    Dens = 0.2854
End If

If MatType = "Stainless" Then
    Dens = 0.2901
End If

If MatType = "Aluminum" Then
    Dens = 0.0975
End If

评论

0赞 Frank Ball 8/29/2023
如果您有添加或编辑此数据的最微小的可能性,请使用查找表。始终围绕着您不会总是在身边的想法进行构建,因此必须有人维护此文件。如果您突然变得富有,并认为阿鲁巴岛的生活听起来比您目前居住的地方更具吸引力,那么其他人将不得不支持这个工具。查找表使此过程大大简化。因此,如果您的继任者必须将 Titanium 添加到您的计算器中,那么他们所要做的就是将记录添加到查找表中,一切都无需编辑代码即可进行