我可以使用变量以 Range("X:X") 格式定义范围吗

Can I use a variable to define a Range in the Range("X:X") format

我目前有一个公式可以检查:

If Intersect(Target, Range("J:L")) Is Nothing Or Target.Cells.Count > 1 Then Exit Sub

我需要 L 是一个变量,范围的第二部分本质上是 J+ 一个偏移量。我在这里使用了 L 并且它可以工作,但是我需要它是动态的,这就是为什么我想用变量替换 L 的原因。

我确实搜索了答案,但我能找到的唯一答案是使用范围格式而不是列格式的单元格引用。

从外观上看,您是在 VBA 函数中使用它,而不是在单元格公式中使用它。在这种情况下,您可以构建一个字符串作为范围的地址。上面的代码变成:

Dim sRangeAddress as String
'Set the Address here
sRangeAddress = "J:L"
If Intersect(Target, Range(sRangeAddress)) Is Nothing Or Target.Cells.Count > 1 Then Exit Sub

编辑添加: 要计算范围的结束字母,您可以创建一个公式来执行此操作:

Dim sRangeAddress as String
Dim iAdditionalColumns as int
dim iManyAdditonalColumns as Int
iAdditionalColumns = 1
sRangeAddress = "J:"
'Set the Address here
'Put conditional for going past Column Z
If (iAdditionalColumns + 74) > 90 Then
    iManyAdditonalColumns  = (iAdditionalColumns - 16) / 26
    iAdditionalColumns  = (iAdditionalColumns - 16) Mod 26
    sRangeAddress = sRangeAddress  + Chr(64 + iManyAdditonalColumns) 
End If  
sRangeAddress = sRangeAddress  + Chr(64 + iAdditionalColumns) 

If Intersect(Target, Range(sRangeAddress)) Is Nothing Or Target.Cells.Count > 1 Then Exit Sub

如果您需要动态的列数,则必须编写代码来确定列数...

如果你想定义一个范围,它是来自列 J 的变量 offset 然后考虑:

Sub dural()
    '
    '   N will be the number of extra columns
    '   so if N=0 we want Range("J:J")
    '   and if N=1 we want Range("J:K")
    '   etc.
    '

    Dim N As Long
    N = 3
    Set r = Range("J:" & Chr(N + 74))
    MsgBox r.Address
End Sub

编辑#1:

如果您需要转到列 Z 之外的列,请改用此列:

Sub dural2_TheSequel()
    '
    '   N will be the number of extra columns
    '   so if N=0 we want Range("J:J")
    '   and if N=1 we want Range("J:K")
    '   etc.
    '

    Dim N As Long
    N = 3
    Ch = Replace(Cells(1, N + 10).Address(0, 0), "1", "")
    Set r = Range("J:" & Ch)
    MsgBox r.Address
End Sub