【发布时间】:2022-01-12 23:31:40
【问题描述】:
我的 vba 代码要求我向右移动 18 个单元格。 由于我经常使用“Selection.offset(0,18)”,所以我决定变成一个变量。 但每次我使用“MoveEighteen.select”时,它都会向右移动大约 50 个单元格。这只发生在 IF 语句之后。第一个 MoveEighteen 运行良好。
Dim AnchorDate As Range
Dim CompareDate As Range
Dim MoveEighteen As Range
Set AnchorDate = Range("b2")
Set MoveEighteen = Selection.Offset(0, 18)
Range("B2").FormulaR1C1 = "=int(NOW())"
Range("B2").Copy
Range("B2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("B5").Select
If Selection = AnchorDate Then
MoveEighteen.Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveCell.Offset(1, -3).Select`
Do Until Selection <> AnchorDate
MoveEighteen.Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'go tonext date
ActiveCell.Offset(1, -3).Select
Loop
Else: Selection.Select
Else: Selection.Select
If Selection < AnchorDate Then
Do Until Selection = AnchorDate
Selection.Offset(1, 0).Select
Loop
End If
If Selection = AnchorDate Then
MoveEighteen.Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False`
【问题讨论】:
-
Set MoveEighteen = Selection.Offset(0, 18)- 这只会运行 一次,所以你的MoveEighteen将始终是相同的范围。修复代码的最佳选择是不使用 Select/Activate。 stackoverflow.com/questions/10714251/…