0

在使用 Excel 的 VBA 时,我遇到了字符串数据类型的运行时错误。

我有一个声明为字符串的变量,并试图从电子表格中的单元格中读取一个值并作为一个项目添加到列表框中。特定单元格中存在的数据大于 2000 个字符。我的 vba 能够从单元格中读取值并在调试窗口中打印。当我尝试在列表框中添加项目时,它无法添加。它引发运行时错误

运行时错误代码为“-2147352571 (80020005): Type Mismatch”

有没有办法解决这类问题。

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 回答