每次使用不同数量的行和列来运行macros

所以我有一个繁琐的任务,分离/过滤数据,改变格式和制作一个新的表格。

我的问题是,如果我为一张纸logging一个macros,它将工作,另一个记住行数和列数总是会改变。

没有设置的号码,我将不得不手动检查,如果我进入vba并相应地改变了代码。

有几种方法可以获取电子表格中的最后一行/列

Lastrow = ActiveSheet.Range("A" & Activesheet.Rows.Count).End(xlup).row LastCol = ActiveSheet.Cells(1, ActiveSheet.Columns.Count).End(xlToLeft).column 

这将返回A列中的最后一行,您可能需要根据数据的起始位置进行更改。 LastCol将返回一个数字(请注意.Cells.Cells([Row Index], [Column Index]) )。 这是我得到最后一行/列的方式,我觉得它更容易理解,可以做任何需要的操作。


 LastRow = Cells.SpecialCells(xlLastCell).Row LastColumn = Cells.SpecialCells(xlLastCell).Column 

这是获得最后一行/列的另一种方法,这是有问题的,因为Excel以奇怪的方式训练最后一行/列。 如果你编辑最后一行的单元格(在我的例子中是XFD1048576),那么它将变成.SpecialCells(xlLastCell)的最后一个单元格。

让我知道你是否需要任何澄清

取决于你如何logging它。 如果您在录音中使用Ctrl +箭头,您可能是幸运的。 例如,下面的macros在所有行上都可以工作,只需用黄色将它们着色。 独立,无论是4还是4​​00:

 Option Explicit Sub Makro2() ' ' Makro2 Makro ' ' Range("A1").Select Range(Selection, Selection.End(xlDown)).Select With Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .Color = 255 .TintAndShade = 0 .PatternTintAndShade = 0 End With End Sub 

用CTRL +箭头logging,select最后一行。 但是,对于更复杂的代码,您不应使用logging器。

录音会给你一些macros观执行的基本思路。 但是如果你希望代码需要在所有情况下工作,那么你需要为你的代码做一些定制。

要find最后一行,有很多方法。

资料来源: http : //www.vbausefulcodes.in/usefulcodes/finding-last-row-in-excel-vba.php

 sub lastrow() lastrow = Range("A" & Rows.Count).End(xlUp).Row Msgbox lastrow End sub ************************************* Other ways ************************************** Sub FindingLastRow() 'PURPOSE: Different ways to find the last row number of a range Dim sht As Worksheet Dim LastRow As Long Set sht = ThisWorkbook.Worksheets("Sheet1") 'Ctrl + Shift + End LastRow = sht.Cells(sht.Rows.Count, "A").End(xlUp).Row 'Using UsedRange sht.UsedRange 'Refresh UsedRange LastRow = sht.UsedRange.Rows(sht.UsedRange.Rows.Count).Row 'Using Table Range LastRow = sht.ListObjects("Table1").Range.Rows.Count 'Using Named Range LastRow = sht.Range("MyNamedRange").Rows.Count 'Ctrl + Shift + Down (Range should be first cell in data set) LastRow = sht.Range("A1").CurrentRegion.Rows.Count End Sub 

但是您需要使用与您的场景匹配的最佳方法。