使用 VBA 创建一个根据勾选的复选框更改的公式
Using VBA to create a formula that changes based on checkboxes ticked
我正在尝试创建一个函数,如果在用户表单中勾选了多个复选框,那么单元格 A1 中的公式会显示一个带有 Choose 函数的不同公式。
如果所有框都被选中,我想要出现的公式是:
=choose(randbetween(1,4),A3,A4,A5,A6)
如果只选择了某些框,例如如果选中框 1 和 3,则公式为:
=choose(randbetween(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中的公式是
=choose(randbetween(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 & ")"
在变量变化的单元格中显示公式。变量也必须是字符串而不是范围。
首先,您需要删除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) & ")"
感谢您的建议。回复您的答案后灵感迸发,我需要的公式是:
[A1] = "=choose(randbetween(1,4), " & a & "," & b & "," & c & "," & d & ")"
在变量变化的单元格中显示公式。变量也必须是字符串而不是范围。
我正在尝试创建一个函数,如果在用户表单中勾选了多个复选框,那么单元格 A1 中的公式会显示一个带有 Choose 函数的不同公式。
如果所有框都被选中,我想要出现的公式是:
=choose(randbetween(1,4),A3,A4,A5,A6)
如果只选择了某些框,例如如果选中框 1 和 3,则公式为:
=choose(randbetween(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中的公式是
=choose(randbetween(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 & ")"
在变量变化的单元格中显示公式。变量也必须是字符串而不是范围。
首先,您需要删除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) & ")"
感谢您的建议。回复您的答案后灵感迸发,我需要的公式是:
[A1] = "=choose(randbetween(1,4), " & a & "," & b & "," & c & "," & d & ")"
在变量变化的单元格中显示公式。变量也必须是字符串而不是范围。