VBA:由变量选择范围(VBA: Selecting range by variables)

2019-06-27 14:51发布

我想选择一个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

但是,这是行不通的。 也许有人有一个想法有什么不对的地方。 非常感谢!

Answer 1:

我录一个宏用“相对引用”,这是我得到了什么:

Range("F10").Select
ActiveCell.Offset(0, 3).Range("A1:D11").Select

下面有什么,我想:如果选择范围是在引号,VBA真正想要的字符串,并解释细胞出这么尝试了以下内容:

Dim MyRange as String
MyRange = "A1:D11"
Range(MyRange).Select

和它的工作:)即..用你的变量只是创建一个字符串,请务必标注它作为一个字符串变量和Excel将读取正确的关闭它;)

继测试,发现工作:

Sub Macro04()

Dim Copyrange As String

Startrow = 1
Lastrow = 11
Let Copyrange = "A" & Startrow & ":" & "D" & Lastrow
Range(Copyrange).Select
End Sub


Answer 2:

我遇到了类似的东西 - 我想创建基于一些变量的范围。 自从使用我认为细胞的价值观传递给范围Worksheet.Cells没有直接工作。

这没有工作,但:

Range(Cells(1, 1).Address(), Cells(lastRow, lastColumn).Address()).Select

这花了转化细胞的数值位置,以什么范围的预期,这是A1幅面的照顾。



Answer 3:

如果你只是想选择的使用范围,使用

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(.Cells(1, 1), rLastCell).Select
Selection.Font.Bold = True

您可以

.Range(.Cells(1,1), rLastCells).Font.Bold = True


Answer 4:

你缺少一个右括号,你的IE不关闭Range()

试试这个Range(cells(1, 1), cells(lastRow, lastColumn)).Select

但是,你真的应该看看从迪克Kusleika其他答案可能更好地为你可能的选择。 具体来说, ActiveSheet.UsedRange.Select具有相同的最终结果你的代码。



Answer 5:

你是把它们变成一个地址,但细胞(#,#)使用整数投入没有地址输入因此就使用lastRow = ActiveSheet.UsedRange.Rows.countlastColumn = ActiveSheet.UsedRange.Columns.Count



Answer 6:

我试着使用:

Range(cells(1, 1), cells(lastRow, lastColumn)).Select 

其中lastRowlastColumn是整数,但收到运行时错误1004我使用的是旧VB(6.5)。

什么做的工作是使用以下命令:

Range(Chr(64 + firstColumn) & firstRow & ":" & Chr(64 + lastColumn) & firstColumn).Select.  


文章来源: VBA: Selecting range by variables