2016-04-18 9 views
2

2つのコンボボックスを持つuserformがあります。テーブルの列にデータがない場合にメッセージボックスを表示するコード

両方のコンボボックスは、シートに存在するテーブルから取り込まれます。

ここに私のコードです。

Private Sub UserForm_Initialize() 
    Dim ws As Worksheet, tbl As ListObject, rng As Range 

    Set ws = Sheets("Summary of Accounts") 
    Set tbl = ws.ListObjects("groupheads") 
    Set rng = tbl.ListColumns(3).DataBodyRange 

    Me.cmb1.Clear 
    Me.cmb2.Clear 

    With cmb1 
     .AddItem "Debit" 
     .AddItem "Credit" 
    End With 


    "If rng = vbNullString Then" 
     MsgBox ("Please create the Group Head Account First") 
    Exit Sub 

    End If 

End Sub 

オブジェクト変数として引用符で囲まれた行でエラーが発生します。私が望むのは、テーブルの列にデータがない場合、上記のコードで示したmsgボックスが表示されるはずです。

+0

これを 'If rng = vbNullString Then'に変更すると、' rng.Rows.Count = 0 Then ' – gofr1

+0

と同じエラー... –

答えて

2

.DataBodyRange propertyの最初の行にListObjectテーブルにデータがない場合は、範囲タイプ変数を設定するとNothingになります。

If rng Is Nothing Then 
    MsgBox ("Please create the Group Head Account First") 
    Exit Sub 
End If 

はい、そこに空の行があるように見えますが、それは細胞のいずれかに1つ以上の値を取得するまで.DataBodyRangeは実際には何もありません。

+0

はいです。それは今動作しています...しかし、私はこのコードは、ユーザーフォームの初期化に置かれている小さなクエリがあります。上記のような特定の基準が満たされている必要がある場合、msgboxの後に私がアンロードしても、ユーザーフォームが閉じられている必要があります。 –

+0

ごめんなさい、新しい質問のようですコメントで答えるには時間がかかりすぎる。あなたが検索した場合も同様の質問がたくさんあるはずです。あなたが答えを見つけることができない場合は、新しい質問を投稿してください。 – Jeeped

関連する問題