【问题标题】:VBA 255 Maximum Characters in 1 Cell1 个单元格中的 VBA 255 个最大字符
【发布时间】:2016-07-18 08:33:48
【问题描述】:

我有一个简单的宏,它将 Excel 工作表中每一行的内容添加到文本文件中,每个单元格值之间都有分隔符。这是通过运行循环遍历每一行并在每次迭代结束时将值添加到字符串变量的末尾来完成的。

每一行可以有很多字符 - 我没有注意到任何问题。但是,当 1 个单元格包含超过 255 个字符时,连接将失败。我不确定是不是因为字符串限制(我不认为是这种情况),或者是包含此限制的 Trim、Join 或 Index 函数,还是其他原因。任何有助于获得更多见解的帮助将不胜感激。

有问题的行('R' 指的是行/迭代号):

stringVariable = stringVariable & vbNewLine & Application.Trim(Join(Application.Index(Cells(R, "A").Resize(, 25).Value, 1, 0), "|"))

错误是:

运行时错误“13”:类型不匹配

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    问题在于Application.Index。如何调试?

    让我们在第 1 行中使用任何值的活动工作表,所有值都少于 255 个字符。但在第 1 行的其中一个单元格中,例如在C1 中,应该是公式:

    =REPT("c",255)
    

    现在将代码分成几部分:

    Sub test()
    
     r = 1
    
     v2DArray = Cells(r, "A").Resize(, 25).Value
     index1DArray = Application.Index(v2DArray, 1, 0)
     joinString = Join(index1DArray, "|")
     stringVariable = Application.Trim(joinString)
    
     MsgBox stringVariable
    
    End Sub
    

    这将一直有效,直到您将公式更改为 =REPT("c",256)。现在它将在Application.Index 失败。

    您可以执行以下操作,而不是 Application.Index

    Sub test2()
    
     r = 1
    
     v2DArray = Cells(r, "A").Resize(, 25).Value
     ReDim v1DArray(LBound(v2DArray, 2) To UBound(v2DArray, 2)) As String
     For i = LBound(v2DArray, 2) To UBound(v2DArray, 2)
      v1DArray(i) = v2DArray(1, i)
     Next
     joinString = Join(v1DArray, "|")
     stringVariable = Application.Trim(joinString)
    
     MsgBox stringVariable
    
    End Sub
    

    【讨论】:

    • 哦,亲爱的,很抱歉回复晚了 - 我确定我已经发送了回复。在我们的帖子之间的几个小时内,我设法找到了解决方案。我会把它贴在这里让其他人看到。正如您最准确地指出的那样,问题与 Index 函数有关。
    【解决方案2】:

    在尝试使用已经存在的函数的不同组合后,我发现在不使用索引时宏完成没有问题。

    最后我决定将每个单元格的值添加到字符串的末尾,一次一个。解决方案:

    For i = 1 To numberOfColumns
        If i < numberOfColumns Then
            stringVariable = stringVariable & Trim(Cells(R, i).Value) & "|"
        Else
            stringVariable = stringVariable & Trim(Cells(R, i).Value)
        End If
    Next i
    stringVariable = stringVariable & vbNewLine
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-23
      • 1970-01-01
      相关资源
      最近更新 更多