Vba 打开工作簿后,将最后一行号另存为变量,以备以后使用
我想将特定工作表中使用的最后一行号保存在Vba 打开工作簿后,将最后一行号另存为变量,以备以后使用,vba,excel,Vba,Excel,我想将特定工作表中使用的最后一行号保存在Workbook\u Open(),以便以后在其他模块中使用。 到目前为止,我有以下代码: 此工作簿: 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
Workbook\u Open()
,以便以后在其他模块中使用。
到目前为止,我有以下代码:
此工作簿:
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”变量存储为public。我做错了什么?提前谢谢 你想做的是个坏主意,绝对不推荐。公共变量在出现错误时重置 每次要使用它时都要重新计算它。你可以用两种方法来做
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
你想做的是个坏主意,绝对不推荐。公共变量在出现错误时重置 每次要使用它时都要重新计算它。你可以用两种方法来做
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
要具体回答您的问题,请按如下方式修改代码:
Sub ABC()
MsgBox ("This is the last row number: " & ThisWorkbook.last_row)
End Sub
若要使用此工作簿模块中声明的公共变量,必须使用模块名对其进行限定
注:
有很多更好的方法来解决你的问题;simpest是-将最后一行号保存到隐藏工作表上的单元格中 要具体回答您的问题,请修改您的代码,如下所示:
Sub ABC()
MsgBox ("This is the last row number: " & ThisWorkbook.last_row)
End Sub
若要使用此工作簿模块中声明的公共变量,必须使用模块名对其进行限定
注:
有很多更好的方法来解决你的问题;simpest是-将最后一行号保存到隐藏工作表上的单元格中 您需要带数据的最后一行还是仅需要最后一行?(1)“它不工作”是一个非常糟糕的错误描述。消息框中的实际输出是什么?您希望得到什么?有错误吗?在哪里?(2) 在使用
单元格
、范围
或行
等时,始终指定工作表。您在行中遗漏了该工作表。计数
哪些工作表应为工作表(“Sheet1”)。行。计数
。不好主意。为什么要将其存储在工作簿\u Open()
中?为什么不实时重新计算呢?目标是什么?@SiddharthRout我这样做是为了在打开工作簿后从最后一行+1
恢复操作。就像我说的,这是个坏主意。如果出现代码错误,公共变量将重置。我建议每次都重新计算它您是需要最后一行数据还是只需要最后一行?(1)“它不工作”是一个非常糟糕的错误描述。消息框中的实际输出是什么?您希望得到什么?有错误吗?在哪里?(2) 在使用单元格
、范围
或行
等时,始终指定工作表。您在行中遗漏了该工作表。计数
哪些工作表应为工作表(“Sheet1”)。行。计数
。不好主意。为什么要将其存储在工作簿\u Open()
中?为什么不实时重新计算呢?目标是什么?@SiddharthRout我这样做是为了在打开工作簿后从最后一行+1
恢复操作。就像我说的,这是个坏主意。如果出现代码错误,公共变量将重置。我建议每次都重新计算好的,我试试这个。谢谢好的,我试试这个。谢谢谢谢你也在写作。我想我还是会使用简单的解决方案。谢谢!你也在写作。我想我还是会使用简单的解决方案。