2016-10-01 44 views
1

我有一个问题与Excel。我插入了一张图片以供参考。用另一个长度超过255个字符的字符串替换字符串。类型不匹配(错误13)

我需要替换D1单元格中的文本,其中的文本与列A中的任何id匹配,并且我需要将每个id的列B中包含的通讯文本替换为该文本。

This is how my excel sheet looks like

我有一个代码替换的ID在D1单元格,但问题是,有些文本超过255个字符,它给了我一个“类型不匹配(错误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个字符。

非常感谢!

回答

0

要解决此问题,替换你的字符串中的< 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 
+0

谢谢您的回答。 我尝试了你取得的方式,但不幸的是,当它遇到超过255个字符的字符串时,它仍然给我同样的错误,我不知道什么是错的。 – AdrianR

+0

哦,不,对不起,我的坏,它确实有用,我有一个小错字。 非常感谢! – AdrianR

+0

这个算法是假的!如果200号障碍减少一半身份证会怎么样? “... minim”“TEX”| “T 5”“veniam ...” – MGM

相关问题