• 締切済み

エクセルVBA負の値を含む行を表内で配色する方法

列幅は固定(A:Q)で、行数は毎回変化する表を作成しております。 Q行が負の値である行のみ、表の範囲内で色づけするようマクロを組みたいのですが、 適切なコードがわからず困っています。 本やネット検索で、特定のセルのみや行全体を指定する方法はわかったのですが、 数値検索と表内での範囲指定をどう組み合わせてよいのかわかりませんでした。 なお、必ずしも全ての列にデータが入っているわけではない為、 xlToLeftなどは使えないのかな?と思っております。 VBAをはじめたばかりで、初歩的な質問であれば申し訳ありません。 解決策をご教示頂ければ幸いです。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.5

#2、#4です。 エクセルの条件付き書式をVBAでやってみました。 私自身悩んだ点がありましたので、参考までにコードを上げてみました。 xlExpressionを使う点です。 Sub Example2() ThisWorkbook.Worksheets(4).Select Selection.FormatConditions.Delete With ThisWorkbook.Worksheets(4).Range("B1:h10") '色を付ける列限定 .FormatConditions.Delete .FormatConditions.Add Type:=xlExpression, Formula1:="=$Q1<0" '条件が同行のQ列にあることを示す .FormatConditions(1).Interior.ColorIndex = 6 End With End Sub

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

#2です。前回答のほかに下記の方法もあります。 (3)オートフィルタを使う方法 (4)Findメソッドを使う方法。 ーー (3)は Sub test04() Dim c As Range Dim d As Range Range("A1").AutoFilter ActiveSheet.Range("A1").AutoFilter Field:=17, Criteria1:="<0" With ActiveSheet.AutoFilter Set A = Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible) Set B = Range("G2:Q20") '列限定のため Set d = Application.Intersect(A, B) '列限定のため d.Interior.ColorIndex = 6 '黄色 End With End Sub 言いたいことは、(該当の行を探すため)いろいろな方法が考えられる、ということです。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.3

 For Each~Nextを使った方が手っ取り早いかも知れません。 Sub QNo8993372_エクセルVBA負の値を含む行を表内で配色する方法() Dim c As Range For Each c In Range("Q1:Q" & Range("Q" & Rows.Count).End(xlUp).Row) If c.Value < 0 Then Application _ .Intersect(c.EntireRow, Columns("A:Q")).Interior.Color = 255 Next c End Sub

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

何も「むつかしいとか、悩む点はない」と思うが。 初歩的なVBAの本にも載っている話が多い。 (1)考え方では、初歩的な方法 (2)エクセル機能の「条件付き書式」を用いての設定 などある。 (1)の方法では((2)は省略) Sub test01() lr = Range("Q1000").End(xlUp).Row MsgBox lr For i = 2 To lr If Range("Q" & i) < O Then MsgBox i ActiveSheet.Range("A" & i & ":Q" & i).Interior.ColorIndex = 3 End If Next i End Sub (A)最下行の捉え方は、2,3種ヴァリエーションがある。 (B)セルの表現の仕方にも、2,3種ヴァリエーションがある (3)色の表現も、ColorIndex、、RGB、VbRedのようなヴァリエーションがある。 こんあんちょころえこんなところへ質問する前に、Googleで 「エクセル VBA 条件 セルの色付け」 「エクセル VBA 最下行の捉え方」 「エクセル VBA 色」 http://officetanaka.net/excel/vba/cell/cell05.htm 「エクセル VBA 色」条件付き書式」 セル色と文字色などがある で照会したら。 ーー マクロの記録も勉強に使うとよい。 エクセルの条件付き書式も操作を知ってますか。それをして マクロの記録を取ると出るようなコード。それに多少手を加えたら仕舞。

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

sub macro1()  dim r as long  for r = 1 to range("Q65536").end(xlup).row   if cells(r, "Q").value < 0 then    application.intersect(range("A:Q"), rows(r)).interior.color = vbred   end if  next r end sub みたいな。

関連するQ&A