如何在excel宏中的列中查找特殊字符

时间:2016-09-16 09:53:42

标签: excel vba excel-vba macros

我在excel vba中的列中搜索特殊字符时遇到问题。 我使用like运算符如下:

If Sheets("Eclipse Report").Cells(j, k).Value Like "*[%, !, *, ;, :, ~, °, ß, ö , ô, ó, ò, Ç, ü, é, â, ä , à, å, ç, ê, ë, è, ï, î, ì, æ, Æ, ô, ö, ò, û, ù, ÿ, ¢, £, ¥, ƒ, á, í, ó, ú, ñ, Ñ, °, o, ·, ², €, Ÿ, ©, ®, À, Á, Â, Ã, Ä, Å, È, É, Ê, Ë, Ì, Í, Î, Ï, Ð, Ò, Ó, Ô, Õ, Ö, ×, Ø, Ù, Ú, Û, Ü, Ý, Þ, ã, ð, õ]*" Then    
    Sheets("Eclipse Report").Rows(j).Select
    'Sheets("Eclipse Report").Rows(j).Copy
    'Sheets("Sheet3").Select
    'Sheets("Sheet3").Paste
    Selection.Copy
    Sheets("Sheet3").Select
    ActiveWindow.ScrollColumn = 2
    ActiveWindow.ScrollColumn = 3
    ActiveWindow.ScrollColumn = 5
    ActiveWindow.ScrollColumn = 7
    ActiveWindow.ScrollColumn = 9
    ActiveWindow.ScrollColumn = 10
    ActiveWindow.ScrollColumn = 9
    ActiveWindow.ScrollColumn = 8
    ActiveWindow.ScrollColumn = 6
    ActiveWindow.ScrollColumn = 5
    ActiveWindow.ScrollColumn = 4
    ActiveWindow.ScrollColumn = 3
    ActiveWindow.ScrollColumn = 2
    ActiveWindow.ScrollColumn = 1
    Rows(j).Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    ActiveWindow.SmallScroll Down:=-30
    Rows(j).Select
    ActiveSheet.Paste

    'Sheets("Sheet3").Select

    'Sheets("Sheet3").Paste
    'MsgBox ("special record found and pasted")

    Exit For
End If

代码找不到我预期的记录。

2 个答案:

答案 0 :(得分:1)

从字符列表中删除空格后,它通过了我的测试。

web.setWebViewClient(new WebViewClient() {

    //Opens all the Clicked Links in App itself.. (No Opera/Browser/Chrome/Uc popup)
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
    }

    //Shows a Dialog when there is an Error
    @Override
    public void onReceivedError(WebView view, int errorcode,String description, String fallingUrl) {
        Toast.makeText(getActivity(),"NetWork Error", Toast.LENGTH_SHORT).show();
    }

    //Showing ProgressBar when Page is Loading
    @Override
    public void onPageStarted(WebView view,String url , Bitmap favicon){
        ProgressDialog pd = new ProgressDialog(getActivity());
        pd.setMessage("Loading...");
        pd.show();

    }

    //Hiding ProgressBar when Loading Finished
    public void onPageFinished(WebView view,String Url){
            pd.dismiss();
    }
});

enter image description here

更新:正如共产国际所说,逗号也没有必要。

答案 1 :(得分:1)

Like类似模式的问题在于括号中的字符列表没有分隔符。因此,要匹配axz,您需要使用[axz],而不是[a, x, z]。第二种模式将匹配axz,和空格。

因此,您正在寻找的模式是:

Like "*[%!*;:~°ßöôóòÇüéâäàåçêëèïîìæÆôöòûùÿ¢£¥ƒáíóúñÑ°o·²€Ÿ©®ÀÁÂÃÄÅÈÉÊËÌÍÎÏÐÒÓÔÕÖ×ØÙÚÛÜÝÞãðõ]*"

但请注意,Like对区域设置和文本比较选项很敏感(请参阅MS documentation)。

就个人而言,我考虑使用VScript RegExp - 它们更易于使用,并且具有更多的模式灵活性。