Excel VBA命名范围

我正在运行一个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到N48N4到N49等等。

现在我必须不断地重复整个代码172次迭代,只改变单元格的引用到解算器位置的范围部分。

有什么办法,我可以重复172次使用for循环的过程如何改变每次迭代后的引用。

所有引用每次迭代增加+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