Excel:如果selectlistbox值n2,则更改另一个单元格的值

所以基本上,我有一个列表框(名为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)" 

(使用macros将是最好的)

这似乎很简单,但我找不到任何教程,告诉我如何做到这一点。

我试过这个:

 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 

但它没有工作。

提前致谢

做到这一点简单:

 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 。 然后设置一个macros到列表框:(select“新build”)

 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来做到这一点,就像我的答案中的第一部分。

我设法做到这一点,而无需通过VBA代码。 我有列表框指向单元格A2并将其值更改为值value1value2

然后,在单元格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);"") ) ) )