2016-08-02 3 views
1

2つのComboBoxと2つのTextBoxを含むUserFormから開いたVBAコードを作成しています。VBA - 変数がComboBoxの値を取得するelse TextBoxの値のエラーが発生する

私がしようとしているのは、変数にコンボボックスの値(コンボボックスごとに1つの変数)を与え、選択がnullの場合、変数はテキストボックスの値を取得します。 私はそれのために使用する必要がある表現をGoogleが見つけたとIsNullしかし、コードは動作しません。私が試したことだった。もちろん

If IsNull(Matrix_Size_1.value) = False And IsNull(Matrix_Size_2.value) = False Then 
    lWidth = Matrix_Size_1.value 
    lHeight = Matrix_Size_2.value 

ElseIf IsNull(Matrix_Size_1.value) = True And IsNull(Matrix_Size_2.value) = True Then 
    lWidth = Matrix_Hand_1.value 
    lHeight = Matrix_Hand_2.value 
End If 

私としても、より妥当な状況をフィルタリングする必要があります:1つのコンボボックスが空であるならば、メッセージボックス、すべてが、その後のMsgBox空ですが、私は理由を理解するだろう後、私はそれを処理します場合私のコードは動作しません。

しかし、私はコンボボックスから何かを選択しない場合、私は取得エラーが型の不一致もしコードが空にコンボボックスの両方のオプションを持っているにもかかわらずです。

ご協力いただきありがとうございます。

+0

をしたいことを理解しています。私が思い出すと、ListIndex = -1の場合、ボックスには値が選択されていません。 – Takarii

答えて

0

コンボボックス.StyleプロパティがfmStyleDropDownListとして設定されている場合はコンボボックス.Styleプロパティは、あなたがデザインモードでStyleプロパティを確認することができ、この

If Len(Trim(Matrix_Size_1.Value)) = 0 And Len(Trim(Matrix_Size_2.Value)) = 0 Then 

を使うfmStyleDropDownComboとして設定されている場合、この

If Matrix_Size_1.ListIndex = -1 And Matrix_Size_2.ListIndex = -1 Then 

を使用コンボボックスを右クリックしてプロパティをクリックします。

編集

コメントから、私はあなたが実際にあなたはそれが簡単にコンボボックスコントロールから `ListIndex`プロパティを使用することを見つけるかもしれないこの

Dim lWidth As Single, lHeight As Single 

If Len(Trim(Matrix_Size_1.Value)) = 0 And Len(Trim(Matrix_Size_2.Value)) = 0 Then 
    lWidth = Val(Matrix_Hand_1.Value) '<~~> Val will take care of mismatch caused by empty boxes 
    lHeight = Val(Matrix_Hand_2.Value) 
Else 
    lWidth = Val(Matrix_Size_1.Value) 
    lHeight = Val(Matrix_Size_2.Value) 
End If 
+0

テキストボックスの両方を塗りつぶしても変数は値を取得する必要がありますが、まだ動作しません。私のvaraiblesは、単一の淡色表示され、多分それは問題ですか? – vbmolec

+0

何が問題なのですか?どのように 'lWidth'と' lHeight'を宣言しましたか? 「As Single」? –

+0

@SiddharthRoutあなたは私にそれを打つ:) –

関連する問題