2017-10-09 169 views
3

因此,我在RenPy上製作了一個視覺小說,並且我不得不在整個文檔上換掉句子。Excel VBA字符串操作導致運行時錯誤「1004」

由於修訂版本出現在excel文件中,我決定使用excel宏自動修復。 有三列。原始行,建議的修復程序和原始腳本。

example

所以我撞了一個腳本,它是這樣的:

Sub MacroVOID() 
Dim x As Integer 
Dim y As Long 
x = 2 
y = 2 

Do While x < 298 
If StrComp(Cells(x, 1).Value, Cells(y, 3).Value, vBinaryCompare) = 0 Then 
    Cells(y, 3).Value = Cells(x, 2).Value 
    x = x + 1 
    Else 
    y = y + 1 
End If 
Loop 

End Sub 

這就造成了運行時錯誤 「1004」。

我在工作表級別保存了宏。

我是這個東西的新手,所以任何幫助,將不勝感激。

+1

您的宏由於缺少定義的工作表而無法在activesheet上運行。這可能會導致你的錯誤。你也檢查兩個字符串是否相等,如果有的話替換。我想你會更好地閱讀Strcomp的語法:https://www.techonthenet.com/excel/formulas/strcomp.php – Luuklag

+4

它是vbBinaryCompare,而不是vBinaryCompare。我建議你在你的工作表頂部使用'Option Explicit'。這會提醒你像這樣的錯別字。添加@Luuklag寫的內容,StrComp比較字符串。您比較的兩個值是變體,不一定是字符串。您可以通過使用Cstr(Cells(x,1).value)將它們轉換爲兩個值進行比較。 – Variatus

回答

1

試試這個


Option Explicit 

Public Sub ReplaceStrings() 
    Dim ws As Worksheet, cel As Range 

    Set ws = ThisWorkbook.Worksheets("Sheet1") '<-- Update Sheet Name 

    With ws.UsedRange 
     For Each cel In .Columns(1).Cells  'iterate through all used cells in col A 
      If Len(cel.Value2) > 0 Then   'if the cell is not empy 

       'in column 3: replace all instances of values in current cell 
       'with the value in (current cell).offset by one column to its right (col B) 
       .Columns(3).Replace cel.Value2, cel.Offset(0, 1).Value2, xlWhole 

      End If 
     Next 
    End With 
End Sub 

的Range.Replace方法有以下參數:

Replace(What, Replacement, LookAt, SearchOrder, MatchCase, MatchByte, SearchFormat, ReplaceFormat)"

更多細節從幫助:

  • 什麼:必需的變體您希望Microsoft Excel搜索的字符串。
  • 替換:必需的變體替換字符串。
  • LookAt:可選變體可以是以下XlLookAt常量之一:xlWhole或xlPart。
  • SearchOrder:可選Variant可以是以下XlSearchOrder常量之一:xlByRows或xlByColumns。
  • MatchCase:可選變體正確使搜索區分大小寫。
  • MatchByte:可選Variant只有在Microsoft Excel中選擇或安裝了雙字節語言支持時,纔可以使用此參數。如果雙字節字符只匹配雙字節字符,則爲真。假使雙字節字符與它們的單字節等價物匹配。
  • 搜索格式:可選Variant該方法的搜索格式。
  • ReplaceFormat:可選Variant該方法的替換格式。
+0

你的代碼有效,但有些沒有被替換?你能通過你的代碼走過我嗎?我想試着去理解它。謝謝你的幫助:) –

+0

沒關係我找到了。這是波浪號。原來有歪斜,修復有一個直線代字符。感謝您的幫助 –

+0

我添加了更多關於每個步驟的詳細信息@RizkyGustiantoWibisono –