Excel VBA 命名范围
Excel VBA Named Range
我运行一个vba代码如下:
暗淡分数为整数
SolverReset
score = Range("N3").Value
If score = 1 Then
SolverLoad loadArea:=Range("N4:N11")
SolverSolve UserFinish:=True
SolverFinish KeepFinal:=1
SolverReset
SolverLoad loadArea:=Range("O4:O14")
SolverSolve UserFinish:=True
SolverFinish KeepFinal:=1
SolverReset
Else:
SolverReset
SolverLoad loadArea:=Range("P4:P15")
SolverSolve UserFinish:=True
SolverFinish KeepFinal:=1
End If
SolverReset
score = Range("N48").Value
If score = 1 Then
SolverLoad loadArea:=Range("N49:N56")
SolverSolve UserFinish:=True
SolverFinish KeepFinal:=1
SolverReset
SolverLoad loadArea:=Range("O49:O59")
SolverSolve UserFinish:=True
SolverFinish KeepFinal:=1
SolverReset
Else:
SolverReset
SolverLoad loadArea:=Range("P49:P60")
SolverSolve UserFinish:=True
SolverFinish KeepFinal:=1
End If
如您所见,代码的前半部分再次重复。范围从N3变为N48,N4变为N49等。
现在我必须重复整个代码 172 次迭代,只更改范围部分,即对求解器位置的单元格引用。
有什么方法可以通过每次迭代后更改引用来使用 for 循环重复该过程 172 次。
所有引用每次迭代增加+45,可见
试试这个。我很可能有一些数字,但希望你明白了
Sub x()
Dim score As Long, r As Range, i As Long
Set r = Range("N3")
For i = 1 To 172
SolverReset
score = r.Value
If score = 1 Then
SolverLoad loadArea:=r.Offset(1).Resize(8)
SolverSolve UserFinish:=True
SolverFinish KeepFinal:=1
SolverReset
SolverLoad loadArea:=r.Offset(1, 1).Resize(11)
SolverSolve UserFinish:=True
SolverFinish KeepFinal:=1
SolverReset
Else:
SolverReset
SolverLoad loadArea:=r.Offset(1, 2).Resize(12)
SolverSolve UserFinish:=True
SolverFinish KeepFinal:=1
End If
Set r = r.Offset(45)
Next i
End Sub
我运行一个vba代码如下:
暗淡分数为整数
SolverReset
score = Range("N3").Value
If score = 1 Then
SolverLoad loadArea:=Range("N4:N11")
SolverSolve UserFinish:=True
SolverFinish KeepFinal:=1
SolverReset
SolverLoad loadArea:=Range("O4:O14")
SolverSolve UserFinish:=True
SolverFinish KeepFinal:=1
SolverReset
Else:
SolverReset
SolverLoad loadArea:=Range("P4:P15")
SolverSolve UserFinish:=True
SolverFinish KeepFinal:=1
End If
SolverReset
score = Range("N48").Value
If score = 1 Then
SolverLoad loadArea:=Range("N49:N56")
SolverSolve UserFinish:=True
SolverFinish KeepFinal:=1
SolverReset
SolverLoad loadArea:=Range("O49:O59")
SolverSolve UserFinish:=True
SolverFinish KeepFinal:=1
SolverReset
Else:
SolverReset
SolverLoad loadArea:=Range("P49:P60")
SolverSolve UserFinish:=True
SolverFinish KeepFinal:=1
End If
如您所见,代码的前半部分再次重复。范围从N3变为N48,N4变为N49等。
现在我必须重复整个代码 172 次迭代,只更改范围部分,即对求解器位置的单元格引用。
有什么方法可以通过每次迭代后更改引用来使用 for 循环重复该过程 172 次。
所有引用每次迭代增加+45,可见
试试这个。我很可能有一些数字,但希望你明白了
Sub x()
Dim score As Long, r As Range, i As Long
Set r = Range("N3")
For i = 1 To 172
SolverReset
score = r.Value
If score = 1 Then
SolverLoad loadArea:=r.Offset(1).Resize(8)
SolverSolve UserFinish:=True
SolverFinish KeepFinal:=1
SolverReset
SolverLoad loadArea:=r.Offset(1, 1).Resize(11)
SolverSolve UserFinish:=True
SolverFinish KeepFinal:=1
SolverReset
Else:
SolverReset
SolverLoad loadArea:=r.Offset(1, 2).Resize(12)
SolverSolve UserFinish:=True
SolverFinish KeepFinal:=1
End If
Set r = r.Offset(45)
Next i
End Sub