VBA单元格。替换更改整个电子表格

VBA单元格。替换更改整个电子表格,vba,excel,Vba,Excel,设置: 使用ACCESS 2010 VBA在Excel中创建图纸。以下问题已在处理导出的excel文件 问题: 我有下面的代码(也尝试了各种代码),但遗憾的是,它在整个电子表格中的每一个“-”都在更改,而只在提到的单元格中。我不知道为什么会这样 For i = 2 To k If Cells(i, 15).Value Like "*" & "-" & "*" & ":" & "*" Then Cells(i, 15).Replace What:="-", Repl

设置:

使用ACCESS 2010 VBA在Excel中创建图纸。以下问题已在处理导出的excel文件

问题:

我有下面的代码(也尝试了各种代码),但遗憾的是,它在整个电子表格中的每一个“-”都在更改,而只在提到的单元格中。我不知道为什么会这样

For i = 2 To k
If Cells(i, 15).Value Like "*" & "-" & "*" & ":" & "*" Then
Cells(i, 15).Replace What:="-", Replacement:="_" - changes all
Cells(i, 15).Replace What:=":", Replacement:="." - changes all
End If
Next i

非常感谢您的帮助。提前谢谢

不确定为什么这不起作用(我无法复制它)。你能看看这是否有效吗

For i = 2 To k
    If Cells(i, 15).Value Like "*" & "-" & "*" & ":" & "*" Then
        Cells(i, 15) = Replace(Cells(i, 15), "-", "_")
        Cells(i, 15) = Replace(Cells(i, 15), ":", ".")
    End If
Next i

不知道为什么这不起作用(我不能复制它)。你能看看这是否有效吗

For i = 2 To k
    If Cells(i, 15).Value Like "*" & "-" & "*" & ":" & "*" Then
        Cells(i, 15) = Replace(Cells(i, 15), "-", "_")
        Cells(i, 15) = Replace(Cells(i, 15), ":", ".")
    End If
Next i

Op的代码似乎是
Replace
函数和
Range.Replace
的混合。方法

返回:一个字符串,其中一个指定的子字符串已被另一个指定次数的子字符串替换

语法:Replace(表达式、查找、替换、[start]、[count]、[compare])

返回:一个布尔值,指示指定范围内单元格中的字符。使用此方法不会更改选择或活动单元格

语法:范围.替换(什么,替换,[LookAt],[SearchOrder],[MatchCase],[MatchByte],[SearchFormat],[ReplaceFormat])

虽然需要通过
Cell
应用
Replace
功能
Cell
,但是
Range.Replace
方法可以应用于整个范围。但是,当
Range.Replace
方法应用于单个单元格时,将在整个工作表上执行替换

。。。这就是这些线路所做的:

Cells(i, 15).Replace What:="-", Replacement:="_"
Cells(i, 15).Replace What:=":", Replacement:="."
Range.Replace方法不需要逐个单元格应用,也不需要首先验证要替换的字符串是否存在(即
What
),而是直接将其应用于整个范围。请尝试以下代码:

With Range(Cells(2, 15), Cells(k, 15))  'change as required
    .Replace What:="-", Replacement:="_", LookAt:=xlPart, _
        SearchOrder:=xlByColumns, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
    .Replace What:=":", Replacement:=".", LookAt:=xlPart
End With

Op的代码似乎是
Replace
函数和
Range.Replace
的混合。方法

返回:一个字符串,其中一个指定的子字符串已被另一个指定次数的子字符串替换

语法:Replace(表达式、查找、替换、[start]、[count]、[compare])

返回:一个布尔值,指示指定范围内单元格中的字符。使用此方法不会更改选择或活动单元格

语法:范围.替换(什么,替换,[LookAt],[SearchOrder],[MatchCase],[MatchByte],[SearchFormat],[ReplaceFormat])

虽然需要通过
Cell
应用
Replace
功能
Cell
,但是
Range.Replace
方法可以应用于整个范围。但是,当
Range.Replace
方法应用于单个单元格时,将在整个工作表上执行替换

。。。这就是这些线路所做的:

Cells(i, 15).Replace What:="-", Replacement:="_"
Cells(i, 15).Replace What:=":", Replacement:="."
Range.Replace方法不需要逐个单元格应用,也不需要首先验证要替换的字符串是否存在(即
What
),而是直接将其应用于整个范围。请尝试以下代码:

With Range(Cells(2, 15), Cells(k, 15))  'change as required
    .Replace What:="-", Replacement:="_", LookAt:=xlPart, _
        SearchOrder:=xlByColumns, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
    .Replace What:=":", Replacement:=".", LookAt:=xlPart
End With

代码看起来是正确的。我在小测试数据上进行了测试,它似乎运行良好。代码看起来是正确的。我在小测试数据上进行了测试,它似乎工作得很好。
“*”&“-”&“*”&”:“&“*”
*-*:*
?@JohnyL-确实如此。实际上,我可能会删除答案,因为OP的代码没有明显的错误。出于某种原因,替换
单元格(I,15)。替换内容:=“-”,替换:=“\code>为
单元格(I,15)=替换(单元格(I,15),“-”,“\code>解决了问题。谢谢!为什么被否决?代码语法是正确的,OP已经确认它对他有效。向上投票…很可能是向下投票,因为它无法解释正在发生的事情,OP也不了解它的功能或工作原理。。。与下面更好的不被接受的答案不同,
“*”&“-”&“*”&”:“&“*”
*-*:*
?@JohnyL-确实如此。实际上,我可能会删除答案,因为OP的代码没有明显的错误。出于某种原因,替换
单元格(I,15)。替换内容:=“-”,替换:=“\code>为
单元格(I,15)=替换(单元格(I,15),“-”,“\code>解决了问题。谢谢!为什么被否决?代码语法是正确的,OP已经确认它对他有效。向上投票…很可能是向下投票,因为它无法解释正在发生的事情,OP也不了解它的功能或工作原理。。。与下面更好的不被接受的答案不同