Наглухо виснет программа.
Собственно, дано 6 столбцов по 14 строк, первый из которых являет сбой кратность, остальные 5 - числа.
Необходимо установить, кратны ли числа заданному числу из первого столбца, если да, то ничего не меняется, если нет, то необходимо уменьшить или увеличить число(в ближайшую сторону) и добавить примечание.
До примечания еще не добрался, пытаюсь сделать первую часть.
Код:
Private Sub Кнопочка_Click()
Const n = 5, m = 14, x = 14, y = 5
Dim a(2 To m, 2 To n) As Variant
Dim b(2 To m, 2 To n) As Variant
Dim c(2 To m, 2 To n) As Variant
With Range("A1:F15")
.NumberFormat = "General"
.Value = .Value
End With
For i = 2 To m
For j = 2 To n
For k = 2 To m
For l = 2 To n
a(k, l) = Cells(i, j) Cells(2, 1)
b(k, l) = Cells(i, j) / Cells(2, 1)
c(k, l) = b(k, l) - a(k, l)
Do While c(k, l) > 0
If c(k, l) < 0.5 Then Cells(i, j) = Cells(i, j) - 1 And Cells(i, j).Interior.Color = 6
If c(k, l) >= 0.5 Then Cells(i, j) = Cells(i, j) + 1 And Cells(i, j).Interior.Color = 4
Loop
Next
Next
Next
Next
End Sub
Const n = 5, m = 14, x = 14, y = 5
Dim a(2 To m, 2 To n) As Variant
Dim b(2 To m, 2 To n) As Variant
Dim c(2 To m, 2 To n) As Variant
With Range("A1:F15")
.NumberFormat = "General"
.Value = .Value
End With
For i = 2 To m
For j = 2 To n
For k = 2 To m
For l = 2 To n
a(k, l) = Cells(i, j) Cells(2, 1)
b(k, l) = Cells(i, j) / Cells(2, 1)
c(k, l) = b(k, l) - a(k, l)
Do While c(k, l) > 0
If c(k, l) < 0.5 Then Cells(i, j) = Cells(i, j) - 1 And Cells(i, j).Interior.Color = 6
If c(k, l) >= 0.5 Then Cells(i, j) = Cells(i, j) + 1 And Cells(i, j).Interior.Color = 4
Loop
Next
Next
Next
Next
End Sub
Может я ошибаюсь, но все же рискну предположить, что возможно у вас условия или цикл не имеют завершения, тем самым цикл так скажем повторяется бесконечно?
Код:
Do While c(k, l) > 0
If c(k, l) < 0.5 Then Cells(i, j) = Cells(i, j) - 1 And Cells(i, j).Interior.Color = 6
If c(k, l) >= 0.5 Then Cells(i, j) = Cells(i, j) + 1 And Cells(i, j).Interior.Color = 4
Loop
If c(k, l) < 0.5 Then Cells(i, j) = Cells(i, j) - 1 And Cells(i, j).Interior.Color = 6
If c(k, l) >= 0.5 Then Cells(i, j) = Cells(i, j) + 1 And Cells(i, j).Interior.Color = 4
Loop
Код:
c(k, l) > 0
Спасибо большое, вопрос уже решен.