How to handle wild characters in Macros?

Deadly 提交于 2020-06-22 02:27:39

问题


I have wrote a piece of code to replace any characters, but it doesn't work fine with *. Can some one guide how I can handle *.
Here is the code:

nextrow = ActiveCell.Row
tocolnbr = ActiveCell.Column
Columns(tocolnbr).Select

Selection.Replace What:="'", Replacement:="", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False

回答1:


Use a ~ tilde as per Office Support.

Microsoft Excel uses the tilde (~) as a marker to indicate that the next character is a literal. When you use the Find and Replace dialog box to find or replace a character such as a tilde (~), an asterisk (*), or a question mark (?), you must add a tilde (~) before the character in the Find what box.

So it must be something like this:

Selection.Replace What:="~*", Replacement:="", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False



回答2:


Use it's Chr value

Selection.Replace What:=Chr(42), Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False

EDIT: I posted without checking. Your code works to replace "*" with nothing, although what you posted is replacing "'" with nothing.




回答3:


I just used this,

Sub Button1_Click()
    Dim rng As Range
    Set rng = Range("K2")
    rng = Replace(rng, "*", "")
End Sub

And it removed the *

Is it a Character? Or just an asterix?

For an entire range of cells,

Sub Button1_Click()
    Dim rng As Range, c As Range
    Set rng = Range("K2:K20")
    For Each c In rng.Cells
        c = Replace(c, "*", "")
    Next c
End Sub

I have seen on some occasions where you would have to use the tilde "`" symbol but I don't know if is required here.



来源:https://stackoverflow.com/questions/29857051/how-to-handle-wild-characters-in-macros

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!