excel - Why doesn't my VBA code work when the selection starts with a dot?
问题描述
我创建了这段代码,如果有的话,它应该用点替换选择中的逗号。但是,如果选择以包含点的单元格开头,则该代码不起作用,但如果它以包含逗号的单元格开头,则该代码有效。如果它以逗号开头,然后是带有点的单元格,然后是带有逗号的单元格,它甚至可以工作。这是代码:
Public Sub DeleteDotsReplaceCommasWithDots()
For Each cell In Selection
Selection.Replace What:=" ", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2
If InStr(ActiveCell.Value, ".") > 0 And InStr(ActiveCell.Value, ",") > 0 Then
Selection.Replace What:=".", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2
Selection.Replace What:=",", Replacement:=".", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2
ElseIf InStr(ActiveCell.Value, ".") = 0 And InStr(ActiveCell.Value, ",") > 0 Then
Selection.Replace What:=",", Replacement:=".", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False, FormulaVersion:=xlReplaceFormul
End If
Next cell
End Sub
知道为什么会这样吗?谢谢 :)
解决方案
您似乎正在运行您的搜索/替换ActiveCell
,而不是您通过For..Each
循环循环的每个单元格。With cell.. End With
我已经用积木稍微整理了一下。
尝试这个:
Public Sub DeleteDotsReplaceCommasWithDots()
For Each cell In Selection
With cell
.Replace What:=" ", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2
If InStr(.Value, ".") > 0 And InStr(.Value, ",") > 0 Then
.Replace What:=".", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2
.Replace What:=",", Replacement:=".", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2
ElseIf InStr(.Value, ".") = 0 And InStr(.Value, ",") > 0 Then
.Replace What:=",", Replacement:=".", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula
End If
End With
Next cell
End Sub
推荐阅读
- google-apps-script - 如何只清除谷歌表格上的数据而不清除公式?
- sql-server - SQL Server:在服务器而不是本地计算机上运行查询
- python - osrm最近和osrm匹配服务之间的区别
- python - 如何摆脱 MonthEnds 类型
- openmdao - 将 pyOptSparseDriver 与 OpenMDAO 和 WISDEM 一起使用
- javascript - Javascript setInterval 未按预期工作
- javascript - 在 JavaScript 中使用点表示法时调用(访问)(通过)(遍历)的每个元素的返回值
- java - 保存图片不压缩
- arrays - React/NextJS:如何映射键更改的对象数组?
- wordpress - Gatsbyjs + Wordpress GraphQL 错误`无法查询字段`