工作表名称作为变量以从函数获取最后一行

时间:2018-03-15 17:55:32

标签: excel-vba vba excel

我可以将工作表名称作为变量传递给函数以返回给定工作表的最后一行吗?如果是这样,代码的结构会是什么样的?我如何传递变量?我正在使用一个简单的函数

Function lastRow()

    With ActiveSheet
        lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
    End With

End Function

并在此处调用

Sub CopyResults()

'Copy DP-CustomerDates
DPCustomerDates.Range("A1:D" & lastRow).Copy

我在多个工作表上多次找到最后一行,并且最初创建了该函数,以避免重复键入整个块一遍又一遍。我正在根据我从这里得到的一些很好的信息修改我的代码基础codereview并且我坚持这个新问题。

1 个答案:

答案 0 :(得分:1)

将电子表格作为参数传递:

Function lastrow(ws As Worksheet) As Long

    With ws
        lastrow = .Cells(.Rows.Count, "A").End(xlUp).Row
    End With

End Function

然后这样称呼它:

Sub CopyResults()

'Copy DP-CustomerDates
DPCustomerDates.Range("A1:D" & lastrow(DPCustomerDates)).Copy
End Sub

但是如果您打算多次使用相同的数字,而不是多次调用,请将返回值分配给变量并仅调用一次。

Sub CopyResults()
Dim lstrw As Long
lstrw = lastrow (DPCustomerDates)
'Copy DP-CustomerDates
DPCustomerDates.Range("A1:D" & lstrw).Copy
End Sub