我正在尝试创建一个函数,如果在用户表单中勾选了许多复选框,则单元格A1中的公式会显示带有“选择”功能的不同公式。
如果选中所有框,我想要显示的公式是:
=选择(rand between(1,4),A3,A4,A5,A6)
如果仅选择某些方框,例如选择框1和3,然后公式为:
=选择(rand between(1,4),A3,B1,A5,B1)
其中B1是对空白单元格的引用。 下一个公式将取决于该单元格的值。
目前我采取的方法是:
Dim a as range, b as range, c as range, d as range,
'set cell reference with data in if checkbox is selected, blank cell reference if checkbox not selected
If checkbox1.value=TRUE then
set a = range("A3")
else
set a = range("B1")
end if
'this is repeated for all checkboxes
接下来我想要它,所以A1中的公式是
=选择(rand between(1,4),a,b,c,d)
其中a,b,c,d是我在IF函数中确定的范围。这是我被困的地方。如果我做
[A1]="=choose(randbetween(1,4),a,b,c,d)"
然后公式没有取值
如果我这样做:
Dim LValue As String
LValue = Choose(Application.RandBetween(1, 4), a, b, c, d)
[A1] = LValue
然后返回的所有值都是具有公式的A1的值。
有什么想法吗?
更新
感谢您的建议。在回答你的答案和我需要的公式后,灵感就来了:
[A1] = "=choose(randbetween(1,4), " & a & "," & b & "," & c & "," & d & ")"
显示变量中变量的单元格中的公式。变量必须是字符串而不是范围。
答案 0 :(得分:0)
首先,您需要在d as range,
之后删除逗号
然后,您需要在粘贴到公式中的文本周围添加双引号。
[a1].Formula = "=choose(randbetween(1,4)," & Chr(34) & a & Chr(34) & "," & Chr(34) & b & Chr(34) & "," & Chr(34) & c & Chr(34) & "," & Chr(34) & d & Chr(34) & ")"
答案 1 :(得分:0)
感谢您的建议。在回答你的答案和我需要的公式后,灵感就来了:
[A1] = "=choose(randbetween(1,4), " & a & "," & b & "," & c & "," & d & ")"
显示变量中变量的单元格中的公式。变量必须是字符串而不是范围。