Sub Methods()
Dim Number, Minimum, Room, Product, Data, X As Double
Dim Flag As Boolean
Flag = True
Minimum = 0
Room = 0
Product = 0
Number = InputBox("Введите количество значений в последовательности")
For X = 1 To Number Step 1
Data = InputBox("Введите значение №" & X)
If Data > Minimum Then
Minimum = Data
Room = X
End If
If X = 1 Then
Minimum = Data
Room = X
End If
If Data < 0 Then
If Flag = True Then
Product = Data
Flag = False
Else
Product = Product * Data
End If
End If
Next X
MsgBox "Наименьшее число: " & Minimum & Chr(10) & "Его номер: " & Room & Chr(10) & "Произведение всех отрицательных значений: " & Product
End SubIf Data < Minimum Then
Minimum = Data
Room = X
Else
If Data = 0 Then
If Not Minimum = 0 Then
If Minimum > 0 Then
Minimum = Data
Room = X
End If
End If
Else
If Data < Minimum Then
Minimum = Data
Room = X
End If
End If
End If
Dim Number, Minimum, Room, Product, Data, X As Double вовсе не означает, что все переменные имеют тип Double. В VBA каждой переменной надо задавать отдельный тип: Dim Number As Integer, Minimum As Double, Data As Double, Room As Integer, Product As Double, X As DoubleDouble только последнюю переменную. Все остальные инициализируются как Variant. Таким образом, Data у Вас получается текстовой переменной поскольку извлекается из InputBox. Это приводит к тому что "-1" < "-2" (1 < 2). If Data > Minimum Then Вы находите не минимум, а максимум. If X = 1 Then
Minimum = Data
Room = X
End If
If Data < Minimum Then
Minimum = Data
Room = X
End If
If Data < 0 Then
If Product = 0 Then
Product = Data
Else
Product = Product * Data
End If
End If