Если оператор IF оценивается как "True", когда критерии условия не выполнены

ElectroMotiveHorse спросил: 14 ноября 2017 в 05:50 в: excel-vba

Всем привет.

Я пытаюсь создать калькулятор, который определяет, какие действия предпринять в зависимости от значений нескольких газов. Каждый газ будет иметь значение в ячейке, которое может попадать в один из четырех диапазонов. Каждому газу присваивается "приоритетный ранг", в пределах которого находится его значение. Тогда наивысший приоритет определяет, какое действие необходимо предпринять.

Проблема:

Первый оператор If каждого условного блока оценивается как "True", даже если значение в ячейке больше значения, указанного в условии. Как получить условные операторы для правильной оценки условия на основе значения в ячейке.

Sub DGOA_Action_500kVA ()

Dim HydrogenValue As Variant
Dim MethaneValue As Variant
Dim EthaneVaule As Variant
Dim EthyleneValue As Variant
Dim AcetyleneValue As Variant
Dim Action As IntegerDim HydrogenPriority As Integer
Dim MethanePriority As Integer
Dim EthanePriority As Integer
Dim EthylenePriority As Integer
Dim AcetylenePriority As IntegerWorksheets("500 kVa").Activate
HydrogenValue = Worksheets("500 kVa").Range("B3").Select
MethaneValue = Worksheets("500 kVa").Range("C3").Select
EthaneVaule = Worksheets("500 kVa").Range("F3").Select
EthyleneValue = Worksheets("500 kVa").Range("G3").Select
AcetyleneValue = Worksheets("500 kVa").Range("H3").SelectDim PriorityRange As Range
Set PriorityRange = Worksheets("500 kVa").Range("J3:P3")If HydrogenValue < 2000 Then
    HydrogenPriority = 1
    MsgBox (Worksheets("500 kVa").Range("B6").Select)    ElseIf HydrogenValue >= 2000 And HydrogenValue < 20000 Then
        HydrogenPriority = 2    ElseIf HydrogenValue >= 20000 And HydrogenValue < 27000 Then
        HydrogenPriority = 3    ElseIf HydrogenValue >= 27000 Then
        HydrogenPriority = 4
End IfIf MethaneValue < 2000 Then
    MethanePriority = 1    ElseIf MethaneValue >= 2000 And MethaneValue < 15000 Then
        MethanePriority = 2    ElseIf MethaneValue >= 15000 Then
        MethanePriority = 4
End IfIf EthaneVaule < 1000 Then
    EthanePriority = 1    ElseIf EthaneVaule >= 1000 And EthaneVaule < 2250 Then
        EthanePriority = 3    ElseIf EthaneVaule <= 2250 Then
        EthanePriority = 4
End IfIf EthyleneValue < 1000 Then
    EthylenePriority = 1    ElseIf EthyleneValue >= 1000 And EthyleneValue < 3000 Then
        EthylenePriority = 3    ElseIf EthyleneValue >= 2250 Then
        EthylenePriority = 4    Else
        EthylenePriority = 1
End IfIf AcetyleneValue < 1 Then
    AcetylenePriority = 1    ElseIf AcetyleneValue >= 1 And AcetyleneValue < 20 Then
        AcetylenePriority = 2    ElseIf AcetyleneValue >= 20 And AcetyleneValue < 100 Then
        AcetylenePriority = 3    ElseIf AcetyleneValue >= 100 Then
        AcetylenePriority = 4    Else
        AcetylenePriority = 1End IfWorksheets("500 kVa").Range("J3").Value = HydrogenPriority
Worksheets("500 kVa").Range("K3").Value = MethanePriority
Worksheets("500 kVa").Range("N3").Value = EthanePriority
Worksheets("500 kVa").Range("O3").Value = EthylenePriority
Worksheets("500 kVa").Range("P3").Value = AcetylenePriorityAction = Application.WorksheetFunction.Max(PriorityRange)Select Case Action    Case 1
        Worksheets("Sheet1").Range("AX4").Value = "Normal"
    Case 2
        Worksheets("Sheet1").Range("AX4").Value = "Add in Watch List"
    Case 3
        Worksheets("Sheet1").Range("AX4").Value = "Resample"
    Case 4
        Worksheets("Sheet1").Range("AX4").Value = "Engineering Evaluation"
    Case Else
        Worksheets("Sheet1").Range("AX4").Value = "Error"
End SelectWorksheets(1).Activate
MsgBox ("The Action Has Been Determined")

End Sub

0 ответов