【发布时间】:2019-05-03 14:47:12
【问题描述】:
我有一个大小由用户决定的表。每次用户在第一列的每个单元格中输入或更改值时,我都需要运行一个宏。
默认表格只有标题行和 1 个空白行。有一个单独的启用宏的按钮,其功能是在需要时向此表添加行。 我尝试使用下面的测试代码首先找出表格的大小,然后每次该表格第一列中的单元格发生变化时运行一个宏。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim dyString As String
Dim dyRange As Range
Dim LastRowEntry_1 As Integer
LastRowEntry_1 = ActiveSheet.ListObjects("TableName").Range.Rows.Count
dyString = "B12:B" & LastRowEntry_1
Set dyRange = Range(dyString)
If Not Intersect(Target.Columns(1), dyRange) Is Nothing Then
If IsEmpty(Target.Value) = False Then
'RUN MACRO 1
End If
End If
End Sub
虽然宏针对第一行中的任何更改正常运行,但每次向表中添加新行时,宏仅在添加空白行(单击按钮)的操作上运行,而不针对任何对新行中单元格的后续更改。我需要它仅在这些单元格中输入值或更改现有值时运行,而不是在其空白时运行。
我哪里错了?
【问题讨论】:
-
我建议使用
ListColumns(1)来引用表格的第一列,似乎它应该简化这一点(无需找到表格的最后一行)。