有没有办法(VB?)动态地将公式添加到Excel单元格?
我有一个条件为true和false的单元格,它们会根据复选框进行更改。
我有另一个细胞,里面有一个配方。 如果取消选中该复选框,则应使用此公式。 如果选中该复选框,则用户应该能够手动插入值(没有任何公式提示)。因此公式不应该在那里。
我正在考虑一个解决方案,如果取消选中复选框,我会将公式添加到单元格中,然后如果选中该复选框,则我将清除单元格。
怎么可以这样做?我对excel编码和VBA不是很熟悉。
答案 0 :(得分:2)
好的,你需要一个TRUE / FALSE单元格的触发器来执行下一个VBA代码, 右键单击工作表名称,然后单击"查看代码"并输入以下代码:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A5:A5")) Is Nothing Then 'define adress of your True/Flase cell
If Target.Cells.Value = False then
Range("B5").formula = "=enter your formula" 'define adress for cell with formula aswell
else
Range("B5").value = ""
end if
end if
end sub
答案 1 :(得分:1)
你可以使用:
if userform1.checkbox.checked = false then
range("A1").formula = "=myformula"
else
range("A1").value = ""
end if
您需要将代码插入userform复选框中单击或更改事件两者应该具有相同的效果,只需双击userform中的复选框,它将带您进入click事件或用"更改&替换单击#34;,希望你的意图是什么,欢呼 PS。感谢@ 99moorem的建议
答案 2 :(得分:0)
如果你有一个经典的Excel CheckBox,你可以添加一个真或假的链接单元格。
在以下代码中,您的已关联的单元格位于B1
,C1
中的包含要使用的公式的单元格和公式中需要为空或填充的单元格位于Alt+F11
。
您需要指定Sheet_Name (可以是不同的)并将该代码直接放入VBA中的工作表" 中(按Private Sub Worksheet_Change(ByVal Target As Range)
Dim LinkedCell As Range, _
FormulaCell As Range, _
ChangingCell As Range
Set LinkedCell = Sheets("Sheet_Name").Range("A1")
Set FormulaCell = Sheets("Sheet_Name").Range("B1")
Set ChangingCell = Sheets("Sheet_Name").Range("C1")
If Application.Intersect(Target, LinkedCell) Is Nothing Then
'not in linked cell
Else
'in linked cell
If LinkedCell.Value2 <> True Then
'Unchecked
ChangingCell.FormulaLocal = ChangingCell.FormulaLocal
Else
'Checked
ChangingCell.FormulaLocal = vbNullString
End If
End If
Set LinkedCell = Nothing
Set FormulaCell = Nothing
Set ChangingCell = Nothing
End Sub
并使用链接单元格双击工作表(在左侧面板中),然后根据您的规格粘贴和编辑)
{{1}}