• 締切済み

VBAのLike演算子で、

こんにちは。いつもお世話になっております。 VBAのLike演算子で、 日本語・アルファベット・数字が混ざっている文字列について、 アルファベット・数字のみを選択したいとき、 次のようなことを考えました。 j = 0 Do While Rng.Characters(j) Like "[!a-zA-Z0-9]" Rng.Start = Rng.Start + 1 j = j + 1 Loop しかし、実行してみると、 「指定されたコレクションのメンバは存在しません」 というエラーが返されてしまいます。 私の知識不足かと思いますが、 原因をご存じでしたら、教えていただきたいと思います。

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

#2の回答者です。 他の方は、Excelだと思っているようですが、私は、あくまでも、Word VBAを前提としてお答えさせていただいております。Range オブジェクトの下に、Characters コレクションがあるのは、Wordです。エラーの内容が違います。 前回、十分にVBAを理解している方だと思って、簡単な回答させていただきましたが、未だ、いろいろつまずいて、完成していないようでしたら、全体的なものを示していただて、その部分をこうしたいと提示していただいたほうが分かりやすいです。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

手探りでやったが、こういうことでよいのかな。 例データ A1セルに 'aasカキク123 と入れた(カキクは半角文字) 実行結果は英数以外のカタカナの カキク(半角)を返した。 !は正規表現の^ですか、「含まれない」ですよね。 Mid関数などで出来ないかと思ったが、Charactersオブジェクトを使ってみた。 ーー Sub test02() Set obj = Range("A1") Dim objChr As Characters j = 1 s = "" Do While j <= Len(obj) Set objChr = obj.Characters(Start:=j, Length:=1) MsgBox objChr.Text If objChr.Text Like "[!a-zA-Z0-9]" Then s = s & objChr.Text j = j + 1 Loop MsgBox s End Sub

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 質問とコードの内容が違うようです。 >「指定されたコレクションのメンバは存在しません」 Characters(j)のCharacters は、オブジェクトであって、コレクションがあっても、それで文字列は取れません。ここら辺は、基本的なレベルです。 それはともかく、 >アルファベット・数字のみを選択したいとき、 コードと意図しているまったく内容は違います。全体として、どういう内容かは分かりませんが、Text を取り出すなら、全体を Text を取ればよいのですが、Document を選択をするというなら、違います。なお、以下は、最初に、範囲選択のSelection が必要です。 サンプルを出しておきます。実用には、Find メソッド等を使います。 Sub Test1()   Dim rng As Range   Dim i As Long   Dim st As Long   Dim ed As Long   Dim s As Variant   st = -1      Set rng = Selection.Range      For i = 1 To rng.Characters.Count     s = rng.Characters(i).Text     If s Like "[A-z0-9]" Then     If st = -1 Then st = i - 1     ElseIf st > -1 Then       ed = i - 1       Exit For     End If   Next   rng.SetRange Start:=st, End:=ed   rng.Select End Sub

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.1

以下の様なコードは参考になりますでしょうか。 Sub ボタン1_Click() If ActiveCell.Value Like "*[a-zA-Z0-9]*" Then MsgBox "指定文字を含んでいます" Else MsgBox "指定文字を含んでいません" End If End Sub

関連するQ&A

専門家に質問してみよう