Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA计算每个工作表的最后一行,用不同的名称存储值_Vba_Excel_For Loop - Fatal编程技术网

Excel VBA计算每个工作表的最后一行,用不同的名称存储值

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, _

我需要计算excel工作簿中每个工作表的最后一行,实际上我是通过以下代码行来计算的:

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”。