[英]VBA: Setting a variable as a range based on cell addess
我有以下代碼:
Sub findReplace()
Dim myArray As Variant, rng As Range, str As Variant, cAdd2 As Range
myArray = Array("è", "é", "ë", "ê", "í", "?", "ñ", "ò", "ó", "ô", "ö", "à", "ã", "á", "Á", "ä", "ü", "â", "ø", "š", "??", ">", "<", "+", "*", "^", "ß", "ç", "å", "æ", ".", ";", "#", ":", "'", "-", "@", "Ã", "¨", "É", "Ô", "[", "]", "Ó", "Ñ", "(", ")", "Ö")
Set rng = Workbooks("User").Sheets("Result").Range("B2:B10")
For Each cell In rng
cAdd = cell.Address
Set cAdd2 = Range(cell.Address)
For Each str In myArray
If InStr(cell, str) Then
cAdd2.Offset(, 1).Formula = "=Substitute(" & cAdd & ", " & str & ",""_"")" -->**# This is where I get my error**
Else
cAdd2.Offset(, 1) = "=(" & cAdd & ")"
End If
Next str
Next cell
End Sub
我想要做的是遍歷一系列單元格,用該單元格旁邊的下划線替換該單元格中數組中的所有字符,如果沒有特殊字符,則將其復制過來。
我相信問題出在cell.Address函數上,但是我不確定。
任何建議,高度贊賞!
謝謝!
你可以試試看嗎? 也將允許替換多個字符
Sub findReplace()
Dim myArray As Variant, rng As Range, str As Variant
Dim Form As String
myArray = Array("è", "é", "ë", "ê", "í", "?", "ñ", "ò", "ó", "ô", "ö", "à", "ã", "á", "Á", "ä", "ü", "â", "ø", "š", "??", ">", "<", "+", "*", "^", "ß", "ç", "å", "æ", ".", ";", "#", ":", "'", "-", "@", "Ã", "¨", "É", "Ô", "[", "]", "Ó", "Ñ", "(", ")", "Ö")
Set rng = Workbooks("User").Sheets("Result").Range("B2:B10")
For Each cell In rng
Form = "=(" & cell.Address & ")"
For Each str In myArray
If Not str = vbNullString Then
If InStr(cell, str) Then
If Len(Form) > 0 Then
Form = Replace(Form, cell.Address, "Substitute(" & cell.Address & ", """ & str & """,""_"")") ' -->**# This is where I get my error**
Else
Form = "=Substitute(" & cell.Address & ", """ & str & """,""_"")"
End If
End If
End If
Next str
cell.Offset(, 1).Formula = Form
Next cell
End Sub
該行的錯誤在我的注釋中,但這會更快,因為它只有一個循環,並且將替換每個特殊字符,而不僅僅是@Flephal聲明的最后一個字符:
Sub findReplace()
Dim myArray As Variant, rng As Range, str As Variant
myArray = Array("è", "é", "ë", "ê", "í", "?", "ñ", "ò", "ó", "ô", "ö", "à", "ã", "á", "Á", "ä", "ü", "â", "ø", "š", "??", ">", "<", "+", "*", "^", "ß", "ç", "å", "æ", ".", ";", "#", ":", "'", "-", "@", "Ã", "¨", "É", "Ô", "[", "]", "Ó", "Ñ", "(", ")", "Ö")
Set rng = Workbooks("User").Sheets("Result").Range("B2:B10")
rng.Offset(, 1).Value = rng.Value
For Each str In myArray
rng.Offset(, 1).Replace str, "_"
Next str
End Sub
測試:
Sub findReplace()
Dim myArray As Variant, rng As Range, str As Variant
myArray = Array("E", "S", "!", ")")
Set rng = ActiveSheet.Range("B2:B10")
rng.Offset(, 1).Value = rng.Value
For Each str In myArray
rng.Offset(, 1).Replace str, "_"
Next str
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.