我可以将工作表名称作为变量传递给函数以返回给定工作表的最后一行吗?如果是这样,代码的结构会是什么样的?我如何传递变量?我正在使用一个简单的函数
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并且我坚持这个新问题。
答案 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