繁体   English   中英

使用VBA将活动单元地址添加到范围

[英]Using VBA to add active cell address to a range

我正在尝试使用此答案将我自己的一种添加活动单元格地址应用于范围,以便稍后可以选择整个范围以应用条件格式。 下面是我的代码,但是我不确定是什么错误。 它提出了错误“编译错误:类型不匹配”

p / s:我已经在这个特定的单元格集上记录了我的宏,然后对其进行了编辑。

Sub Macro1()

 Dim rng2 As Range

Range("B3").Select
Set rng2 = Union(rng2, ActiveCell.Address)
Range("D3").Select
Set rng2 = Union(rng2, ActiveCell.Address)
Range("F3").Select
Set rng2 = Union(rng2, ActiveCell.Address)
Range("H3").Select
Set rng2 = Union(rng2, ActiveCell.Address)
Range("J3").Select
Set rng2 = Union(rng2, ActiveCell.Address)
Range("L3").Select
Set rng2 = Union(rng2, ActiveCell.Address)
Range("N3").Select
Set rng2 = Union(rng2, ActiveCell.Address)
Range("P3").Select
Set rng2 = Union(rng2, ActiveCell.Address)
Range("R3").Select
Set rng2 = Union(rng2, ActiveCell.Address)
Range("R7").Select
Set rng2 = Union(rng2, ActiveCell.Address)
Range("P7").Select
Set rng2 = Union(rng2, ActiveCell.Address)
Range("N7").Select
Set rng2 = Union(rng2, ActiveCell.Address)
Range("L7").Select
Set rng2 = Union(rng2, ActiveCell.Address)
Range("J7").Select
Set rng2 = Union(rng2, ActiveCell.Address)
Range("H7").Select
Set rng2 = Union(rng2, ActiveCell.Address)
Range("F7").Select
Set rng2 = Union(rng2, ActiveCell.Address)
Range("D7").Select
Set rng2 = Union(rng2, ActiveCell.Address)
Range("B7").Select
Set rng2 = Union(rng2, ActiveCell.Address)
Range("B11").Select
Set rng2 = Union(rng2, ActiveCell.Address)
Range("D11").Select
Set rng2 = Union(rng2, ActiveCell.Address)
Range("F11").Select
Set rng2 = Union(rng2, ActiveCell.Address)
Range("J11").Select
Set rng2 = Union(rng2, ActiveCell.Address)



Range(rng2).Select
End Sub
  1. 您的第一个Set rng2 = Union(rng2, ActiveCell.Address)应该Set rng2 = ActiveCell 在将它设置为某对象之前,您无法将其合并为空对象,并且rng2为空,因此它不能成为合并语句的一部分。
  2. 随后的每个Set rng2 = Union(rng2, ActiveCell.Address)应该Set rng2 = Union(rng2, ActiveCell) 您不能联合到范围对象的字符串地址。 您必须合并到范围对象。
  3. rng2现在是有效的范围对象,不需要进一步定义。 Range(rng2).Select无效; 只需使用rng2.Select

出于所有意图和目的,您可能刚刚说过,

Range("B3, D3, F3, H3, J3, L3, N3, P3, R3, R7, P7, N7, L7, J7, H7, F7, D7, B7, B11, D11, F11, J11").Select

您在评论中提到,由于空间限制,您切断了代码。 考虑以下循环。

dim i as long, rng2 as range

Set rng2 = Range("B3, D3, F3, H3, J3, L3, N3, P3, R3")

For i = 7 To 23 Step 4
    Set rng2 = Union(rng2, Intersect(rng2.EntireColumn, Rows(i)))
Next i

rng2.select
rng2.interior.color = vbred
Debug.Print rng2.Address(0, 0)
'B3,D3,F3,H3,J3,L3,N3,P3,R3,B7,D7,F7,H7,J7,L7,N7,P7,R7,B11,D11,F11,H11,J11,L11,N11,P11,R11,B15,D15,F15,H15,J15,L15,N15,P15,R15,B19,D19,F19,H19,J19,L19,N19,P19,R19,B23,D23,F23,H23,J23,L23,N23,P23,R23

debug.print消息转到VBE的即时窗口

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM