Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Excel 2016)
条件付き書式を他のBOOKに利用するマクロ
投稿日時: 20/07/27 10:38:47
投稿者: hareru

条件付き書式のマクロを作成し、アドインで利用出来るようにしました。事前にアクティブなBOOKのsheetに以下ののコードを設定しておけば想定通りに動作します。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Application.ScreenUpdating = True
End Sub
条件付き書式のマクロはアクティブセル行全体をハイライトする仕様です。
上記コードを事前に対象のBOOKに書き込むのでは無く、アドインで条件付き書式マクロを選択実行した時に該当BOOKのsheetに有効にしたいのですがどのような方法があるのでしょうか?
該当BOOKのsheetにマクロを書き込むことは出来ないと思っています。
アドバイスをお願いいたします。

回答
投稿日時: 20/07/27 12:01:25
投稿者: takesi

クラスを使った全ブック(他ブック)のイベント補足
https://excel-ubara.com/vba_class/VBA_CLASS_02.html
 
頑張ればできるのかな?

投稿日時: 20/07/27 16:34:28
投稿者: hareru

takesiさん、ありがとうございます。
CLASSで作成するのは敷居が高いです。
でもネットを検索しても他になさそうなんですよね。
 

回答
投稿日時: 20/07/27 17:09:51
投稿者: WinArrow
投稿者のウェブサイトに移動

アドインにする
ってことは、
条件式の中のパラメータ(値ではなく、セルのアドレス)が変数化できるか否かで決まります。
条件式を制限する(欲張らない)ことで、ある程度可能と思います。
そのあたりを整理すると、可能なのか判断できると思います。
 
私も、セルの情報解析のプログラムを作成したことがあります。
Excel2003までは、問題なく対応できましたが、
Excel2007以降は、条件付き書式の仕様が大幅に変更された(変更という限度を超えている)ため、
Excel2003レベルまでは対応したが、それ以上はあきらめムード・・・・

回答
投稿日時: 20/07/27 20:14:18
投稿者: simple

(1)
質問者さんが使おうとしているのは、
行や列を強調するための下記の方法かと思います。
「アクティブセルのある行・列を目立たせる」
https://www.relief.jp/docs/001406.html
 
(2)
提案のあった手法は、特別のクラスモジュール必須ということでもないかもしれません。
(というのは、Thisworkbookモジュールはクラスモジュールの一種だと思うので)
 
下記のようなコードをアドインの Thisworkbookモジュールにセットして
試してみて下さい。
 

Option Explicit

Private WithEvents app  As Excel.Application

Private Sub app_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    app.ScreenUpdating = True
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    On Error Resume Next
    Set app = Nothing
End Sub

Private Sub Workbook_Open()
    Set app = Application
End Sub

# アドインでの検証はしていませんので、そちらでお願いします。
 
(3)
ただし、他のいずれのブックでもこれ(app_SheetSelectionChange)が働きますから、
その副作用に気をつける必要があると思います。
(なお、個人的には、(1)は余り日常的に使うものという感じはしません。
  デフォルトのもので十分というのが私見です。)
 
# 修正前のものをコピーしていました。上記に差し換え下さい。

投稿日時: 20/07/28 15:08:04
投稿者: hareru

WinArrowさん、Simpleさん
回答ありがとうございます。
 
simpleさん、コードを提供して頂いてありがとうございます。
simpleさん仰るように副作用が気になります。
他のEXCELマクロでもScreenUpdatingのON,OFFを実装しているので。
 
classで作成は時間をかければ何とかなりそうですが、その後のフォロー、メンテに負荷がかかりそうなので止めておきます。
 
方向性を今一度、検討してみます。
貴重なアドバイスをありがとうございました。