2016-09-16 12 views
2

excel vbaの列で特殊文字を検索しているときに問題が発生しています。 次のように私のような演算子を使用:コードは、私が期待したレコードを見つけていないexcelマクロのように列内に特殊文字を見つける方法

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 

答えて

1

文字リストから空白を削除した後、それは私のテストに合格しました。

Sub Test() 
    Application.ScreenUpdating = False 
    Dim j As Long, k As Long 
    Dim r As Range 
    With Sheets("EclipseReport") 
     Set r = .Range("A1:O1") 

     For j = 1 To 255 
      r(j) = Chr(j) 
     Next 

     For j = 1 To 17 
      For k = 1 To 15 
       If .Cells(j, k).Value Like "*[%!*;:~°ßöôóòÇüéâäàåçêëèïîìæÆôöòûùÿ¢£¥ƒáíóúñÑ°o·²€Ÿ©®ÀÁÂÃÄÅÈÉÊËÌÍÎÏÐÒÓÔÕÖ×ØÙÚÛÜÝÞãðõ]*" Then 
        .Cells(j, k).Interior.ColorIndex = 6 
       End If 
      Next 
     Next 
    End With 
    Application.ScreenUpdating = True 
End Sub 

enter image description here

更新:コミンテルンが述べたようにカンマがいずれかの必要はありませんでした。

+0

こんにちは@thomas、あなたの答えと親切な助けてくれてありがとう。しかし、私はまだ正しい出力を得ていません。特別な文字を持たないセルは黄色で表示され、期待される出力ではありません。あなたは何かを提案することはできますか? – pooja

+0

ようこそ。ハッピーコーディング! –

1

Likeのようなパターンの問題は、括弧で囲まれた文字リストに区切り文字が含まれていないことです。したがって、ax、およびzと一致させるには、ではなく[axz]を使用する必要があります。 2番目のパターンはa,x,z,,とスペースに一致します。

だから、あなたが探しているパターンは次のとおりです。

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

しかし、Likeはロケール設定に敏感であり、あなたのテキストは(MS documentationを参照)オプションを比較することに注意してください。

個人的には、私はVScript RegExpを代わりに使うことを検討したいと思います。これらは使いやすく、パターンの柔軟性がはるかに優れています。

+0

私の答えはすでに受け入れられましたが、あなたが述べたように、文字リストからコンマを削除しました。ありがとう+1 –

関連する問題