我想选择Excel工作表的格式化范围。 要定义最后一行和第一行,我使用以下函数:
lastColumn = ActiveSheet.UsedRange.Column - 1 + ActiveSheet.UsedRange.Columns.Count
lastRow = ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.Count).Row
在下一步中,我想选择这个区域: 公式应如下所示:
Range(cells(1, 1), cells(lastRow, lastColumn).Select
但是,这不起作用。也许有人知道它有什么问题。非常感谢!
答案 0 :(得分:28)
我录制了一个带有'Relative References'的宏,这就是我得到的:
Range("F10").Select
ActiveCell.Offset(0, 3).Range("A1:D11").Select
下面是我的想法:如果范围选择在引号中,VBA确实需要一个STRING并解释其中的单元格,所以尝试了以下内容:
Dim MyRange as String
MyRange = "A1:D11"
Range(MyRange).Select
它工作正常:)即..只需使用您的变量创建一个字符串,确保将其标注为STRING变量,Excel将立即读取它;)
经过测试并找到了工作:
Sub Macro04()
Dim Copyrange As String
Startrow = 1
Lastrow = 11
Let Copyrange = "A" & Startrow & ":" & "D" & Lastrow
Range(Copyrange).Select
End Sub
答案 1 :(得分:8)
我碰到了类似的东西 - 我想根据一些变量创建一个范围。使用Worksheet.Cells没有直接工作,因为我认为单元格的值被传递给Range。
这确实有效:
Range(Cells(1, 1).Address(), Cells(lastRow, lastColumn).Address()).Select
负责将单元格的数字位置转换为Range期望的格式。
答案 2 :(得分:7)
如果您只想选择使用的范围,请使用
ActiveSheet.UsedRange.Select
如果要从A1中选择到使用范围的末尾,可以像这样使用SpecialCells方法
With ActiveSheet
.Range(.Cells(1, 1), .Cells.SpecialCells(xlCellTypeLastCell)).Select
End With
有时Excel会对最后一个单元格感到困惑。它的范围从不小于实际使用的范围,但如果删除某些单元格,它可能会更大。为避免这种情况,您可以使用查找和星号通配符来查找真实的最后一个单元格。
Dim rLastCell As Range
With Sheet1
Set rLastCell = .Cells.Find("*", .Cells(1, 1), xlValues, xlPart, , xlPrevious)
.Range(.Cells(1, 1), rLastCell).Select
End With
最后,请确保您只选择是否真的需要。您需要在Excel VBA中执行的大部分工作都可以直接执行到Range,而不是先选择它。而不是
.Range(.Cells(1, 1), rLastCell).Select
Selection.Font.Bold = True
你可以
.Range(.Cells(1,1), rLastCells).Font.Bold = True
答案 3 :(得分:4)
你错过了一个紧密的括号,I.E。你没有关闭Range()
。
试试这个Range(cells(1, 1), cells(lastRow, lastColumn)).Select
但你应该看看Dick Kusleika的另一个答案,寻找可能更好的替代方案。具体而言,ActiveSheet.UsedRange.Select
与您的代码具有相同的最终结果。
答案 4 :(得分:1)
你正在将它们变成一个地址,但是单元格(#,#)使用整数输入而不是地址输入,所以只需使用lastRow = ActiveSheet.UsedRange.Rows.count
和lastColumn = ActiveSheet.UsedRange.Columns.Count
答案 5 :(得分:1)
我尝试使用:
Range(cells(1, 1), cells(lastRow, lastColumn)).Select
其中lastRow
和lastColumn
是整数,但收到运行时错误1004.我使用较旧的VB(6.5)。
使用以下内容的工作是什么:
Range(Chr(64 + firstColumn) & firstRow & ":" & Chr(64 + lastColumn) & firstColumn).Select.