Как сказал @GSerg, вы ввели Next k
не в том месте. И так много ifs может быть возобновлено с помощью оператора Select Case...End Select
.
Dim i As Integer, j As Integer, k As Integer
Dim colref1 As String, colref2 As String, colref3 As String
For i = 13 To 134
Do While IsInArray(Worksheets(i).Name, arrBingol)
For j = 131 To 144 Step 1
If j = 136 Then
Else
For k = 2 To 13
Select Case k
Case 2: colref1 = "A": colref2 = "E": colref3 = "B"
Case 3: colref1 = "B": colref2 = "F": colref3 = "C"
Case 4: colref1 = "C": colref2 = "G": colref3 = "D"
Case 5: colref1 = "D": colref2 = "H": colref3 = "E"
Case 6: colref1 = "E": colref2 = "I": colref3 = "F"
Case 7: colref1 = "F": colref2 = "J": colref3 = "G"
Case 8: colref1 = "G": colref2 = "K": colref3 = "H"
Case 9: colref1 = "H": colref2 = "L": colref3 = "I"
Case 10: colref1 = "I": colref2 = "M": colref3 = "J"
Case 11: colref1 = "J": colref2 = "N": colref3 = "K"
Case 12: colref1 = "K": colref2 = "O": colref3 = "L"
Case 13: colref1 = "L": colref2 = "P": colref3 = "M"
End Select
Worksheets(i).Cells(j, k).FormulaLocal = "=(VLOOKUP(VALUE(MID(CELL(" & Chr(34) & "filename" & Chr(34) & ";" & colref1 & CStr(j - 130) & ");FIND(" & Chr(34) & "]" & Chr(34) & ";CELL(" & Chr(34) & "filename" & Chr(34) & ";" & colref1 & CStr(j - 130) & ");1)+1;30));'FTE GIDER DAGILIM ANAHTARI'!$C:" & colref2 & ";" & CStr(k + 1) & ";0)/'FTE GIDER DAGILIM ANAHTARI'!" & colref2 & "$7)*Premises!" & colref3 & CStr(j - 111)
Next k
End If
Next j
i = i + 1 '<--!!!!
Loop
Next i
Мне действительно интересно ваш код, потому что у вас есть i = i + 1
внутри Do, и это нормально, но это Do
уже внутри For i=...
. Я полагаю, у вас есть свои причины.
Кроме того, теперь, когда вы получили часть Select Case
, вы можете увидеть четкую математическую связь между значением k
и столбцами, так что, вероятно, вы даже сможете адаптировать эточасть, потому что отношение colref1 = k-1 : colref2 = k+3: colref3 = k
и использовать номера столбцов вместо букв. Но это всего лишь предложение.
Надеюсь, это поможет.