Excel VBA 質問スレッド No.828 (解決済)

アクティブ行を目立たせる範囲を指定したい

投稿者 : ワケワカメ     投稿日時 : 2022/06/24(Fri) 09:24:59     OS : Windows 10     EXCEL : Excel 2013
アクティブ行を目立たせる範囲の列指定をしたいですが、
うまくいかず困っております。どなたかご教示いただけませんでしょうか。

以下の通り、コードを書いておりますが、O列までの指定をすると、
構文エラーとなってしまいます。
ド素人な発想かもしれませんが、
Rows(i)のところを、Range(i, 15)とかにアレンジしたり、cells指定したりやはりうまくできませんでした。

どなたかお知恵を貸していただけませんでしょうか。
宜しくお願い致します。


Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)


'作業中のアクティブ行を目立たせる

'画面更新の無効
Application.ScreenUpdating = False

'変数の宣言
Dim myDataRow As Long
Dim i As Long

'色を付けたい開始行を設定
myDataRow = 4

'フォーカスがあたっているセルが上で指定した行目以降だった場合、以下の処理を行う。
If ActiveCell.Row >= myDataRow Then

'色の初期化
Rows(myDataRow & ":" & Rows.Count).Interior.ColorIndex = xlNone

'選択行を取得
i = Target.Row

'選択行に色を付ける
Rows(i).Interior.ColorIndex = 36

'画面更新の無効
Application.ScreenUpdating = True

End If
End Sub

[返信 1] Re : アクティブ行を目立たせる範囲を指定したい
投稿者 : さんこう     投稿日時 : 2022/06/24(Fri) 09:43:02
「条件つき書式」を使うと楽です。

参考になれば。

https://www.google.com/search?q=%E6%9D%A1%E4%BB%B6%E4%BB%98%E3%81%8D%E6%9B%B8%E5%BC%8F+ActiveCell

[返信 2] Re : アクティブ行を目立たせる範囲を指定したい
投稿者 : てらてら     投稿日時 : 2022/06/24(Fri) 09:49:07
こんにちは。

エラーの原因かどうかわかりませんが、最後の

'画面更新の無効
Application.ScreenUpdating = True

はEnd Ifの外に出すべきでしょうね。

っで。テストの段階で、
Application.ScreenUpdating = False
のままだと厄介なので冒頭に

Application.ScreenUpdating = True
Application.ScreenUpdating = False

と予防線を張っておくのもいいかと思います。
(テストが終わったら削除します)

[返信 3] Re : アクティブ行を目立たせる範囲を指定したい
投稿者 : ピロリ     投稿日時 : 2022/06/24(Fri) 12:39:08
私の PCではエラーになりませんけど ???

また、 If ActiveCell.Row >= myDataRow Then ・・・【中略】・・・ i = Target.Row
これでは、上方向に複数範囲を選択した場合に、1~3行目が黄色になってしまいます。
例えば、A10:C2を選択した場合、ActiveCell.Row=10,Target.Row=2 なので、2行目が黄色。
1~3行目を一旦黄色にしてしまうと、一生消えてはくれません。
i = ActiveCell.Row ( ActiveCell.Rowで統一かな?)すべきと思いますが。 参考まで。

[返信 4] Re : アクティブ行を目立たせる範囲を指定したい
投稿者 : さんこう     投稿日時 : 2022/06/24(Fri) 13:03:34
>O列までの指定をすると

さりげなくかかれているので、意味不明でした。

'選択行に色を付ける
Intersect(Rows(i), Columns("A:O")).Interior.ColorIndex = 36

[返信 5] Re : アクティブ行を目立たせる範囲を指定したい
投稿者 : ピロリ     投稿日時 : 2022/06/24(Fri) 13:27:16
なるほど。
「指定」とは「操作」の話ではなくて「色々と試行錯誤している処理変更の内容」って話ですか。
ならば納得です。 提示いただいたコードで再現しないはずですね。。。

[返信 6] Re : アクティブ行を目立たせる範囲を指定したい
投稿者 : ワケワカメ     投稿日時 : 2022/06/24(Fri) 14:44:13
てらてら様
さんこう様
ピロリ様

上記皆さまに教えていただいたコードにてうまくいきました!!!
分かりにくい質問なのに、お時間頂きご面倒をおかけしました。

条件付き書式でもできたのですが、行挿入して運用していくうちに、無限に増え続ける条件付き書式ルールに、苦労しておりました。

本当にありがとうございます。

[返信 7] Re : アクティブ行を目立たせる範囲を指定したい
投稿者 : hatena     投稿日時 : 2022/06/24(Fri) 15:34:17
ご希望のことは下記のようなことでしょうか。

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
'作業中のアクティブ行を目立たせる

'画面更新の無効
Application.ScreenUpdating = False

'変数の宣言
Dim myDataRow As Long
Dim myDataLastColumn As Long
Dim i As Long

'色を付けたい開始行を設定
myDataRow = 4
'色を付けたい最終列を設定
myDataLastColumn = 15 'O列

'色の初期化
Range(Cells(myDataRow, 1), Cells(Rows.Count, myDataLastColumn)).Interior.ColorIndex = xlNone

'フォーカスがあたっているセルが上で指定した行以降かつ列より左だった場合、以下の処理を行う。
If ActiveCell.Row >= myDataRow And ActiveCell.Column <= myDataLastColumn Then


'選択行を取得
i = ActiveCell.Row

'選択行に色を付ける
Cells(i, 1).Resize(, myDataLastColumn).Interior.ColorIndex = 36


End If
'画面更新の無効
Application.ScreenUpdating = True
End Sub

[返信 8] Re : アクティブ行を目立たせる範囲を指定したい
投稿者 : ちょっと     投稿日時 : 2022/06/25(Sat) 06:20:48
私のお薦めは、
(1)
=CELL("row")=ROW()
という条件付き書式と
(2)
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.ScreenUpdating = True
End Sub

という一行マクロを巧妙に組み合わせた俗称「アンドリューの方法」という
手法です。

下記参照ください。
https://www.relief.jp/docs/001406.html

「無限に増え続ける条件付き書式ルール」というのが理解できませんでした。
飛び地をたくさん作ればそうかもしれないが、飛び地ではなく連続していれば、
矩形領域の適用先の定義が拡がるだけのはずです。

当掲示板について
返信入力フォーム
お 名 前  :
内  容   :
ステータス  : この質問を解決済みにする

認証コード  :
        キャプチャ画像


( 処理日時 : 2022-07-07 13:27:28 )

Page
Top