VBA:将variables设置为基于单元格地址的范围

我有以下代码:

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 

我想要做的是通过一系列单元格,将单元格中数组中的任何字符replace为单元格旁边的单元格中的下划线,如果没有特殊字符,则将其复制。

我相信问题是与cell.Address函数,但我不知道。

任何build议是高度赞赏!

谢谢!

你可以试试这个吗? 也将允许replace更多的一个字符

 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 

这条线的错误是在我的意见,但这将更快,因为它只有一个循环,将取代每个特殊字符,而不是最后find@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 

testing:

 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 

在这里输入图像说明