重要なお知らせ

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

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

もしセルの背景色が変わった時だけ
ユーザーフォームをshowにする事はできますか?

ちなみに一度背景色が変わったら
そのままエクセルブックを保存し閉じます。

次、ブックを開いた時、背景色は変わったまま
ですが、ユーザーフォームはshowにしない。

よろしくお願いします。

A 回答 (1件)

こんにちは、


放置されそうなので、
要件定義が良く分からないのですが、
不明な点は、こちらで決めてサンプルを作りました。
サンプルを参考に作り直せば出来ると思います。

サンプルの実行条件
セル背景色は条件書式などで設定されており、変更される時にシート上で再計算が行われる。
(手動で変更しても再計算を行った時点で実行されます)
対象シートはインデックス1(一番左のシート)のA1セル
ユーザーフォームでなく取り敢えずメッセージボックスを表示

ThisWorkbook モジュールに
Option Explicit
Dim Cellrecord
Private Sub Workbook_Open()
  Cellrecord = Sheets(1).Range("A1").DisplayFormat.Interior.Color
End Sub
Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
  If Sh.Index = 1 Then
    If Sh.Range("A1").DisplayFormat.Interior.Color <> Cellrecord Then
    Cellrecord = Sh.Range("A1").DisplayFormat.Interior.Color
      MsgBox ("セル背景色が変わりました")
    End If
  End If
End Sub

セル背景色は条件書式などで設定されており、単セルへの参照式の場合
参照先の手入力で変更しても再計算は行われません。
この場合、SheetCalculateイベントをSheetChangeにして下記のようにすれば実行されます。
例の場合、A1セルの条件書式は数式で =B2=hoge など

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
  If Sh.Index = 1 Then
    If Target = Range("B2") Then
      If Sh.Range("A1").DisplayFormat.Interior.Color <> Cellrecord Then
        Cellrecord = Sh.Range("A1").DisplayFormat.Interior.Color
        MsgBox ("セル背景色が変わりました")
      End If
    End If
  End If
End Sub

コピペした後Excelブックを再起動してください。

サンプルコードは、色が変わる度にMsgBoxが表示されます。
開いたのち1度だけで良いなら、フラグなど条件を加えてください。

トリガーをどこにするかですが、
セルの背景色の変更の方法が分からないので、この辺りで
    • good
    • 0

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