Excel (VBA)

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

 
(Windows 10 Pro : Excel 2016)
シート上で任意のセルに入力時、シートの見出しの色を変えたい。
投稿日時: 21/02/23 15:57:07
投稿者: TTOS

お世話になっております。
 
先日、下記のコードについて質問させて頂き、解決済みとなったのですが、
新たに問題が起き、改めて質問させて頂きます。
 
シートごとに非空白セルが異なる為、ThisWorkbookにWorkbook_SheetChangeを記入できず
各シートにWorksheet_Changeを使用して動かしたいのですが、上手く行きません。
 
改善点をご教示頂ければ幸いです。
宜しくお願い申し上げます。
  
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    If Application.CountA(Sh.Cells) > 259 Then
        Sh.Tab.ColorIndex = 3
    Else
        Sh.Tab.ColorIndex = xlNone
    End If
End Sub

回答
投稿日時: 21/02/23 16:26:58
投稿者: WinArrow
投稿者のウェブサイトに移動

シートごとに異なるのは、
259
が違うということですよね?
 
後からの変更することを考え、コードの中に記述するよりも
 
259を最小個数と言い換えますが、
シートごとの最小個数をどこかに記録(設定)しておき
シート名で検索する
というような対応では?
 
どこに記録するか?
案1:各シートのどこかのセル
案2:配列変数
案3:特別な専用シート
 
 

回答
投稿日時: 21/02/23 16:35:01
投稿者: K.Hiwasa
投稿者のウェブサイトに移動

シート用の場合、プロシージャ名(イベント名)がブック用のものとは異なります。
シートモジュールを開いて、オブジェクトとプロシージャを選択して、ご確認ください。
また、プロシージャの引数にシートがなくなっているかと思いますが、
ターゲットの親(Parent)で取得可能です。
 
シートごとにコードを書くなら上記で可能ですが、
WinArrowさんご指摘のように何らかの工夫で共通化できるならそちらの方がよいと思います。

回答
投稿日時: 21/02/23 18:36:30
投稿者: WinArrow
投稿者のウェブサイトに移動

素朴な疑問
  
シートタブは、どのような目的で色を付けているのでしょうか?
オペレータとの関係も説明いただけますか?
 全てのシートのタブに同じ色が付いてしまったら、意味があるのか/ないのか?
 
 

投稿日時: 21/02/24 13:42:59
投稿者: TTOS

WinArrow様
   
WinArrow様の案1の方法で、上手く動きました。ご教示、ありがとうございました。
シートタブは、どのような目的で色を付けているのでしょうか?
オペレータとの関係も説明いただけますか?
全てのシートのタブに同じ色が付いてしまったら、意味があるのか/ないのか?

 
沢山あるシートの中、シートが入力済か未入力かの判断の為に色を付けています。
シートの入力は専任者が管理、その他の者は閲覧のみです。
いづれは全てのシートのタブに同じ色が付く事になり、意味はなくなりますが、
初期の運用で分かりやすいように行っています。
 
K.Hiwasa様
 
また、プロシージャの引数にシートがなくなっているかと思いますが、
ターゲットの親(Parent)で取得可能です。

 
このような方法もあるのだと勉強になりました。ご教示、ありがとうございました。
 
おかげ様で解決に至りました。
ありがとうございました。
  
TTOS[/quote]