2017-09-12 13 views
0

VBAで変数を作成するときに制約を入れる方法はありますか?変数に数値制約を設定する

例:整数として 薄暗いアルファ

今私は、0から99までの値のみを受け入れるようにExcelをたいと思い、私はそれをどのように行うことができますか?

多くのおかげ

+2

割り当て時の値を検証します。 – Rory

+0

でも、どうですか? dim alfaは整数として? –

+0

変数の値の取得方法についての情報はありませんでした。 – Rory

答えて

4

あなたはこのようにそれを検証することができます:

Sub Test() 
    Dim i As Integer 
    i = 100 

    If Not (i >= 0 And i <= 99) Then Err.Raise Number:=6, Description:="Number not valid" 

    'continue to use i 
End Sub 

ます。また、特定の値のみを受け入れる新しいクラスを、作成することができます。ほとんどの場合、これはやり過ぎだろうが、ここでは、次のとおりです。標準モジュール

Sub Test() 
    Dim specialNumber As SNumber 
    Set specialNumber = New SNumber 

    specialNumber.Value = 1 
    specialNumber.Value = 100 'this line will throw an error 
End Sub 

にこれを入れて

次にモジュールをクラスモジュールにこれを入れて、名前SNumber

Private specialNumber As Integer 

Public Property Get Value() As Integer 
    Value = specialNumber 
End Property 

Public Property Let Value(v As Integer) 
    If Not (v >= 0 And v <= 99) Then 
     Err.Raise Number:=6, Description:="Number not valid" 
    Else 
     specialNumber = v 
    End If 
End Property 
0

Excelでデータ検証を使用するとよいでしょう。

Sub TestMe() 
    With Selection.Validation 
     .Delete 
     .Add Type:=xlValidateCustom, AlertStyle:=xlValidAlertStop, _ 
       Operator:=xlBetween, Formula1:="=AND(A1>=0, A1<=100, ISNUMBER(A1))" 
     .IgnoreBlank = True 
     .InCellDropdown = True 
     .InputTitle = "" 
     .ErrorTitle = "" 
     .InputMessage = "" 
     .ErrorMessage = "" 
     .ShowInput = True 
     .ShowError = True 
    End With 
End Sub 

ここで、A1は、1から100の間の数値になります。

関連する問題