- 締切済み
色つきの最初と最後
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- hige_082
- ベストアンサー率50% (379/747)
こんな方法は如何 手順 1 開始セルは、左から順番に右方向へ、最初に色のついたセルを求める 2 終了セルは、右から順番に左方向へ、最初に色のついたセルを求める 以上 コードにすると Sub test() Dim 処理行, 開始セル, 終了セル As Integer '2行目から順に最終行まで処理します For 処理行 = 2 To Range("a65536").End(xlUp).Row '処理行の開始セルを求める処理 For 開始セル = 1 To 23 If Cells(処理行, 開始セル + 1).Interior.ColorIndex <> xlNone Then Exit For Next 開始セル '処理行の終了セルを求める処理 For 終了セル = 23 To 1 Step -1 If Cells(処理行, 終了セル + 1).Interior.ColorIndex <> xlNone Then Exit For Next 終了セル '表示処理 MsgBox Cells(処理行, 1).Value & " の最初は " & 開始セル & " 最後は " & 終了セル Next 処理行 End Sub こんな感じです 参考までに
- n-jun
- ベストアンサー率33% (959/2873)
#1です。 ところで色をつけるのは手作業ですよね。 条件付き書式による色つけなら、No1はスル~して下さい。
- AKARI0418
- ベストアンサー率67% (112/166)
アクティブなセルの位置から23カラム右方向へチェックを行い、一番最初に発見した色つきセルの範囲を求めます。 Sub ColorCheck() Const CheckCount As Long = 23 'チェックするセル数 Dim i As Long Dim CheckRow As Long 'チェックする行 Dim StartColumn As Long 'チェック開始列 Dim EndColumn As Long 'チェック終了列 Dim StartPos As Integer '色つき開始列 Dim EndPos As Integer '色つき終了列 CheckRow = ActiveCell.Row StartColumn = ActiveCell.Column EndColumn = StartColumn + CheckCount StartPos = 0 For i = StartColumn To EndColumn If Cells(CheckRow, i).Interior.ColorIndex <> xlNone And StartPos = 0 Then StartPos = i ElseIf Cells(CheckRow, i).Interior.ColorIndex <> xlNone Then EndPos = i ElseIf StartPos <> 0 And EndPos <> 0 And Cells(CheckRow, i).Interior.ColorIndex = xlNone Then Exit For End If Next i MsgBox ("開始位置=" & StartPos & ",終了位置=" & EndPos) End Sub
- n-jun
- ベストアンサー率33% (959/2873)
ループで回して色つきかどうかを1つずつ判断して、色があった場所のセル情報を取得する。 とか?