1217941415 ExcelVBAです。


添付のように集計結果の各行や列に、色をつけたいのですが
どうすればよいでしょうか?
行(商品名の増)や列(年月の増)の数は毎回異なります。

↓商品名=A列は毎回変わらない
・A列に「*合計*」がある場合、その行の最終列まで任意の色をつける
・A列に「総計」がある場合、その行の最終列まで任意の色をつける
 (列数は毎回異なるので、「F列まで」という範囲指定はできない)

↓タイトル名=1行目は毎回変わらない
・1行目に「計」がある場合、その列の最終行まで任意の色をつける
 (行数は毎回異なるので、「何行まで」という範囲指定はできない)

「最終行・列を取得して、そこまで色をつける」がイマイチわからず、
困っています・・・・

すいませんが宜しくお願いします。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2008/08/05 23:37:16
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:Mook No.1

回答回数1314ベストアンサー獲得回数393

ポイント100pt

下記のようでどうでしょうか。

色に関して変更したい場合は、下記のページを参照ください。

http://www14.big.or.jp/~kawamura/color_table.htm

Sub PaintSumRow()
    Dim lastCol As Long
    Dim lastRow As Long
    
    Dim res As Range
    Set res = Rows(1).Find(what:="計", lookat:=xlWhole)
    If res Is Nothing Then
        MsgBox "1行目に""計""がありません"
        Exit Sub
    End If
    lastCol = res.Column
    
    lastRow = Range("A" & Rows.Count).End(xlUp).Row
    
    Dim i As Long
    For i = 1 To lastRow
        If InStr(Cells(i, "A").Value, "合計") > 0 Then
            Range("A" & i).Resize(1, lastCol).Interior.ColorIndex = 36
        End If
        If Cells(i, "A").Value = "総計" Then
            Range("A" & i).Resize(1, lastCol).Interior.ColorIndex = 40
        End If
    Next
    Cells(1, lastCol).Resize(lastRow, 1).Interior.ColorIndex = 38
End Sub

問題があれば、コメントで対応します。

id:hananeko_0

添付ファイル以外のパターンでも確認しました。

全てOKです。完璧ですっ

色の参考ページもすいませんっ (*^_^*)

Mookさん、本当にいつもありがとうございます!

2008/08/05 23:36:17
  • id:Mook
    いつもイルカ賞ありがとうございます。

    VBA はパズルみたいな感じで回答できるので、こちらも半分楽しみながら
    回答しています。

    お役にたったようでなによりです。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません