更新工作簿的其他Excel表格中的数据

时间:2013-06-17 15:54:36

标签: excel vba excel-vba

这是对以前提出和回答的问题的直接引用:Automatically Update Data in Other Excel Sheets of a Workbook

该脚本工作正常,但由于某种原因,它不会拉动整个列表。以下是我编辑为我的解决方案工作的代码。我使用此第一个块代码:
_

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)中的潜在客户数量。鲍勃应该有39人,托德应该有243人,特雷弗应该有62人。当宏运行时,它只发送105到Todd的工作表,39发送给Bob的(这是正确的),51发送给Trevor的。我在所有工作表上都有一个标题行,包括Master。

当我遇到麻烦时,我清除了所有工作表上的所有格式,并仔细检查所有内容是否拼写在“Q”列中。

关于我做错的任何想法?

1 个答案:

答案 0 :(得分:1)

看起来你的输入将停在A列空白的第一行。这一行:

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

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

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

相关问题