Excel VBA質問箱 IV

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

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


261 / 74190 ←次へ | 前へ→

【79569】ifのネストを浅くしたい
質問  なー  - 18/1/12(金) 22:59 -

引用なし
パスワード
   こんにちは
現在、条件によってセルの背景色を変えるマクロを作成しています。
その条件というのが、10:00〜17:00までの1時間ごとに、その時間以降、
セルの値が特定のものだったら色を変える、というものです。

A1セルの値は不定の時間によって○→△→□と変化していき、
B1、C1セルの値は不変です。

そこで下記のようなマクロを作成しました。

Sub ChangeColor()

Dim rng1 As Range
Dim rng2 As Range
Dim rng3 As Range
Set rng1 = Range("A1")
Set rng2 = Range("B1")
Set rng3 = Range("C1")

  If Time > CDate("10:00") Then
    If rng1 Like "*○○*" And rng2 Like ("*い*") Then
      rng1.Interior.ColorIndex = 3
    End If
    
    If Time > CDate("11:00") Then
      If rng1 Like "*△△*" And rng3 Like ("*う*") Then
        rng1.Interior.ColorIndex = 4
      End If
      
      If Time > CDate("12:00") Then
        If rng1 Like "*□□*" And rng3 Like ("*う*") Then
          rng1.Interior.ColorIndex = 5
        End If
      
        If Time > CDate("13:00") Then
          
          If Time > CDate("14:00") Then
          
            If Time > CDate("15:00") Then
            
              If Time > CDate("16:00") Then
              
                If Time > CDate("17:00") Then
                
                
                End If
              End If
            End If
          End If
        End If
      End If
    End If
  End If

End Sub

とりあえず狙ったようには動くのですが、他サイトなどを見ると
あまりネストを深くするべきではない、などの記述がありますし
自分で見ても混乱する時があります。
また、時間と時間の間の条件は、今後追加や削除がありえます。
Select〜Caseを使えばいいらしい、というのは目にしたのですが
どう記述すればよいかがいまいち分かりません。
このような記述をより浅く、もしくは別の方法でより分かりやすく
記述するにはどうすればよいでしょうか。
よろしくお願いいたします。

81 hits

【79569】ifのネストを浅くしたい なー 18/1/12(金) 22:59 質問[未読]
【79570】Re:ifのネストを浅くしたい γ 18/1/12(金) 23:21 回答[未読]
【79571】Re:ifのネストを浅くしたい なー 18/1/13(土) 0:08 お礼[未読]

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