我正在尝试在工作表上查找数据的最底行,并将位置保存为变量以在另一页上使用。我这样做是为了可以复制一些内容,使行数与另一张纸相同。
Sub Test()
Sheets("Buy Sell Alloc").Activate
Dim X As Range
Set X = Range("C" & Rows.Count).End(xlUp)
Sheets("Invest #1- Intermediate").Activate
Rows("2:2").Select
Selection.Copy
X.Select
Range(Selection, "C2").PasteSpecial
End Sub
这是我的代码,如果我不换纸,它可以工作,但是当我转到另一张纸时,它给我一个错误。我该如何解决?
答案 0 :(得分:0)
您无需激活工作表即可直接复制:
Dim X As Range
Set X = sheets("Buy Sell Alloc").range("C" & sheets("Buy Sell Alloc").Rows.Count).End(xlUp)
Sheets("Invest #1- Intermediate").Rows("2:2").Copy
X.PasteSpecial
原始代码中的问题是,选择X不会激活它所在的工作表,并且因为pastespecial命令不包含工作表引用,所以它将其粘贴到活动工作表上。
答案 1 :(得分:0)
我更喜欢使用一个辅助函数,这样我就可以轻松地从代码中的任何地方调用而不重复我自己。我给它传递了一个工作表变量(即在哪个工作表中查找最后一行)和一个列变量(即给定工作表的哪个列中查找最后填充的行)。您可以进一步开发以传递要使用的最后一行方法的附加参数,然后在函数内为这些方法添加代码。该函数返回最后一行的Long值。
Public Function GetLastRow(ByVal ws As Worksheet, Optional ByVal columnNumber As Long = 1) As Long
With ws
GetLastRow = .Cells(.Rows.Count, columnNumber).End(xlUp).Row
End With
End Function