用另一个长度超过 255 个字符的字符串替换一个字符串。类型不匹配(错误 13)

Replace a string with another string longer than 255 chars. Type mismatch (error 13)

我对 excel 有疑问。我插入了一张图片作为参考。

我需要替换 D1 单元格中的文本,其中文本与 A 列中的任何 ID 匹配,我需要将其替换为 B 列中包含的每个 ID 的对应文本。

我有一个代码可以替换 D1 单元格中的 ID,但问题是某些文本超过了 255 个字符,这给了我一个 "Type mismatch (Error 13)" 错误。代码看起来像这样:

Sub ReplaceText()

For i = 2 To LastRow

    id = Range("A" & i).Value
    textToReplace = Range("B" & i).Value

    Worksheets("Sheet1").Columns("D:Z").Replace What:=id, Replacement:=textToReplace, LookAt:= _
    xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False

Next i

End Sub        

我想知道我是否可以做些什么来插入超过 255 个字符的文本。

非常感谢!

要解决此问题,请将您的字符串替换为 < 256 个字符的片段,如下所示

Option Explicit ' first line in Module

Sub ReplaceText()
    Dim lastRow As Long, i As Long
    Dim ID As String, TextToReplace As String, Text As String
    Dim Mark As String, MaxLen As Long
    Dim SearchRange As Range

    MaxLen = 200
    ' Choose a character for Mark that is not in your data, 
    '  and is not a special char: ~?*
    Mark = "@" 
    lastRow = 6 ' set this to suit
    Set SearchRange = Worksheets("Sheet3").Columns("D:Z")

    For i = 2 To lastRow
        ID = Range("A" & i).Value
        TextToReplace = Range("B" & i).Value
        If ID <> vbNullString Then
            Do
                Text = Left$(TextToReplace, MaxLen) & Mark
                ' Terminate the loop when all of TextToReplace has been processed
                If Text = Mark Then Text = vbNullString
                TextToReplace = Mid$(TextToReplace, MaxLen + 1)
                SearchRange.Replace _
                  What:=ID, _
                  Replacement:=Text, _
                  LookAt:=xlPart, _
                  SearchOrder:=xlByRows, _
                  MatchCase:=False, _
                  SearchFormat:=False, _
                  ReplaceFormat:=False
                ID = Mark 
            Loop Until Text = vbNullString
        End If
    Next i
End Sub