VBA Cell位置参考,包含2个变量

时间:2018-02-14 23:31:45

标签: vba excel-vba excel

我尝试使用2个不同的变量来选择范围。我知道如何使用1变量ActiveSheet.Range("$A$1:$S" & k)来完成它,但我想让范围从$ A& j到$ S&我和我不确定正确的语法。

3 个答案:

答案 0 :(得分:3)

或者你可以使用'细胞'用数字代替usung字母和连接:

Sub SelectRangeUsingCells()
Dim j As Long, k As Long
Dim ws As Worksheet
  Set ws = ActiveSheet   'ws will be active worksheet
  j = 2                  'example 2. row
  k = 5                  'example 5. row

  With ws
    .Range(.Cells(j, 1), .Cells(k, 19)).Select  'selection of range
  End With
End Sub

答案 1 :(得分:1)

地址只是一个连接在一起的字符串:

"A" & j & ":S" & k

所以

ActiveSheet.Range("A" & j & ":S" & k)

答案 2 :(得分:0)

有很多方法可以做你想做的事。我们假设你想从下面的例子中选择第5,6和7项。

ex1

Public Sub TableSelectionDemo()

    Dim r As Range
    Dim i As Long, j As Long
    i = 5: j = 7 ' Range of rows for selection

    Set r = Range("E" & i + 7 & ":H" & j + 7)
    Debug.Print r.Address

    Set r = Range(Range("E8").Cells(i, 1), Range("H8").Cells(j, 1))
    Debug.Print r.Address

    Set r = Range("E7").Offset(i, 0).Resize(j - i + 1, 4)
    Debug.Print r.Address


End Sub

所有三种方式都产生相同的范围地址:$E$12:$H$14

现在考虑使用此范围可以做些什么。考虑在内存中创建一个数组,并使用数组操作访问该范围的内容。例如:

Dim vals() As Variant
vals = r.Value      ' Read table values into memory

Dim total_cost As Single
total_cost = 0!

For i = 1 To r.Rows.Count
    ' Multiply 3rd column with 4th column
    total_cost = total_cost + vals(i, 3) * vals(i, 4)
Next i

Debug.Print "Total Cost=" & total_cost

这种类型的操作非常快,因为,a)它使用浮点数学,b)它不会从字符串转换为值和返回,c)它不更新屏幕和d)它不使用剪贴板