2016-03-18 3 views
0

私は1つのコンボボックスを持つ小さなユーザーフォームを開発しました。このコンボボックスは、ユーザーフォームのロード時にワークシートの範囲で埋められます。私が必要とするのは、コンボボックスにロードする値がない場合、「ロードするものはありません」というエラーが表示されるはずです。このユーザーフォームは小さなボタンで読み込まれます。以下はコンボボックスにロードする範囲がない場合、ユーザーフォームの読み込みを制限するコード

私のユーザーフォームの初期化コードです:

Private Sub UserForm_Activate() 
'LOAD THE LIST OF ACCOUNTS 

'ASSIGNING THE VARIABLES 
Dim ws As Worksheet 
Dim tbl As ListObject 
Dim rng As Range 

'Declaring the Variables 
Set ws = Sheets("Cash and Bank Account Details") 
Set tbl = ws.ListObjects("newaccount") 
Set rng = tbl.ListColumns(3).DataBodyRange 

'Adding the Items in Combo Box 
For Each rng In rng 
ComboBox1.AddItem rng.Value 
Next 
ComboBox1.ListIndex = 0 
End Sub 

親切に検討し、クエリで私を助けて。

ありがとうございました。

+0

'もしComboBox1.Value =「」その後Combobox1.Value =「何も」ロードあなたの' Combobox1.ListIndex後If'を終了することはありません= 0' – Dan

+0

ブロックなしでエラー終了を表示する場合 –

答えて

2

私はあなたがこのような何かを探していることを推測しています:

If UserForm1.ComboBox1.ListCount = 0 Then 
    MsgBox "Nothing is there to load" 
Else 
    UserForm1.Show 
End If 

示す価値ComboBox1の中に何があるかどうかだけで、ユーザーにフォームを表示する前に確認することができます。

また、あなたも、フォームを初期化する前に確認することができます。

If Application.WorksheetFunction.CountA(Sheets("Cash and Bank Account Details").Listobjects("newaccount").ListColumns(3).DataBodyRange) = 0 Then 
    MsgBox "Nothing is there to load" 
Else 
    'Initialize and fill the form 
    UserForm1.Show 
End If 
+0

ロードするアカウントがない場合はメッセージを表示しますが、ロードする情報がある場合は同じメッセージを表示します。どちらのソリューションをお使いですか? –

+0

2番目の解決策(シート「現金と銀行口座の詳細」をチェック)を更新したので、今も 'If'ステートメントがあることに注意してください。 – Ralph

+0

エラーは最初のもので、2番目の解決策でも同じ結果が得られます –

関連する問題