0

君たちありがとう。応答に基づいて、もう少し深く掘り下げると、コードを次のように保ちました。

Public Function LowHigh(custo As Integer)
    If custo > 10.99 And custo <> 0 Then
        LowHigh = "1.4"
    Else
    If custo < 11 And custo <> 0 Then
        LowHigh = "1.35"
    Else
    If custo <= 0 Then
        LowHigh = "Valor Inválido"
    End If
    End If
    End If

End Function
Public Sub lorh()
ActiveCell.Formula = "=LowHigh(" & ActiveCell.Offset(0, 0).End(xlToLeft).Address & ")"

End Sub

サンプル画像

問題の正しい値を選択してボタンを押すと、関数 LowHigh が実行されます。問題は、セルごとに実行する必要があることです。左側の範囲全体を選択し、すぐにセルの右側の間隔をクリックする必要があります。以下に示すように式を入力します。 最終的な画像

私はこのようなことを試しました:

Public Function LowHigh (cost As Integer)
     If cost> And cost 10.99 <> 0 Then
         LowHigh = "1.4"
     else
     If cost <11 And cost <> 0 Then
         LowHigh = "1:35"
     else
     If cost <= 0 Then
         LowHigh = "Invalid"
     end If
     end If
     end If
    
end Function
Public Sub lorh ()
Range ("ActiveCell", "ActiveCell"). FormulaR1C1 = "LowHigh = (" & Range (ActiveCell.Offset (0, 0). End (xlToLeft)). & Address ")"
   
end Sub

うまくいきませんでしたが、助けてもらえますか?

4

1 に答える 1

1

問題はありませんが、if...else の使い方については、チュートリアルを読む必要があります。使い方がすべて間違っているからです。と言う代わりに、if ステートメントを他の if ステートメントの中に挿入else ifしています。

if something then
    blah
else
    if something else
        blah else
    end if
end if

これはあなたがやっていることです、これはあなたが意図したことです

if something then
    blah
else if something else then
    blah else
else if something else again then
    blah else again
end if

違いは、適切なインデント (コードにはありません) でそれ自体を物語るはずです。

編集:ああ、私は最も明白なことを忘れていました:

If cost> And cost 10.99 <> 0 Then

これはまったく意味がありません。「コストがand(演算子)よりも大きく、コストが10.99 <> 0(何も意味しない)の場合」と言っています。VBA のステートメントが実際に平易な英語で言うことと同じである場合:

If cost > 10.99 and cost <> 0 then

これはあなたが意図したことだと思いますが、そのand cost <> 0部分があるのは少し不必要です.

于 2012-10-19T02:54:40.337 に答える