0

这是对位于此处的先前询问和回答的问题的直接引用:自动更新工作簿的其他 Excel 工作表中的数据

该脚本工作正常,但由于某种原因,它并没有提取整个列表。以下是我为解决方案而编辑的代码。我没有使用这第一块代码:
_

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Call UpdateFromMaster
End Sub

这是在标准模块中使用的:

_

Sub UpdateFromMaster()

Call ResetDestinationSheets


Dim LR As Long, i As Long
LR = Range("A" & Rows.Count).End(xlUp).Row
For i = 2 To LR
If Range("Q" & i).Value = "Todd" Then Rows(i).Copy Destination:=Sheets("Todd").Range("A" & Rows.Count).End(xlUp).Offset(1)
If Range("Q" & i).Value = "Bob" Then Rows(i).Copy Destination:=Sheets("Bob").Range("A" & Rows.Count).End(xlUp).Offset(1)
If Range("Q" & i).Value = "Trevor" Then Rows(i).Copy Destination:=Sheets("Trevor").Range("A" & Rows.Count).End(xlUp).Offset(1)
Next i

End Sub

_

Sub ResetDestinationSheets()


Call ResetThisSheet("Todd")
Call ResetThisSheet("Bob") 
Call ResetThisSheet("Trevor")
End Sub

_

Sub ResetThisSheet(ByRef SheetToClear As String)
Sheets(SheetToClear).Range("A2:S" & Rows.Count).Clear
End Sub

_

现在,运行 UpdateFromMaster 宏后,我的主列表,宏似乎工作正常。直到我检查每个工作表(Todd、Bob 和 Trevor)中的潜在客户数量。Bob 应该有 39 个,Todd 应该有 243 个,Trevor 应该有 62 个。运行宏时,它只向 Todd 的工作表发送 105,向 Bob 的工作表发送 39(这是正确的),向 Trevor 的发送 51。我在所有工作表上都有一个标题行,包括硕士。

当我解决这个问题时,我清除了所有工作表上的所有格式,并仔细检查了“Q”列中的所有内容是否拼写正确。

关于我做错了什么的任何想法?

4

1 回答 1

1

看起来您的输入将在 A 列中空白的第一行停止。这里的这一行:

LR = Range("A" & Rows.Count).End(xlUp).Row

Range("A" & Rows.Count)首先获取 A 列 ( )中所有“潜在”行的范围。根据您的 Excel 版本以及您最近是否保存过,此“潜在”行数可能包括数千(甚至数百万)行有效但实际上并未使用。

为了缓解这种情况,添加的原始编码器.End(xlUp).Row告诉它垂直转到列中的最后一个单元格(这与在单元格 A1 上按下“control-Down”时得到的结果相同)。这种方法的局限性在于“最后使用的单元格”是在本地定义的,而不是全局定义的,这意味着它会在其方式中的第一个空白单元格处停止。

于 2013-06-17T16:45:23.757 回答