excel - VBA Worksheet_Change 仅适用于一个单元格
问题描述
我想先说我是 VBA 的新手,所以希望这是一个简单的解决方法。我正在尝试使以下 VBA 代码适用于具有公式的多个单元格。效果是单元格中有一个幻影值,用户可以覆盖然后再次查看他们是否删除了它们的值。我可以让一个单元按我想要的方式工作,但第二个(以及第三个和第四个等)不起作用。如何重复同一行代码,以便效果在具有不同公式的多个单元格中重复出现?
在职的:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
With Target
If .Address(False, False) = "F7" Then
If IsEmpty(.Value) Then
Application.EnableEvents = False
.Formula = "=IFERROR(INDEX(DATABASE!$D$2:$AG$3222,MATCH('Pricing Grid'!$B$11,DATABASE!$E$2:$E$3222,0),10),0)"
Application.EnableEvents = True
End If
End If
End With
End Sub
我的尝试(顶部工作,底部不是):
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
With Target
If .Address(False, False) = "F7" Then
If IsEmpty(.Value) Then
Application.EnableEvents = False
.Formula = "=IFERROR(INDEX(DATABASE!$D$2:$AG$3222,MATCH('Pricing Grid'!$B$11,DATABASE!$E$2:$E$3222,0),10),0)"
Application.EnableEvents = True
End If
End If
End With
End Sub
Private Sub Worksheet_Change1(ByVal Target As Excel.Range)
With Target
If .Address(False, False) = "F8" Then
If IsEmpty(.Value) Then
Application.EnableEvents = False
.Formula = "=IFERROR(INDEX(DATABASE!$D$2:$AG$3222,MATCH('Pricing Grid'!$B$11,DATABASE!$E$2:$E$3222,0),9),0)"
Application.EnableEvents = True
End If
End If
End With
End Sub
解决方案
你可以这样做:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'only handle single cells
If Target.Cells.CountLarge > 1 Then Exit Sub
If IsError(Target.Value) Then Exit Sub '<< edit: added
'only handle empty cells
If Len(Target.Value) > 0 Or Len(Target.Formula) > 0 Then Exit Sub
On Error Goto haveError
Application.EnableEvents = False
Select Case Target.Address(False, False)
Case "F7": Target.Formula = "=IFERROR(INDEX(DATABASE!$D$2:$AG$3222,MATCH('Pricing Grid'!$B$11,DATABASE!$E$2:$E$3222,0),10),0)"
Case "F8": Target.Formula = "=IFERROR(INDEX(DATABASE!$D$2:$AG$3222,MATCH('Pricing Grid'!$B$11,DATABASE!$E$2:$E$3222,0),9),0)"
End Select
haveError:
'ensure events are re-enabled
Application.EnableEvents = True
End Sub
推荐阅读
- c# - 如何使用 C# 中的 WooCommerce 发布记录
- python - 如何将一列的 Pandas 字符串值转换为字符串列表的一列?
- python - 在 Python 中读取 Sharepoint Excel 文件 - Pandas
- reactjs - 过滤获取数据到复选框 react.js
- d3.js - D3 力图奇数链接行为
- javascript - 在会话存储键值对中,值字符串的长度是否有字符限制?
- android - 应用程序不断收到 Resources$NotFoundException
- javascript - 用户单击图像时如何记录正确的对象值?
- python-3.x - 域过滤器没有效果(odoo12)
- reactjs - ReCharts:如果一开始就隐藏了线条动画,如何启用它?