2016-09-21 20 views
0

ユーザーが入力できる許容値の範囲を制限したい。InputBox:特定の範囲の値のみを許可する

たとえば、私は0-100のみ許可したい、と彼らは100を介して入力した場合、その後、

  1. 自動的に(例えば10など)のデフォルト値を入力し、
  2. ポップアップメッセージを作成デフォルト値が適用されたことを示します。

は、ここで私がこれまで持っているものです。

Dim CO2PriceBox As Variant 
    CO2PriceBox = InputBox("Please Enter CO2 Allowance Price ($/ton)", "Enter CO2 Allowance Price", 0) 
    Range("C11").Value = CO2PriceBox 

答えて

0

私はこのようにそれを行うだろう:

Dim CO2PriceBox As Variant 

CO2PriceBox = InputBox("Please Enter CO2 Allowance Price ($/ton)", "Enter CO2 Allowance Price", 0) 

If Not IsNumeric(CO2PriceBox) Or CO2PriceBox < 0 Or 100 < CO2PriceBox Then 'If value out of specified range 

    CO2PriceBox = 10 'Default value 
    MsgBox "You Entered a wrong value, using default", vbOKOnly 
End If 
+2

FYI:数値以外のすべての値は、比較できないため、「<」記号でVBAエラーを引き起こすため、IsNumeric(CO2PriceBox)は廃止されました。それでも、 'Type:= 1'で' Application.InputBox'を使うことは、デフォルトでこれを避けることができます。 ;) –

+0

ありがとう!このソリューションはほぼ完璧ですが、ちょっとした問題があります:私はそれを正確に記述したうえでスムーズに動作しますが、入力値が範囲外であればセルの値をデフォルト値(10)に戻すことはありません。それはダイアログボックスで修正されますが、実際のセルでは修正されません。何かアドバイス?ありがとう! – user6851629

+0

心配しないで、問題は解決しました!私はちょうど "Range(" C11 ")。Value = CO2PriceBox"を追加して、デフォルト値を使うようにマクロに指示した。ありがとう! – user6851629

1

あなたは少し "ラッパー" 機能を構築するために、Excel InputBox()メソッドを使用することができます。

Option Explicit 

Sub main() 

    Range("C11").Value = GetValue("Please Enter CO2 Allowance Price ($/ton)", "Enter CO2 Allowance Price", 0, 100, 10) 

End Sub