所以基本上,我有一个列表框(名为ListBox1),其中包含4个值(让他们调用它们" value1"," value2"等)。我想要做的是以下伪代码:
if (value1 is selected)
then change the formula in cell A1 to "=B1/B2"
elseif (value2 is selected)
then change the formula in cell A1 to "=ROUND(B1/B2,0)"
elseif (value3 is selected)
then change the formula in cell A1 to "=ROUNDUP(B1/B2,0)"
elseif (value4 is selected)
then change the formula in cell A1 to "=ROUNDDOWN(B1/B2,0)"
(使用宏将是最好的)
看起来很简单,但我找不到任何可以告诉我如何在任何地方执行此操作的教程。
我试过了:
Sub ListBox1_Change()
If ListBox1.Selected("value1") Then range("A1").Formula = "=B1/B2"
ElseIf ListBox1.Selected("value2") Then range("A1).value = "=ROUND(B1/B2,0)"
' so on so forth
EndIf
End Sub
但它没有用。
提前致谢
答案 0 :(得分:2)
做到这一点很简单:
Private Sub ListBox1_Change()
If ListBox1.Selected(0) Then Range("A1").Formula = "=B1/B2"
If ListBox1.Selected(1) Then Range("A1").Formula = "=ROUND(B1/B2,0)"
If ListBox1.Selected(2) Then Range("A1").Formula = "=ROUNDUP(B1/B2,0)"
If ListBox1.Selected(3) Then Range("A1").Formula = "=ROUNDDOWN(B1/B2,0)"
End Sub
或以不同的方式:
Range("A1").Formula = Array("=B1/B2","=ROUND(B1/B2,0)","=ROUNDUP(B1/B2,0)","=ROUNDDOWN(B1/B2,0)")(ListBox1.ListIndex)
适用于您的情况:
您已在框中设置了值的范围
将输出设置为A1
。然后将宏设置到列表框:(选择“新建”)
Sub Listbox_OnChange()
Range("A1").Formula = Array("", "=B1/B2", "=ROUND(B1/B2,0)", "=ROUNDUP(B1/B2,0)", "=ROUNDDOWN(B1/B2,0)")(Range("A1").Value)
End Sub
主要问题是你的ListBox不是真正的 ListBox,也不能像一个一样使用。您需要使用ActiveXObject来完成它,就像我的答案中的第一部分一样。
答案 1 :(得分:0)
我设法在不经过VBA代码的情况下完成了这项工作。我将列表框指向单元格A2
,并将其值更改为value1
,value2
等。
然后,在单元格A1中:
=IF(A2="value1";B1/B2;
IF(A2="value2";ROUND(B1/B2;0);
IF(A2="value3";ROUNDUP(B1/B2;0);
IF(A2="value4";ROUNDDOWN(B1/B2;0);"")
)
)
)