Excel 动态计算最后一行并在VBA中的宏中重用它
在我的宏中,每当我重复一个循环,表就会变大。 我必须动态计算最后一行的值(它随着循环的每次重复而变化)。有人知道这是怎么回事吗 这是我想去的最后一排Excel 动态计算最后一行并在VBA中的宏中重用它,excel,vba,count,dynamically-generated,Excel,Vba,Count,Dynamically Generated,在我的宏中,每当我重复一个循环,表就会变大。 我必须动态计算最后一行的值(它随着循环的每次重复而变化)。有人知道这是怎么回事吗 这是我想去的最后一排 LastRowITR = .Cells(Rows.Count, 2).End(xlUp).Row 这是我代码的主要部分 'first row number where you need to paste values in Tabelle3' With Worksheets("Tabelle3") j = .Cells(.Rows.Cou
LastRowITR = .Cells(Rows.Count, 2).End(xlUp).Row
这是我代码的主要部分
'first row number where you need to paste values in Tabelle3'
With Worksheets("Tabelle3")
j = .Cells(.Rows.Count, 2).End(xlUp).Row
End With
'Remove any pre-existing outlining on worksheet, or you're gonna have 99 problems and an outline ain't 1'
Cells.ClearOutline
For i = 1 To LastRow
With Worksheets("BalanceSheet")
If .Cells(i, 1).Value = "" Then
MsgBox "finished"
Else
.Range("B" & i).Copy Destination:=Worksheets("Tabelle3").Range("B" & j)
'Kopiert Zeile aus altem Sheet ins neue'
'Immer ganzes Blatt sollte noch durch Range ersetzt werden'
X = HypRetrieve(Tabelle3)
'Zoomt auf alle Level in neue Zeile'
X = HypZoomIn(Tabelle3, Range("B" & j), 1, False)
'LastRowITR ist das letzte eingefügte Level'
StartRowITR = j
LastRowITR = .Cells(Rows.Count, 2).End(xlUp).Row
With Worksheets("Tabelle3")
For a = StartRowITR To LastRowITR
Rows(a).Select
Level = Cells(a, 2).IndentLevel
For b = 1 To Level - 1
Selection.Rows.Group
Next b
Next a
j = LastRowITR + 1
End With
End If
End With
Next i
End Sub
这是我计算最后一行的方式,第一次它工作得非常好。但不要在宏中重复更改值。每次最后一行更改位置后,应立即更新最后一行 一个简短而明确的例子:
With Sheet1
LRow = .Cells(.Rows.Count, "B").End(xlUp).Row
For i = 1 To 1000
If Left(.Cells(i,"A"), 1) = "T" Then
.Cells(LRow, "B").Value = .Cells(i, "A").Value
LRow = .Cells(.Rows.Count, "B").End(xlUp).Row
''Or in case the last row always moves one position down:
''LRow = LRow + 1
End If
Next i
End With
应在每次最后一行更改位置后立即更新最后一行 一个简短而明确的例子:
With Sheet1
LRow = .Cells(.Rows.Count, "B").End(xlUp).Row
For i = 1 To 1000
If Left(.Cells(i,"A"), 1) = "T" Then
.Cells(LRow, "B").Value = .Cells(i, "A").Value
LRow = .Cells(.Rows.Count, "B").End(xlUp).Row
''Or in case the last row always moves one position down:
''LRow = LRow + 1
End If
Next i
End With
嘿伙计们我发现问题了 蒂姆·斯塔克的回答让我想到了这个主意。 问题是我的代码在错误的工作表上计算行数,所以我所要做的就是在我的行数代码周围添加这个
With Worksheets("Tabelle3")
End with
嘿伙计们我发现问题了 蒂姆·斯塔克的回答让我想到了这个主意。 问题是我的代码在错误的工作表上计算行数,所以我所要做的就是在我的行数代码周围添加这个
With Worksheets("Tabelle3")
End with
有了这么多代码,我们只能猜测宏中发生了什么。你能提供一个吗?把这行放在循环中,它应该得到最新的行值完成,这行在一个循环中,这就是我需要帮助的原因:(@kingradi)你可能会从阅读中受益。并引用你所有的
范围
,行
,单元格
etw和一张工作表!比如工作表(“SheetName”).Range()
或确保他们以点开始.Range
以确保他们使用with
语句。实际上,你的最后一个与工作表(“表3”)一起使用
完全不使用usless,因为里面的语句都不是以点开头的
,所以根本不用with
。有了这么多的代码,我们只能猜测宏中发生了什么。你能提供一个吗?把这行放在循环中,它应该得到最新的行值Done,这行在循环中,这就是我需要帮助的原因:(@kingradi)你可能会从阅读中受益。并用一张工作表引用你所有的范围
,行
,单元格
!比如工作表(“SheetName”).Range()
或确保它们以点开始。Range
确保它们使用with
语句。•实际上,你最后的工作表(“Tabelle3”)
是完全不用的,因为里面的语句都不是以点开头的,所以根本不使用带的。