如果用户没有输入任何值,我试图将单元格E23作为用户输入并作为公式单元格。例如:如果用户在单元格E23中输入值,则考虑该值。如果用户未输入任何值,则从单元格B23复制值。下面是我试过的vba代码。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$E$23" And Target.Value = "" Then
Target.Formula = "=B23"
End If
代码正常工作,直到我通过下拉组合框中的选择更改单元格B23中的值。当我将组合框中的选项从选项1更改为选项2时,新值将在单元格B23中更新,必须将其复制到E23中。但它给了我一个运行时错误' 13'类型不匹配。
感谢任何帮助。谢谢
答案 0 :(得分:0)
这里的问题是这一行
Target.Formula = "=B23"
更改目标单元格,并触发更改目标单元格的Worksheet_Change
事件,并触发Worksheet_Change
事件......依此类推。
因此,您需要在更改目标单元格之前禁用事件(并在之后重新启用它们)。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$E$23" And Target.Value = vbNullString Then
Application.EnableEvents = False
Target.Formula = "=B23"
Application.EnableEvents = True
End If
End Sub
选择多个单元格时也适用的替代方法:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("E23")) Is Nothing Then
Application.EnableEvents = False
If Range("E23").Value = vbNullString Then
Range("E23").Formula = "=B23"
Else
Range("E23").Value = Range("E23").Value - Range("E17").Value
End If
Application.EnableEvents = True
End If
End Sub