Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.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 如何以最有效的方式引用范围?_Excel_Vba - Fatal编程技术网

Excel 如何以最有效的方式引用范围?

Excel 如何以最有效的方式引用范围?,excel,vba,Excel,Vba,我不知道是否已经有了答案,只是我不知道我的代码是否已经完全优化了(我认为没有) 由于我完全致力于自动化公司的工作簿和流程,用户只运行宏,他们不必知道后面发生了什么,也不必看到任何错误消息,因此,我始终将所有范围称为: Workbooks("Book1.xlsx").Sheets("Sheet1").Range("A1:A" & last) 其中工作簿,工作表和范围可以是定义的值或变量。 Last是工作表上使用的最后一行的变量 有没有其他方法可以让我以更短的方式命名范围,或者您知道的其他

我不知道是否已经有了答案,只是我不知道我的代码是否已经完全优化了(我认为没有)

由于我完全致力于自动化公司的工作簿和流程,用户只运行宏,他们不必知道后面发生了什么,也不必看到任何错误消息,因此,我始终将所有范围称为:

Workbooks("Book1.xlsx").Sheets("Sheet1").Range("A1:A" & last)
其中
工作簿
工作表
范围
可以是定义的值或变量。
Last
是工作表上使用的最后一行的变量

有没有其他方法可以让我以更短的方式命名范围,或者您知道的其他方法可以做到这一点?其思想是,宏永远不会引用任何其他工作簿或工作表


提前谢谢。

以下是获取最后一行的一些方法

    Using Find Function 
  LastRow = sht.Cells.Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious).Row

'Using SpecialCells Function
  LastRow = sht.Cells.SpecialCells(xlCellTypeLastCell).Row

'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

您还可以将对象设置为变量,以减少键入,或使用
块。这将有助于显示多行代码-用于对范围的一次性引用,但是如果你的代码更广泛,@ScottCraner建议使用变量引用你的工作表,这将是一个不错的选择。@TimWilliams大多数时候我都使用这种引用,这取决于我是否在使用工作簿、工作表或范围,我直接命名所有内容,并在不选择或激活任何内容的情况下发出命令。很难给出一个具体的代码,因为我有200多个,但是95%的代码都是基于这个共同的结构来引用这3个对象,然后给出指令。如果95%的代码看起来像你发布的那行代码,那么我会说你没有尽可能高效地编写代码。这对你的用户来说可能并不意味着任何真正的不同,但你维护代码的工作肯定会更加困难。所以这就是为什么我要求更有效的方法来做到这一点。。。