Excel VBA计算每个工作表的最后一行,用不同的名称存储值
我需要计算excel工作簿中每个工作表的最后一行,实际上我是通过以下代码行来计算的:Excel VBA计算每个工作表的最后一行,用不同的名称存储值,vba,excel,for-loop,Vba,Excel,For Loop,我需要计算excel工作簿中每个工作表的最后一行,实际上我是通过以下代码行来计算的: With Sheets("Sheetname") If Application.WorksheetFunction.CountA(.Cells) <> 0 Then LastRow = .Cells.Find(What:="*", _ After:=.Range("A1"), _ Lookat:=xlPart, _
With Sheets("Sheetname")
If Application.WorksheetFunction.CountA(.Cells) <> 0 Then
LastRow = .Cells.Find(What:="*", _
After:=.Range("A1"), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row
Else
LastRow = 1
End If
End With
带图纸(“图纸名称”)
如果Application.WorksheetFunction.CountA(.Cells)为0,则
LastRow=.Cells.Find(内容:=“*”_
之后:=.范围(“A1”)_
看:=xlPart_
LookIn:=xl公式_
搜索顺序:=xlByRows_
搜索方向:=xlPrevious_
MatchCase:=False)。行
其他的
LastRow=1
如果结束
以
是否可以在每个工作表上循环并每次使用不同的名称存储LastRow值?我需要将它们分别存储在我的宏中。您可以像这样循环浏览工作表:
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
'do something
Next ws
您可以使用Scripting.Dictionary以
ws.Name
作为键和.Cells.Find
作为值来存储您的值。将代码放在“执行某事”注释所在的位置。您可以像这样循环浏览工作表:
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
'do something
Next ws
您可以使用Scripting.Dictionary以
ws.Name
作为键和.Cells.Find
作为值来存储您的值。将代码放在“执行某事”注释所在的位置。使用集合、字典或数组存储信息。我会使用表名为键、最后一行为值的字典。使用集合、字典或数组来存储信息。我会使用工作表名称作为键,最后一行作为值的字典。我不需要计算工作表是否为空,我希望避免使用。UsedRange
,因为有时它无法计算工作表中的实际最后一行。我是否必须将键和值添加到for循环中的字典中?正如您所建议的,在循环结束后再做似乎更好。@AleB抱歉,没有正确阅读问题。你必须在循环中添加项目。没问题,你的回答对我有帮助。不幸的是,原来for循环不适合我在这种情况下应该做的事情,因为一个工作表在开始时没有填写,并且字典中的一个值结果是错误的。为了解决这个问题,我可能需要避免循环,并单独计算“LastRowValue”。我不需要计算工作表是否为空,我希望避免使用。UsedRange
,因为有时它无法计算工作表中的实际最后一行。我是否必须将键和值添加到for循环中的字典中?正如您所建议的,在循环结束后再做似乎更好。@AleB抱歉,没有正确阅读问题。你必须在循环中添加项目。没问题,你的回答对我有帮助。不幸的是,原来for循环不适合我在这种情况下应该做的事情,因为一个工作表在开始时没有填写,并且字典中的一个值结果是错误的。为了解决这个问题,我可能需要避免循环,并单独计算“LastRowValue”。