• ベストアンサー

EXCEL VBAによる列番号の取得

a行のx列まである色で塗られている. 色の塗られている範囲で,最終列にあたるセルの 列番号を取得したい. このような場合,どのようにVBAを記述したらよいのでしょうか? どうぞよろしくお願いいたします.

質問者が選んだベストアンサー

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

一発(VBAコード1行)で求める方法は無いと思う。 データの右端の列は (下記は第1行目の例ですが) Sub test01() i = 1 c = Cells(i, "IV").End(xlToLeft).Column MsgBox c End Sub この列から始めて、1列づつ左方向に聞いていく (下記は第1行目の例ですが) ただし条件付書式で色がついている仕組みのセルには下記はうまく 判別しない。 条件のセルの値そのものに立ち返って、判別するコードを組み込まないといけないでしょう。 下記で言えば、IF-ENDIFの間に、「セルの値が」か「数式が」の式に当たるVBAでのコードを入れることになる。(注) Sub test01() i = 1 c = Cells(i, "IV").End(xlToLeft).Column MsgBox c For j = c To 1 Step -1 If Cells(i, j).Interior.ColorIndex <> xlNone Then MsgBox j End If Next j End Sub ーーー (注) そのセルで条件付書式FormatConditionsが成立しているかどうか、直接聞く方法は、VBAには、なかったように思う。

nankoro_x
質問者

お礼

早速のご回答ありがとうございます. 私の行いたかった処理に,imogasi様のご回答が最も合致していたので大変参考になりました. 誠にありがとうございました.

その他の回答 (3)

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.3

色塗りって条件付き書式ではないですよね。

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.2

Sub test() a = 7 'たとえば7列目なら、 x = 1 While ActiveSheet.Cells(a, x).Interior.ColorIndex <> xlNone x = x + 1 Wend x = x - 1 MsgBox x End Sub

nankoro_x
質問者

お礼

早速のご回答ありがとうございます. 非常に参考になりました.

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.1

余りスマートではないですが、下記でどうでしょうか。 Sub test()   Dim mycc As Range   For Each mycc In Rows(1).Cells     If mycc.Interior.Pattern = xlSolid Then       If mycc.Offset(, 1).Interior.Pattern = xlNone Then         MsgBox mycc.Column         Exit Sub       End If     End If   Next End Sub

nankoro_x
質問者

お礼

早速のご回答ありがとうございます. 非常に参考になりました.

関連するQ&A