Определить значение и номер последнего отрицательного элемента массива

По какой-то причине, всё время указывает номер "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

Если есть желание, можно добавить сообщение о том, что отрицательные не найдены.

→ Ссылка