Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(指定なし : 指定なし)
入力された文言により背景色の変えたい
投稿日時: 23/02/13 09:22:04
投稿者: たいあやぱぱ

A列でステータス管理をさせていて、A列は、A1: 未入力A2:入力済 A3:印刷済 の文字を入れています。
セルA13以降のA列について、A1-A3の文言と一致した場合は、それぞれの背景色を用いるようにしたいと考えています。
 
===
Sub 背景色を変える()
  
     Dim m As Long
     Dim n As Long
     Dim o As Long
  
     m = Worksheets("評価台帳").Range("$A$1").Interior.ColorIndex
     n = Worksheets("評価台帳").Range("$A$2").Interior.ColorIndex
     o = Worksheets("評価台帳").Range("$A$3").Interior.ColorIndex
  
  For i = 13 To 評価最終行
   If Worksheets("評価台帳").Range("A" & i).Interior.ColorIndex = "$A$1" Then
m
   If Worksheets("評価台帳").Range("A" & i).Interior.ColorIndex = "$A$2" Then
n
   If Worksheets("評価台帳").Range("A" & i).Interior.ColorIndex = "$A$3" Then
o
   End If
  
End Sub
===
 
Thenのつなぎ方が理解できておらず。ご教授いただけますと幸いです。
よろしくお願いいたします。

回答
投稿日時: 23/02/13 10:23:46
投稿者: Suzu

条件分岐 If 〜 Then End If については
 
If 判定式 Then
  判定式が True の場合の処理
End If
 
If 判定式 Then
  判定式が True の場合の処理
Else
  判定式が False の場合の処理
End If
 
のどちらか を用います。
 
条件式としては、
・セル A? の値が "未入力" と同じなら
・セル A? の値が "入力済" と同じなら
・セル A? の値が "印刷済" と同じなら
の3つになり
 
それぞれの処理としては
・セル A? の背景色 を m にする
・セル A? の背景色 を n にする
・セル A? の背景色 を o にする
 
にすれば良いでしょう。
 
これをコードにすると
 
If Worksheets("評価台帳").Range("A" & i).Value = "未入力" Then
    Worksheets("評価台帳").Range("A" & i).Interior.ColorIndex = m
End If
If Worksheets("評価台帳").Range("A" & i).Value = "入力済" Then
  :
 入力済・印刷済 分
 
の様に 3つ繋げれば良いです。
 
ここで、条件式に着目すると、左辺は一緒です。
こういう時は、If〜Then 〜 ではなく、Select Case を使うと 見た目 スッキリします。
 

Select Case Worksheets("評価台帳").Range("A" & i).Value
  Case "未入力"
    '未入力 の時の処理
    Worksheets("評価台帳").Range("A" & i).Interior.ColorIndex = m
  Case "入力済"
    '入力済 の時の処理
  Case "印刷済"
    '印刷済 の時の処理
End Select

投稿日時: 23/02/13 13:10:41
投稿者: たいあやぱぱ

ありがとぉございます。、