将公式dynamic添加到Excel单元格中

有没有办法(VB?) dynamic地添加公式到Excel单元格

我有一个单元格的条件真假,他们基于一个checkbox的变化。

我还有另外一个细胞,里面有一个公式。 如果取消选中该checkbox,则应使用此公式 。 如果checkbox被选中,那么用户应该可以手动插入值 (没有任何公式提示),所以公式不应该在那里。

我正在考虑一个解决scheme,我将公式添加到单元格,如果checkbox未选中,然后如果checkbox被选中,那么我会清除单元格。

这怎么可能呢? 我不是很熟悉Excel编码和VBA。

如果你有一个经典的Excelcheckbox,你可以添加一个Linked或者True或False 的Linked Cell

在下面的代码中, 链接的单元格A1 ,在B1 使用公式单元格,需要为空或由公式填充单元格C1

您需要指定Sheet_Name (可以是不同的),并将代码直接放入VBA中的Sheet“module” (按Alt+F11然后双击Linked Cell中的工作表(在左侧面板中)),然后只需粘贴和编辑您的规格)

 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 

好的,你需要一个TRUE / FALSE单元格的触发器来执行下一个VBA代码,右键单击表名并单击“查看代码”并input以下代码:

 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 

以及你可以使用:

 if userform1.checkbox.checked = false then range("A1").formula = "=myformula" else range("A1").value = "" end if 

你需要插入代码到userformcheckbox单击或更改事件都应该有相同的效果,只需双击用户forms的checkbox,它会带你到单击事件或更换点击“更改”,希望这就是你意思是实现,欢呼PS。 感谢您的build议@ 99moorem