如何使用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:
- 使用UsedRange属性
- find最后一个使用的行和列
- 使用模仿下移和右移
我个人使用“使用范围”,并在大多数时间查找最后一行和一列的方法。
以下是使用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
这段代码在做什么:
- find包含任何值的最后一个单元格
- 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)