【发布时间】:2018-11-13 20:20:05
【问题描述】:
我目前正在使用一个 excel 宏,它应该为不同的国家/地区替换不同的特殊字符。 每个国家都在替换特殊字符。另一种方式。
例如:
- 德国正在用“AE”代替“Ä”
- 比利时正在用“A”替换“Ä”
表格如下:
A 列:名字
B 列:中间名
C 列:姓氏
D 列:国家
宏应首先检查 Excel 中列出的国家/地区,然后替换特殊字符。在 A 和 C 列中。
实际代码:
Sub UmlauteErsatezen()
Dim Sh As Worksheet
If cell D:D = "Germany" then
For Each Sh In ActiveWorkbook.Worksheets
With Sh.UsedRange
.Replace What:="Ö", Replacement:="oe", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=True
.Replace What:="Ü", Replacement:="ue"
.Replace What:="Ä", Replacement:="ae"
else if cell D:D ="Belgium" then
For Each Sh In ActiveWorkbook.Worksheets
With Sh.UsedRange
.Replace What:="Ö", Replacement:="o", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=True
.Replace What:="Ü", Replacement:="u"
.Replace What:="Ä", Replacement:="a"
End If
End With
Next
End If
End Sub
有什么想法吗?
【问题讨论】:
-
您的代码似乎可以正常工作。它有什么问题?
-
@Vityata 真的吗?我将代码缩进了一点,它充满了错误。多个
Next和End With丢失或位于错误的位置。我认为这甚至不会编译。 -
您离得并不远...在哪个表格/单元格中存储了国家名称(例如“德国”)?
-
@Pᴇʜ - 在某种程度上 :) - 这部分
LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=True来自宏记录器,因此 OP 可以自己管理。 -
@Atlantikdriver 请确保您在问题中显示的代码正是您使用的代码。几个
End With和Next语句在错误的位置。正确缩进/格式化您的代码,以便您可以轻松查看它。如果可能,还要添加工作表的屏幕截图(不清楚需要检查哪个单元格的国家/地区。