用另一个长度超过 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
我对 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