我尝试使用2个不同的变量来选择范围。我知道如何使用1变量ActiveSheet.Range("$A$1:$S" & k)
来完成它,但我想让范围从$ A& j到$ S&我和我不确定正确的语法。
答案 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项。
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)它不使用剪贴板