2016-10-01 39 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

相關問題