Определить значение и номер последнего отрицательного элемента массива
По какой-то причине, всё время указывает номер "9" последнего отрицательного числа, хотя тут вообще всего 8 чисел. Вот решение:
Sub n13()
Dim i As Double, A(1 To 8) As Double, min As Double
For i = 1 To 8
A(i) = InputBox("Введите число, элемент массива:")
Next
min = A(1)
For i = 1 To 8
If A(i) < min Then
min = A(i)
End If
Next
If min < 0 Then
MsgBox ("Значение = " & min & ", номер = " & i)
End If
End Sub
Вот исправленное решение, не то искал. В любом случае, как теперь сделать так, чтобы выводилось только последнее отрицательное?
Sub n12()
Dim i As Double, A(1 To 8) As Double, z As Double
For i = 1 To 8
A(i) = Cells(i, 1)
If A(i) < 0 Then
MsgBox ("Значение = " & A(i) & ", номер = " & i)
End If
Next
End Sub
Ответы (1 шт):
Автор решения: vikttur
→ Ссылка
Если идти циклом по строкам сверху вниз, то нужно перебрать все значения:
Sub n12()
Dim i As Long, n As Long
For i = 1 To 8
If Cells(i, 1).Value < 0 Then n = i
Next i
If n > 0 Then MsgBox ("Значение = " & Cells(n, 1).Value & ", номер = " & n), 64, "РЕЗУЛЬТАТ"
End Sub
Но если цикл "развернуть", диапазон просматривается только до первого отрицательнного значения:
Sub n12()
Dim i As Long
For i = 8 To 1 Step -1
If Cells(i, 1).Value < 0 Then Exit For
Next i
If i > 0 Then MsgBox ("Значение = " & Cells(i, 1).Value & ", номер = " & i), 64, "РЕЗУЛЬТАТ"
End Sub
Если есть желание, можно добавить сообщение о том, что отрицательные не найдены.