使用vba中的列号创建excel范围?

mez*_*hic 45 excel vba

如何使用列号而不是字母在vba中创建范围?

dee*_*dee 59

要引用单元格范围,您可以使用Range(Cell1,Cell2),示例:

Sub RangeTest()
  Dim testRange As Range
  Dim targetWorksheet As Worksheet

  Set targetWorksheet = Worksheets("MySheetName")

  With targetWorksheet
    .Cells(5, 10).Select 'selects cell J5 on targetWorksheet
    Set testRange = .Range(.Cells(5, 5), .Cells(10, 10))
  End With

  testRange.Select 'selects range of cells E5:J10 on targetWorksheet

End Sub
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


Cus*_*omX 34

以下是选择范围A1的两种解决方案.

Cells(1,1).Select '(row 1, column 1) 
Range("A1").Select
Run Code Online (Sandbox Code Playgroud)

另请查看此链接;

我们强烈建议您使用Range而不是Cells来处理细胞和细胞组.它使你的句子更清晰,你不必被记住,列AE是第31栏.

只有当您想要选择工作表的所有单元格时,才能使用单元格.例如:Cells.Select要选择所有单元格,然后清空您将使用的值或公式的所有单元格:Cells.ClearContents

-

"单元格"在动态设置范围并使用计数器循环遍历范围时特别有用.使用字母作为列号定义范围在短期内可能更透明,但它也会使您的应用程序更加严格,因为它们是"硬编码"表示 - 而非动态.

感谢Kim Gysen

  • 请注意,您也可以使用`Cells(1,"A")` (20认同)
  • "单元格"在动态设置范围并使用计数器循环遍历范围时特别有用.使用字母作为列号定义范围在短期内可能更透明,但它也会使您的应用程序更加严格,因为它们是"硬编码"表示 - 而非动态. (7认同)

Jam*_*bes 7

Range.EntireColumn

是! 您可以使用Range.EntireColumn MSDN

dim column : column = 4

dim column_range : set column_range = Sheets(1).Cells(column).EntireColumn
Run Code Online (Sandbox Code Playgroud)

范围( "的ColumnName为:ColumnName")

如果您在特定列之后,可以使用语法创建硬编码列范围Range("D:D").

但是,我使用整列,因为它可以更灵活地在以后更改该列.

Worksheet.Columns

Worksheet.Columns提供对工作表中列的Range访问权限. MSDN

如果您想访问第一张表的第一列.您可以Columns在工作表上调用该函数.

dim column_range: set column_range = Sheets(1).Columns(1)
Run Code Online (Sandbox Code Playgroud)

Columns属性也可在任何Range MSDN上使用

EntireRow 如果您有一个单个单元格的范围但想要到达该行上的其他单元格,也可能很有用,类似于 LOOKUP

dim id : id = 12345


dim found : set found = Range("A:A").Find(id)

if not found is Nothing then
    'Get the fourth cell from the match
    MsgBox found.EntireRow.Cells(4)
end if
Run Code Online (Sandbox Code Playgroud)


Dar*_*rin 6

更新的答案:
此版本的 ColumnNumToStr 比原始答案更加简洁,并测试了从“A”(值 1)到“XFD”(值 16383)的所有列。

Public Function ColumnNumToStr(ColNum As Integer) As String
    Dim Rtn As String: Rtn = ""
    Dim Value As Integer: Value = ColNum - 1
    While Value >= 0
        Rtn = Chr(65 + (Value Mod 26)) & Rtn
        Value = Fix(Value / 26) - 1
    Wend
    ColumnNumToStr = Rtn
End Function
Run Code Online (Sandbox Code Playgroud)

原始答案:
这是 ConvertToLetter 函数的精简替换,理论上应该适用于所有可能的正整数。例如,1412 生成“BBH”作为结果。

Public Function ColumnNumToStr(ColNum As Integer) As String
Dim Value As Integer
Dim Rtn As String
    Rtn = ""
    Value = ColNum - 1
    While Value > 25
        Rtn = Chr(65 + (Value Mod 26)) & Rtn
        Value = Fix(Value / 26) - 1
    Wend
    Rtn = Chr(65 + Value) & Rtn
    ColumnNumToStr = Rtn
End Function
Run Code Online (Sandbox Code Playgroud)