将公式动态添加到 excel 单元格

Adding a formula dynamically to an excel cell

有没有办法(VB?)将公式动态添加到 excel 单元格

我有一个条件为真和假的单元格,它们根据复选框而变化。

我还有另一个单元格,里面有一个公式。 如果未选中该复选框,则应使用此公式。 如果复选框被选中 ,那么用户应该能够手动插入值 (没有任何公式提示)。所以公式不应该在那里。

我在想一个解决方案,如果复选框未选中,我会将公式添加到单元格中,然后如果复选框被选中,那么我将清除单元格。

这是怎么做到的?我不太熟悉 excel 编码和 VBA.

你可以使用:

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

您需要将代码插入到用户窗体的复选框单击或更改事件中,两者应该具有相同的效果,只需双击用户窗体中的复选框,它将带您进入点击事件或将点击替换为 "change",希望这就是你想要实现的目标,干杯 PS。感谢@99moorem

的建议

好的,您需要 TRUE/FALSE 单元格上的触发器来执行下一个 VBA 代码, 右键单击 sheet 名称并单击 "View Code" 并输入此代码:

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

如果您有一个经典的 Excel 复选框,您可以添加一个链接单元格,它将是 True 或 False。

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

您需要指定Sheet_Name(可以不同)并将该代码直接放入Sheet"module" in VBA(按 Alt+F11 并双击带有链接单元格的 sheet(在左侧面板中),然后只需粘贴并编辑有关您的规格)

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