プロが教えるわが家の防犯対策術!

vbaでのifの使い方について質問です。
for =1to100
if a.value=b.value _
and c.value="三菱ufj","三菱UFJ","三菱うfj" then

aとbの値が同じ場合かつ、cの値が三菱ufj,三菱UFJ,三菱うfjの場合という処理を行いたいです。

背景としましては、三菱UFJを手打ちで打ち込んでいるため、打ち間違えも拾うよう様々な値に対応したいです。

if以外でも対応できれば、教えてください。

よろしくお願いします。

A 回答 (3件)

多分「If a.Value = b.Value And (c.Value = "三菱ufj" Or c.Value = "三菱UF

J" Or c.Value = "三菱うfj") Then」にしたいのでは…
    • good
    • 0
この回答へのお礼

素早い回答ありがとうございます!!
無事できました!

お礼日時:2017/09/03 07:08

初心者がやりがちな間違いなんですが



 Xが、Z1,Z2,Z3 だったら
 Xが、Z1またはZ2またはZ3 だったら

という条件を、そのまま

 X=Z1,Z2,Z3
 X=Z1 or Z2 or Z3

と書いても、コンピュータはそうは判断してくれません。
= では、1つのものと1つのものを比較することしかできません。
※同じように、 X<Y<Z も数学の表記通りの結果にはなりません。


対策の一つは、コンピュータでも理解できる形式で考えることです。
 Xが、Z1,Z2,Z3 だったら
は言い換えると
 XがZ1 あるいは XがZ2 あるいは XがZ3 だったら
ということです。これをそのままに書けば
 (X=Z1 or X=Z2 or X=Z3)
となり、これだとコンピュータでも期待通りの解釈をしてくれます
※ 演算子の優先順位を考えて、全体を括弧でくくっています。


もう一つは、複数の条件を判定できるような手法を使うことです。
例えば
・like 演算子を使ったパターンマッチ
https://msdn.microsoft.com/ja-jp/library/office/ …
・Filter関数で、一覧にあるか無いかを調べる



別解として、最初から入力を制限してしまう、という方法もあります
https://support.microsoft.com/ja-jp/help/942827
    • good
    • 0
この回答へのお礼

様々な対応策ありがとうございます!
改良する際の入力制限も検討してみます!
ありがとうございました!

お礼日時:2017/09/03 11:54

こんにちは!



間違いが少ないのは「OR」や「AND」を使用するより、IFをネストする方法だと思います。

If a = b Then
If c Like "三菱*" Then
"//処理//
End If
End If

といった感じで・・・m(_ _)m
    • good
    • 0
この回答へのお礼

具体的な例ありがとうございます!!
早速、likeを使わせていただきます!!
ありがとうございました!!

お礼日時:2017/09/03 07:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!