Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


25471 / 76735 ←次へ | 前へ→

【56603】Re:指定シート以外削除 if文ですが
発言  kanabun  - 08/6/23(月) 22:52 -

引用なし
パスワード
   ▼操否 さん:
>上記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
のほうが、より読みやすいと思いませんか? (^^

0 hits

【56473】指定シート以外削除 if文ですが 操否 08/6/18(水) 17:12 質問
【56474】Re:指定シート以外削除 if文ですが Jaka 08/6/18(水) 17:23 発言
【56477】Re:指定シート以外削除 if文ですが 操否 08/6/18(水) 18:18 お礼
【56478】Re:指定シート以外削除 if文ですが kanabun 08/6/18(水) 18:42 発言
【56597】Re:指定シート以外削除 if文ですが 操否 08/6/23(月) 17:28 お礼
【56603】Re:指定シート以外削除 if文ですが kanabun 08/6/23(月) 22:52 発言
【56606】Re:指定シート以外削除 if文ですが 操否 08/6/24(火) 11:36 お礼

25471 / 76735 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free