我想要做的是從單元格中取出用戶插入的文本並將其轉換爲莫爾斯碼,然後將結果寫入到不同的細胞。我無法弄清楚如何編寫結果,因爲我當前的代碼只保存輸出字符串中更改的莫爾斯碼數組中的最後一個字符(如果它存在於輸入字符串中)。VBA循環替換字符串中的所有字符並將結果寫入單個單元格(Excel)
m是兩個數組中的字符數。
For i = 1 To m
output = Replace(input, A$(i), B$(i))
Next i
Range("output") = output
我想要做的是從單元格中取出用戶插入的文本並將其轉換爲莫爾斯碼,然後將結果寫入到不同的細胞。我無法弄清楚如何編寫結果,因爲我當前的代碼只保存輸出字符串中更改的莫爾斯碼數組中的最後一個字符(如果它存在於輸入字符串中)。VBA循環替換字符串中的所有字符並將結果寫入單個單元格(Excel)
m是兩個數組中的字符數。
For i = 1 To m
output = Replace(input, A$(i), B$(i))
Next i
Range("output") = output
如果我明白你的問題正確,我認爲問題是,你在每次循環覆蓋output
。試着改變你的代碼:
For i = 1 To m
output = output & Replace(input, A$(i), B$(i))
Next i
Range("output") = input
注意添加output &
告訴它要追加新值輸出,而不是覆蓋它。
這是因爲您需要在第一次迭代後將輸出提供給Replace,而不是一次又一次地改變輸入。
未經測試,只是給你一個線索:
Dim strPuffer As String
strPuffer = Replace(input, A$(1), B$(1))
For i = 2 To m
strPuffer = Replace(strPuffer, A$(i), B$(i))
Next i
Range("output") = strPuffer