我有下面的代码可以工作,但在其当前格式中它给出了运行时错误' 1004。我确信这是因为我设定的范围很长。如果我缩短它,它会起作用。怎么能这样做? 我见过类似的问题,但没有回答我的特殊要求。
我想在L列上运行它,然后在每个第7列运行它。
Dim A As Range, B As Range, Inte As Range, r As Range
Set A = Range("L:L,S:S,Z:Z,AG:AG,AN:AN,AU:AU,BB:BB,BI:BI,BP:BP,BW:BW,CD:CD,CK:CK,CR:CR,CY:CY,DF:DF,DM:DM,DT:DT,EA:EA,EH:EH,EO:EO,EV:EV,FC:FC,FJ:FJ,FQ:FQ,FX:FX,GE:GE,GL:GL,GS:GS,GZ:GZ,HG:HG,HN:HN,HU:HU,IB:IB,II:II,IP:IP,IW:IW,JD:JD,JK:JK,JR:JR,JY:JY,KF:KF,KM:KM,KT:KT,LA:LA,LH:LH,IP:IP,IW:IW,JD:JD,JK:JK,JR:JR,JY:JY,KF:KF,KM:KM,KT:KT,LA:LA,LH:LH")
Set Inte = Intersect(A, Target)
If Inte Is Nothing Then Exit Sub
Application.EnableEvents = False
For Each r In Inte
If r.Offset(0, -1).Value = "" Then
r.Offset(0, -1).Value = Now()
End If
Next r
Application.EnableEvents = True
第一次问一个问题,但这个网站给了我很多帮助。 任何帮助表示赞赏
答案 0 :(得分:3)
使用Union将设置A拆分为多个操作。
Set A = Range("L:L,S:S,Z:Z,AG:AG,AN:AN,AU:AU,BB:BB,BI:BI,BP:BP,BW:BW")
Set A = Union(A, Range("CD:CD,CK:CK,CR:CR,CY:CY,DF:DF,DM:DM,DT:DT,EA:EA,EH:EH,EO:EO,EV:EV"))
Set A = Union(A, Range("FC:FC,FJ:FJ,FQ:FQ,FX:FX,GE:GE,GL:GL,GS:GS,GZ:GZ,HG:HG,HN:HN,HU:HU,IB:IB,II:II"))
Set A = Union(A, Range("IP:IP,IW:IW,JD:JD,JK:JK,JR:JR,JY:JY,KF:KF,KM:KM,KT:KT,LA:LA,LH:LH,IP:IP,IW:IW"))
Set A = Union(A, Range("JD:JD,JK:JK,JR:JR,JY:JY,KF:KF,KM:KM,KT:KT,LA:LA,LH:LH"))
如果交错是一致的,可能更容易找到Target的列。
for each r in target
if r.column > 11 and (r.column mod 7) = 5 then
If r.Offset(0, -1).Value = "" Then
r.Offset(0, -1).Value = Now()
End If
end if
next r