有没有一种方法(VB?)到动态地向Excel单元格中添加公式?动态地向Excel单元格添加公式
我有一个条件为true和false的单元格,它们基于复选框进行更改。
而我有另一个单元格,其中有一个公式。 如果取消选中复选框,应使用此公式。 如果复选框为,那么用户应该能够手动插入值(没有任何公式提示),所以公式不应该存在。
我正在考虑一个解决方案,我会将公式添加到单元格,如果复选框未选中,然后如果复选框被选中,那么我会清除单元格。
这怎么办?我对excel编码和VBA不是很熟悉。
有没有一种方法(VB?)到动态地向Excel单元格中添加公式?动态地向Excel单元格添加公式
我有一个条件为true和false的单元格,它们基于复选框进行更改。
而我有另一个单元格,其中有一个公式。 如果取消选中复选框,应使用此公式。 如果复选框为,那么用户应该能够手动插入值(没有任何公式提示),所以公式不应该存在。
我正在考虑一个解决方案,我会将公式添加到单元格,如果复选框未选中,然后如果复选框被选中,那么我会清除单元格。
这怎么办?我对excel编码和VBA不是很熟悉。
如果你有一个经典的Excel复选框,你可以添加一个链接单元格这将是真或假。
在下面的代码,您的单元格链接是A1
,所述细胞与式中B1
使用和细胞需要是空的或由式填充是C1
。
你需要指定SHEET_NAME(可型动物)和代码直接放入表“模块”在VBA(按Alt+F11
和片上双击(在左侧面板)与链接的单元格,然后只需粘贴,我不认为你的有关规格编辑)
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
也可以使用:
if userform1.checkbox.checked = false then
range("A1").formula = "=myformula"
else
range("A1").value = ""
end if
您需要将代码插入到用户窗体复选框,点击或更改事件都应该有同样的效果,只是在用户窗体复选框双击它会带你到点击事件或用“更改”替换点击,希望这就是你的意思,欢呼 聚苯乙烯。感谢您的建议@ 99moorem
,这是一个用户窗体队友 – R3uK
好吧,你需要在TRUE/FALSE细胞触发EXECUT接下来的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
问题是,将纸张从原点表动态创建,然后名称的床单是不同的。所以,如果我现在将这个代码放在工作表模块上,那么这个代码将用作生成工作表的基础工作表,那么名称就会不正确。我想知道是否可以通过ActiveSheet.Range而不是Sheets(“Sheet_Name”)来选择当前活动工作表。Range? –
是的,你可以,即使它有点危险,因为它可能不是最好的。这些表的名称是不可能预测的?此代码必须放入特定工作表中,因此最糟糕的情况是,使用编辑后的代码创建一个空白工作表,并将其复制到新代码中。您的复选框是否也会自动生成? – R3uK
是的,新工作表的名字很容易预测,它会为工作表名称添加一个运行编号。整个工作表被复制,包括所有的代码和复选框。因此,新生成的工作表将在VBA中具有相同代码的Excel对象。 –