ここから本文です

ExcelVBA 色塗り

tak********さん

2014/3/2621:00:30

ExcelVBA 色塗り

sub test()
for i = 5 to Range("A" & cells.rows.count).end(xlup).row
flag = true
If InStr(Cells(i,1),"集計") > 0 Then
With Cells(i,1).Resize(1,Cells(i,Columns.Count).End(xlToLeft)).Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorLight2
.TintAndShade = 0.799981688894314
.PatternTintAndShade = 0
end with
end if
next
end sub


上記プログラムは集計という文字が含まれてるセルの行に色を塗るというものなのですが
リサイズの部分がうまくできません。どう修正すればよいのでしょうか。

よろしくお願いいたします。

閲覧数:
114
回答数:
2
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

hel********さん

2014/3/2621:43:31

次のようなコードではどうでしょうか・・
最終列の取得を分けるほうが分かりやすいでしょうね。

Sub Test()
Dim i As Long
Dim Lastcol As Long '列の最終列を取得する変数
For i = 5 To Range("A" & Cells.Rows.Count).End(xlUp).Row
If InStr(Cells(i, 1), "集計") > 0 Then
Lastcol = Cells(i, Columns.Count).End(xlToLeft).Column '集計文字のある行の最終列を取得
With Cells(i, 1).Resize(1, Lastcol).Interior '集計のあるセルから最終列まで
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorLight2
.TintAndShade = 0.799981688894314
.PatternTintAndShade = 0
End With
End If
Next
End Sub

質問した人からのコメント

2014/3/26 21:52:34

降参 大変助かりました。
ありがとうございました。

ベストアンサー以外の回答

1〜1件/1件中

プロフィール画像

カテゴリマスター

tra********さん

編集あり2014/3/2621:41:36

With Cells(i,1).Resize(1,Cells(i,Columns.Count).End(xlToLeft)).Interior



With Cells(i, 1).Resize(1, Cells(i, Columns.Count).End(xlToLeft).Column).Interior

でしょうか?
変更前の「Cells(i,Columns.Count).End(xlToLeft)」では、セル値が返ってくるはず。セル値が数字で無ければ、当然エラーになりますね。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる