如何使用VBA中的macrosselect整个Excel表格?

我在c#中find了类似这个问题的解决scheme…请参阅下面的链接

如何selectc#的Excel.Range对象中的工作表中的所有单元格?

有没有人有一个片段在VBA做到这一点? 我不是很熟悉VBA,所以这会有所帮助。 这是我到目前为止…

我通常使用“Ctrl + Shift + Shift + Shift + Shift +”来select数据的整个范围。 当我在macros中运行这个代码时,例如A1:Q398247930。 我需要它

.SetRange Range("A1:whenever I run out of rows and columns") 

这非常简单,而且我可以在没有macros的情况下轻松完成,但是我正在试图使整个过程成为一个macros,而这只是其中的一部分。

 Sub sort() 'sort Macro Range("B2").Select ActiveWorkbook.Worksheets("Master").sort.SortFields.Clear ActiveWorkbook.Worksheets("Master").sort.SortFields.Add Key:=Range("B2"), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Master").sort .SetRange Range("A1:whenever I run out of rows and columns") .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With End Sub 

编辑:还有其他地方我可能想使用相同的代码,但范围是说“C3:行和列的结束”。 有没有办法在VBA中获取文档中最后一个单元格的位置?

谢谢!

我相信你想findA1和周围细胞的当前区域 – 不一定是在纸上的所有细胞。 如果是这样 – 只需使用… Range(“A1”)。CurrentRegion

您可以简单地使用cells.select来select工作表中的所有单元格。 您可以通过说Range(Cells.Address)来获得一个有效的地址。

如果您想要查找上次Used Range ,并在其中进行了一些格式更改或input了值,则可以调用ActiveSheet.UsedRange并从此处select它。 希望有所帮助

你可以使用所有单元格作为这样的对象:

 Dim x as Range Set x = Worksheets("Sheet name").Cells 

X现在是一个包含整个工作表的范围对象

你在这里有几个select:

  1. 使用UsedRange属性
  2. find最后一个使用的行和列
  3. 使用模仿下移和右移

我个人使用“使用范围”,并在大多数时间查找最后一行和一列的方法。

以下是使用UsedRange属性的方法:

 Sheets("Sheet_Name").UsedRange.Select 

此语句将select工作表中的所有使用的范围,请注意,有时这在删除列和行时效果不佳。

另一种方法是查找工作表中最后使用的单元格

 Dim rngTemp As Range Set rngTemp = Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious) If Not rngTemp Is Nothing Then Range(Cells(1, 1), rngTemp).Select End If 

这段代码在做什么:

  1. find包含任何值的最后一个单元格
  2. select单元格(1,1)直到最后一个单元格

我会build议录制一个macros,就像在这篇文章中find的;

Excel VBAmacros来过滤logging

但是,如果你正在寻找数据的结尾,而不是工作簿的结尾,如果数据的开始和结束之间没有空单元格,我经常使用类似的东西;

 R = 1 Do While Not IsEmpty(Sheets("Sheet1").Cells(R, 1)) R = R + 1 Loop Range("A5:A" & R).Select 'This will give you a specific selection 

数据结束后,您将剩余R =到行的数量。 这也可以用于列,然后你可以使用像单元格(C,R)的东西。select,如果你使C列的表示。

也许这可能工作:

Sh.Range(“A1”,Sh.Range(“A”&Rows.Count).End(xlUp))

提到第一个问题,我正在调查。 我得到的结果,录制一个macros,首先是select单元格A76:

 Sub find_last_row() Range("A76").Select Range(Selection, Selection.End(xlDown)).Select End Sub 
 Sub SelectAllCellsInSheet(SheetName As String) lastCol = Sheets(SheetName).Range("a1").End(xlToRight).Column Lastrow = Sheets(SheetName).Cells(1, 1).End(xlDown).Row Sheets(SheetName).Range("A1", Sheets(SheetName).Cells(Lastrow, lastCol)).Select End Sub 

使用ActiveSheet:

 Call SelectAllCellsInSheet(ActiveSheet.Name)