- ベストアンサー
マクロで色が同じになるように設定したい
こんにちは。 現在マクロに挑戦中なのですが、一点分からず戸惑っています。 お分かりになる方教えてください。 下記のマクロを書きました。 Sheet2のセルに数字を入れることによってSheet1のセルの色が変わるようにしています。 25以上の数字は全て青(カラー番号5)表示にしたいのですが、どのように記したら良のか教えてください。 --------------------------------------------------------------- Private Sub Worksheet_Change(ByVal Target As Range) Dim iColors As Variant Dim i As Integer Dim j As Integer iColors = Array(36, 20, 24, 37, 40, 39, 17, 22, 45, 43, 28, 6, 4, 41, 18, 47, 50, 46, 10, 7, 3, 21, 9, 5) For Each c In Target If c.Value <> "" Then If IsNumeric(c.Value) Then i = c.Value If i > 0 And i < 25 Then j = iColors(i - 1) Else j = 2 End If End If End If i = c.Row If i > 2 And j > 0 Then Worksheets("Sheet1").Range("B3:K6").Cells(i - 3).Interior.ColorIndex = j End If Next c End Sub --------------------------------------------------------------- お分かりになる方、宜しくお願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
途中のIf~End Ifだけ書きますが、こんな書き方もできます i = c.Value If i <= 0 Then j = 2 Else If i >= 25 Then j = 5 Else j = iColors(i - 1) End If End If また元のロジックを生かすならこんな書き方もありでしょう i = c.Value If i >= 25 Then i = 24 End If If i > 0 And i < 25 Then j = iColors(i - 1) Else j = 2 End If
その他の回答 (2)
- hallo-2007
- ベストアンサー率41% (888/2115)
i = c.Value If i > 0 And i < 25 Then j = iColors(i - 1) Else j = 2 End If の部分ですが i = c.Value j = iColors(i - 1) If i < 25 Then j = 5 End IF If <=0 Then j = 2 End IF ほか i = c.Value Select Case i Case Is <= 0 j = 2 Case Is < 25 j = iColors(i - 1) Case Else j = 5 End Select の様な書き方はいかがでしょうか。
お礼
回答ありがとうございます☆ 最初にCaseを使おうと思ったのですが、ズラズラとCaseを使うやり方しか分からなく、25もCaseを書くのが・・・と思っていたのですが、こーゆーやり方もあるんですね! 大変勉強になりました。 ありがとうございます(^^)/
- higekuman
- ベストアンサー率19% (195/979)
確認ですが、このマクロは、質問者様が作ったんですよね? このマクロだと、25以上はどうなる(何色になる)のでしょうか?
補足
こんにちは。 マクロですが、私が作ったというような教えてもらったというような。。 初心者なのでネット上で調べたり教えてもらいながら書いてみました。 25以上は青(カラー番号5)がずっと続きます。
お礼
ありがとうございます☆ 綺麗に理想通り動きました。 マクロを勉強中でこちらのマクロもネットで調べたり教えてもらいながら書いたものなので・・・まずはこちらを理解し、応用など作ってみながら勉強し直します。 本当にありがとうございました(^0^)/