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 Sub
If 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 Double
Double
только последнюю переменную. Все остальные инициализируются как 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