|
▼操否 さん:
>上記2つが定番?みたいな気がしましたが、IF文は理解不足なので
>Select Caseのほうが、間違わなくてすみそうな気がします
同感です。
ANDやOR ってのは、難しいです。
ワークシートの数式ですと、1行で書かなければならないので、
AND関数やOR関数をよく使いますが、VBAはそれとちがい、
ステートメントを複数並べて処理を記述できますから、
なるべく And や Or 演算子を使わず(ドモルガンの法則に立ち
入らず ^^)やりたいことを率直に記述する方法で行きましょう♪
ぶっちゃけた話、
If シートが a でなく And シートが b でもなければ Then
とか、
If (シートが a または シートが b ) 以外のときThen
と書くと、
Basicでは <シートがa かどうか> を調べ、その結果、
<シートが b かどうか> 調べる必要がなくても、必ず
<シートが b かどうか> 調べるので、(★)
こういう書き方は 時間のムダ、と考えるわけです。
(★)VB.NET では AndAlso 演算子、OrElse 演算子なるものが
あり、C言語同様に 2条件の判断のとき、最初の条件の判断
で2番目の条件文を評価する必要がないときは、さっさと
次の処理に移るようなコーディングができるようになりま
したが。
If 文を使って書くときでも、And または Or で1行にするよりも、
むしろ、
If シート<>a Then 'シートが a でなく
If シート<> b Then 'なおかつ、シートが b でなかったときのみ
シート削除 '処理をする
End If
End If
のほうが無駄が少ない書き方と言える訳です。
でも、そういうことなら、
Select Case シート
Case a, b
Case Else
シート削除
End Select
のほうが、より読みやすいと思いませんか? (^^
|
|