【发布时间】:2021-02-06 12:39:02
【问题描述】:
我有代码可以将结果从一个工作表排序并复制到另一个工作表。有时我需要将复制的范围粘贴到选定工作表上的下一个空白单元格,为此我需要使用 ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row。
Worksheets("Wallets").AutoFilterMode = False
Worksheets("Wallets").Range("$A$1:$J10000").AutoFilter Field:=5, Criteria1:="*TRANSFER*"
Worksheets("Wallets").Range("$A$1:$J10000").AutoFilter Field:=7, Criteria1:=">0"
Worksheets("Wallets").Range("B2:I" & Worksheets("Wallets").Cells(Rows.Count, 1).End(xlUp).Row).Copy
Worksheets("Transfers").Cells(Worksheets("Transfers").Cells(Rows.Count, 1).End(xlUp).Row, 1).Offset(1, 0).PasteSpecial Paste:=xlPasteValue
Worksheets("Wallets").AutoFilterMode = False
Worksheets("Wallets").Range("$A$1:$J10000").AutoFilter Field:=5, Criteria1:="*EXCHANGE*"
Worksheets("Wallets").Range("$A$1:$J10000").AutoFilter Field:=7, Criteria1:=">0"
Worksheets("Wallets").Range("B2:I" & Worksheets("Wallets").Cells(Rows.Count, 1).End(xlUp).Row).Copy
Worksheets("Transfers").Cells(Worksheets("Transfers").Cells(Rows.Count, 1).End(xlUp).Row, 1).Offset(1, 0)..PasteSpecial Paste:=xlPasteValues
我正在考虑更改代码,以便如果我需要为某些工作表使用其他列,我可以更轻松地替换这部分。有没有办法让变量每次在 sub 中使用时都重新计算?下面的部分代码只是保存第一个结果并使用它,但我需要为当前使用的每个工作表更新行数(最好不使用 Worksheets.Select)。
Sub Sort_Wallets()
Dim x As Long
x = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
Worksheets("Wallets").AutoFilterMode = False
Worksheets("Wallets").Select
Worksheets("Wallets").Range("$A$1:$J10000").AutoFilter Field:=5, Criteria1:="*TRANSFER*"
Worksheets("Wallets").Range("$A$1:$J10000").AutoFilter Field:=7, Criteria1:=">0"
Worksheets("Wallets").Range("B2:I" & x).Copy
Worksheets("Transfers").Select
Worksheets("Transfers").Cells(x, 1).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
Worksheets("Wallets").AutoFilterMode = False
Worksheets("Wallets").Range("$A$1:$J10000").AutoFilter Field:=5, Criteria1:="*EXCHANGE*"
Worksheets("Wallets").Range("$A$1:$J10000").AutoFilter Field:=7, Criteria1:=">0"
Worksheets("Wallets").Range("B2:I" & x).Copy
Worksheets("Transfers").Cells(x, 1).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
End Sub
【问题讨论】:
-
你忘了问问题。
-
x = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row- 你应该使用有问题的工作表而不是ActiveSheet。 -
@BigBen 哪个?因为每次都不同,我不想每次更改时都添加此行。
-
@GeertBellekens 你是什么意思?
-
我有点困惑你想要做什么,但在你的第二个代码 sn-p 你使用
ActiveSheet来获取最后一行,然后过滤硬编码的@987654326 @工作表。