Excel VBA > VBA:実務活用 > 「Listプロパティを設定できません。種類が一致しません。」エラーについて
このエントリーをはてなブックマークに追加

「Listプロパティを設定できません。種類が一致しません。」エラーについて

わかりずらいリストボックスのエラー

Excelのリストボックスコントロールで先日、上記のエラーが発生しました。
思いのほかハマったので同じ方がいれば解決の糸口になればと思います。

2種類のエラー?

上記エラーの際にネットを探したところNull値を設定しようとしてエラーが発生するという内容があり試しました。

Private Sub CommandButton1_Click()

    Me.ListBox1.AddItem Null

End Sub

上記のように単純にリストボックスの値にNull値をセットしようとしたところエラーが発生しました。
しかしよく見るとエラーの内容が微妙に違います。

つまりこのエラーはここでいうエラーとは別物の可能性が高いということが分かりました。

エラーメッセージからは判断できないエラー

VBAをやっていると実行時エラーがしばし発生しますが、エラーの内容から解決に近づけない内容もしばしばです。
今回もその類に入ると思います。
表題のエラーの原因はズバリ「文字数オーバー」です。
もっとも、腑に落ちない部分もあるので、他の理由でもこのエラーメッセージが表示されるかもしれない点に注意してください。

試しにこんなコードを実行しました。下記はリストボックスの1行目に文字列を結合し、繰り返し入れています。

Private Sub CommandButton1_Click()

    Dim i As Integer

    With Me.ListBox1

        .AddItem 1

        For i = 1 To 2046
            .List(0, 0) = .List(0, 0) & 1
        Next i

        ‘何文字入力されているか表示
        MsgBox VBA.Len(.List(0, 0))

    End With

End Sub


これでやるとうまくいきました。

しかし次の部分を変えると失敗します。

Private Sub CommandButton1_Click()

    Dim i As Integer

    With Me.ListBox1

        .AddItem 1

        For i = 1 To 2047
            .List(0, 0) = .List(0, 0) & 1
        Next i

        ‘何文字入力されているか表示
        MsgBox VBA.Len(.List(0, 0))

    End With

End Sub

従いこのエラーが発生した場合、事前に何文字をListプロパティにセットするのかを事前にIF文などで判断し、文字列を減らすなりすれば回避できます。
ただし、私の認識では文字数制限は「2046文字まで」と記憶しているので、2047文字まで入るというのが少し意味不明である点も合わせて述べておきます。

カテゴリ:VBA:実務活用