我正在编写一个宏来更新表单中的关键单元,然后将数据写到第二张表中的表中。为此,我使用For i = 1到LR进行匹配,然后在找到匹配项的情况下将行号写入变量。
但是找到最后一行的代码,因此循环的长度无法按预期工作。
Dim LR as Long
LR = Cells(Workbooks("Tracking Sheet.xlsx").Sheets("Sheet1").Rows.Count, "A").End(xlUp).Row
Debug.Print LR
我尝试预先填充少于25个和大于25个(例如38个),但是LR变量在即时窗口中始终显示25。在即时窗口中,
?Cells(Workbooks("Tracking Sheet.xlsx").Sheets("Sheet1").Rows.Count, "A").End(xlUp).Row
应该返回38。
LR = Cells(Workbooks("Tracking Sheet.xlsx").Sheets("Sheet1").Rows.Count, "A").End(xlUp).Row
?LR
还返回38
我就是不明白...
答案 0 :(得分:2)
尝试一下:
Dim LR As Long
With Application.Workbooks("Tracking Sheet.xlsx").Worksheets("Sheet1")
LR = .Range("A" & .Rows.Count).End(xlUp).Row
End With
答案 1 :(得分:0)
也许解释的代码会有所帮助?
LRow = ThisWorkbook.Sheets(1).Cells(ThisWorkbook.Sheets(1).Rows.Count, "A").End(xlUp).Row
让我们分解一下这段代码。首先,我们将其放在With
语句中,以节省一些输入
With ThisWorkbook.Sheets(1)
LRow = .Cells(.Rows.Count, "A").End(xlUp).Row
End With
让我们分解成碎片。首先,有.Cells(.Rows.Count, "A")
这是对单个单元格的引用。具体来说,ThisWorkbook.Sheets(1)
的A列中的最后一行。 Rows.Count
给出Excel工作表中的最后一行。最新的Excel版本支持1,048,576行,例如Excel 97仅支持65536行。
简而言之,.Cells(.Rows.Count, "A")
适用于等于(A1048576)的最新excel版本
然后End(xlUp)
。此操作与按住CTRL并按键盘上的向上箭头按钮相同。这样会将Excel带到底部的第一行。
最后.Row
,它返回找到的该单元格的行号。
您也可以从顶部开始寻找。尝试按住CTRL,然后按向下箭头按钮。这将在最后一个非空单元格处停止。但是,当填充的单元格之间有空白单元格时,它也会停止。因此,并非总是首选方法。代码是
With ThisWorkbook.Sheets(1)
LRow = .Cells(1, "A").End(xlDown).Row
End With