重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

標題の件、以下のハンド入力にて、条件付き書式設定とシートモジュールへの
マクロコードを記述すると、アクティブセルの行をハイライト表示できます

知らいたい事は、以下を全てマクロコードにて記述したいでです
コードわかる方、教えて下さい

なお、マクロの記録実施しましたが、条件付き書式の設定は、記録が取れませんでした

【ハンド入力】
条件付書式設定
新しい書式ルール
数式を使用して、書式設定するセルを決定
以下数式を設定
=CELL("ROW")=ROW()
適用先以下設定
=$A$1:$ai$1000

【マクロ入力】
シートモジュールのsheet1に以下を記述

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.ScreenUpdating = True
End Sub

A 回答 (2件)

No1です。



(以下、少々辛口になりますが・・)

>マクロを扱えない人がさわるので、コピペマクロコードにして、
>画像にボタン登録して、実行してもらおうと思っています。
ご自身で使う分には自己責任なので問題はありませんけれど、他人に使わせようとするには、あまりにも検討不足なように感じます。

例えば、「マクロを使えない人」というのは、条件付き書式も使用しないという保証があるのでしょうか?
ご提示のマクロを設定すると、シート内の条件付き書式は全て削除されてしまうことになりますけれど、
 『設定してあった条件付き書式がなくなった。元に戻してくれ』
などと言われた際に、対処できますか?


>画像にボタン登録して、実行してもらおうと思っています。
そのマクロはどうやって設定しておくのでしょうか?
ボタンを作成したりマクロを登録するくらいなら、最初からご提示のコードを設定しておけばよいのでは?
(ボタンもマクロも不要になります)
また、ボタンを誤操作で押してしまった場合に、何もわからないユーザーはどうやって元に戻せば良いのでしょうか?
どうしてもそのような方法で行うにしても、いちいちボタンを各シートに設置してマクロを登録するような方法を採るよりも、アドイン化してしまうという方法も考えられるでしょう。
(こちらも、ボタンは不要になります)


>コピペマクロコードにして~~
どこからコピーするのか不明ですけれど、通常のマクロならbasファイルにしておいてインポートすれば可能ですが、シートモジュールへのインポートはできませんので、コードをテキストとして設定するマクロにしておく必要があります。(テキストはコピペでも良いですが・・)
ただし、同一モジュール内に同一名のプロシージャは設置できませんので、別の目的でイベントマクロが既に設定されていたらどうするのかも含めて、処理を検討しておく必要があるでしょう。
(上記の意味がわからなければ、止めておいた方が良いと思います)

ブック内でコピペするというのであるなら、コピペなどせずにワークブックモジュールに記載しておく方が手間は少ないでしょう。
そうすれば、コピペする必要はなくなりますので。(No1に記載)


いずれにしろ、ご提示のコードを利用するのなら「条件付き書式」は他の目的には使えなくなるということを理解していますか?

意味がわからなかったり、面倒くさいことを考えたくなければ、前回の回答でご紹介した「セルにフォーカス」の機能を利用する方が、エクセルの組み込みの機能になっているので、下手な細工をするよりもリスクや手間を省くことができると考えられます。
    • good
    • 0

こんばんは



質問の内容がはっきりしませんけれど、アクティブなセルの行をハイライト表示したいという事でしょうか?

>マクロの記録実施しましたが、条件付き書式の設定は、
>記録が取れませんでした
きちんと手順を踏めば、記録は取れるはずです。
操作を間違えていませんか?

ただし、記録できるのは「指定範囲に条件付き書式を設定するマクロ」なので、これを何度も実行すると、重複して同じ条件付き書式を設定してしまいます。
手操作で一度実行しておけばすむはずの内容なので、マクロ化する意図がわかりかねます。

一方で、CELL関数の「CELL("ROW")」は「最後に計算を実行したセル位置」を返すので、アクティブセルとは一致しないことは理解なさっていますか?
ですので、セル位置を再設定するために、SelectionCangeイベントでVBAで処理をするという仕組みになっています。


もしも、なさりたいことが上記であっていて、お使いのバージョンが最近の物であれば、ご質問のようなことはしなくても「セルにフォーカス」の機能が追加されていますので、そちらを使えば同じようなことが簡単に実現できます。
https://xtech.nikkei.com/atcl/nxt/column/18/0028 …

旧いバージョンであっても、どうせVBAを使うのなら、条件付き書式を使わずに、全てをVBAで処理をしてしまう方法も考えられるでしょう。
    • good
    • 1
この回答へのお礼

いくつかご指摘、大変ありがとうございます

再度、試してみます
>きちんと手順を踏めば、記録は取れるはずです。
>操作を間違えていませんか?



既にあるファイルではなく、毎回、新しいマクロファイルを作り
そこに、別ファイルからマクロをインポートしようと思っています

>マクロ化する意図がわかりかねます。


よく理解していませんでした。ここの設定した時に選択されているセルのみの行を指しているんですね
>CELL関数の「CELL("ROW")」は「最後に計算を実行したセル位置」を返すので、アクティブセルとは一致しないことは理解なさっていますか?


こちらの機能は知りませんでした。今回は行のみハイライトしたいと考えています
セルにフォーカス

お礼日時:2025/03/02 10:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A