如何将单元格位置或地址另存为变量以在另一张工作表上使用

时间:2018-11-02 20:38:03

标签: excel vba location cell

我正在尝试在工作表上查找数据的最底行,并将位置保存为变量以在另一页上使用。我这样做是为了可以复制一些内容,使行数与另一张纸相同。

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

这是我的代码,如果我不换纸,它可以工作,但是当我转到另一张纸时,它给我一个错误。我该如何解决?

2 个答案:

答案 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