- ベストアンサー
VBAのマクロで[と”の意味を教えてください
- VBAのマクロで[と”の意味が分からない状況です。[と”はそれぞれ特別な意味を持っています。
- 作成したマクロの中で、[1-10]のような表記が行われていますが、これは特定の範囲の数字を表すパターンマッチングの一種です。
- 作成したマクロの中での条件分岐の結果、想定と異なる動作が起こっているようです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
No.2です! 前回の投稿で間違いがありました。 >>If i Like "[1-9 10]" Then は10の場合まったく反応しませんね! 仮に1~13までの範囲を無理やりLIKE演算子でやると >If i Like "[1-9]" Or i Like 1 & "[0-3]" Then のような感じでないとダメのようです。 という訳で、今回の質問にあるように 1~10 だと >If i Like "[1-9]" Or i = 10 Then もしくは >If i Like "[1-9]" Or i Like 10 Then といった感じでしょうか? これならわざわざLIKE演算子を使うより、単純に >If i >= 1 And i <= 10 Then の方が簡単ですね!m(_ _)m
その他の回答 (2)
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! LIKE演算子を使う場合 [ ]でくくられている前後に必ずダブルクォーテーションがついています。 すなわち文字列扱いで、「あいまい検索」の場合に使用することが多いと思います。 たとえば A-Z(A~Z) a-z(a~z) 0-9(0~9) といったような感じで・・・ 質問にある"[1-5]"は 「1マイナス5」という意味ではなく、1・2・3・4・5 のどれかと一致すれば「真」となります。 ハイフンでつながっている場合は一文字ずつの検索となりますので、 どうしてもLIKE演算子を使って 1~10までを指定したいのであれば >If i Like "[1-9 10]" Then のようにすれば可能だと思いますが、数値の場合は >If i >= 1 And i <= 10 Then のような感じの方が好ましいのではないかと思います。(←あくまで私的見解です) この程度で参考になりますかね?m(_ _)m
お礼
[]とダブルコクォーテーションはセットなのですか。 1さんと同様andを使うのが良いようですね。 とても参考になりました!ありがとうございました。
- ariseru
- ベストアンサー率56% (928/1657)
>でも上記のマクロを実行させた結果、 >"[1-10]"の中で計算が行われてるのではないかと思います。 > >だから、test3は、1-10=-9 >という事になり、msgboxが反応しないのではないかと思っています。 これはありません。 仮に、そうなっているのなら"[1-5]"の時も1-5=-4という計算をしていなければおかしいですから。 質問者さんがやっている方法で上手く処理されないのはLike演算子の仕様の問題っぽいですね。 "[1-9]"とか"[0-9]"でやってみると何の問題も無く処理されますので、Like演算子で数字を判断する場合、[]の中に入れて判定できるのは一桁の数字までなんでしょうね。 そもそも、何でLike演算子なんかを使っているのかが分かりません。 変数の中身が1~10の範囲なのかの確認ならIf文でも簡単に出来ると思うのですが…… If i>=1 And i<=10 Then 「If i Like "[1-10]" Then」という行を上記のように書き換えるだけで解決しますよ。
お礼
難しいですが >Like演算子で数字を判断する場合、 >[]の中に入れて判定できるのは一桁の数字までなんでしょうね。 が理由のようですね。 andを使うのが良いようですね。ありがとうございました。
お礼
likeで行うのは難しそうなので素直にandを使うようにします。 再度ありがとうございました。