0

VBA for Excel を使用しているときに、文字列データ型で実行時エラーが発生します。

文字列として宣言された変数があり、スプレッドシートのセルから値を読み取り、リストボックスの項目として追加しようとしています。特定のセルに存在するデータが 2000 文字を超えています。私のvbaは、セルから値を読み取り、デバッグウィンドウに出力できます。リストボックスに項目を追加しようとすると、追加できません。実行時エラーをスローしています

ランタイム エラー コードは「-2147352571 (80020005): タイプの不一致」です。

この種の問題の回避策はありますか。

Public Sub update_form()
Dim a1, b1, c1, d1 As Single
Dim a2, b2, c2, d2 As String
Dim a3, b3, c3, d3 As String
Dim a4, c4, d4 As String
Dim i As Single
Dim b4$

    a2 = req_no.Value
    Sheets("Design Trace - Current").Select
        Range("A1").Activate
        Columns("A:A").Select
        Selection.Find(What:=a2, After:=ActiveCell, LookIn:=xlFormulas, _
            LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
            MatchCase:=False, SearchFormat:=False).Activate
        a1 = ActiveCell.Row
    b2 = Sheets("Design Trace - Current").Cells(a1, 2).Value

    c2 = "A" & a1
    d2 = "BBB" & a1
    b1 = Application.WorksheetFunction.CountA(Range(c2, d2))
    For i = 2 To b1 Step 3
        a4 = Cells(a1, i).Value
        b4 = Cells(a1, i + 1).Value
        d1 = Len(b4)
        Debug.Print " Length : " & d1
        c4 = Cells(a1, i + 2).Value

        design_ele.Text = a4
        reverse_req.Text = b4
        code_file_name.Text = c4
        Debug.Print "a4 : " & a4
        Debug.Print "b4 : " & b4
        Debug.Print "c4 : " & c4

        If (Len(a4) > 500) Then
            ListBox1.AddItem "Refer Value"
        Else
            ListBox1.AddItem a4
        End If

        ListBox2.AddItem b4

        If (Len(c4) > 500) Then
            ListBox3.AddItem "Refer Value"
        Else
            ListBox3.AddItem c4
        End If


    Next
End Sub

これはユーザーフォームで、Excel のバージョンは 2007 です。

ありがとう

4

1 に答える 1

1

個々のリストボックス項目には最大 2000 文字の制限があります。

エラーを回避したい場合は、追加するときに長さを制限してください。

listbox3.additem left$(a4, 2000)

全文を保存したい場合は、配列に保存してください。

于 2012-09-24T11:48:15.453 に答える