我想在Workbook_Open()
保存特定工作表中使用的最后一个行号,以便以后在其他模块中使用。
到目前为止,我有这段代码:
的ThisWorkbook:
Public last_row as long
Private Sub Workbook_Open()
last_row = Worksheets("Sheet1").Cells(Rows.count, 1).End(xlUp).Row
MsgBox ("This is the last row number: " & last_row)
End Sub
我正确地收到了弹出消息,例如"这是最后一行:25",当我打开工作簿时。这是一个理想的输出。
第1单元:
Sub ABC()
MsgBox ("This is the last row number: " & last_row)
End Sub
但是当我运行模块1时,"这是最后一个行号:"消息是我得到的。
所以,我没有存储" last_row "变量为公共。我究竟做错了什么?提前谢谢!
答案 0 :(得分:3)
你想做的是一个坏主意,绝对不推荐。公共变量会在出现错误时重置。
每次要使用它时重新计算。你可以用两种方式做到这一点
lRow = ws.Range("A" & ws.Rows.Count).End(xlUp).Row
其中ws
是您的工作表对象将其粘贴到模块中
Function GetMeLastRow() As Long
Dim ws As Worksheet
Set ws = Sheet1 '<~~ Change this to relevant sheet or pass it as a parameter
With ws
GetMeLastRow = .Range("A" & .Rows.Count).End(xlUp).Row + 1
End With
End Function
然后像这样使用它
MsgBox GetMeLastRow
答案 1 :(得分:1)
要专门回答您的问题,请修改以下代码:
Sub ABC()
MsgBox ("This is the last row number: " & ThisWorkbook.last_row)
End Sub
要使用ThisWorkbook模块中声明的公共变量,必须使用模块名称对其进行限定。
注意:
有许多更好的方法可以解决您的问题; simpest是 - 将您的最后一行编号保存到隐藏工作表上的单元格中。