No.3ベストアンサー
- 回答日時:
標準モジュールのTimerProc を以下のように改変してください。
ただし、必ず、StopTheTimer で、タイマーを止めてから改変し、後は、WorkBook_Open でタイマーを再起動させてください。タイマーを止めないままに行うと、ハングします。
Sub TimerProc(ByVal Hwnd As Long, ByVal uMsg As Long, ByVal idEvent As Long, ByVal dwTime As Long)
On Error Resume Next
If ActiveSheet.Name <> "Sheet1" Then Exit Sub
If Intersect(ActiveCell, Columns(1)) Is Nothing Then Exit Sub
With ActiveCell
If .Interior.ColorIndex = 1 Then
.Offset(, 1).Value = "未完了"
ElseIf .Interior.ColorIndex = 3 Then
.Offset(, 1).Value = "完了"
Else
.Offset(, 1).Value = ""
End If
End With
End Sub
'//
なお、同様の質問が出ていますが、それは別の案があります。ただ、出来ていません。
今回のコードは、私には、間に合わせのプログラムです。
Excel 2003 以下では可能だったものが、Excel 2007以降になってからは出来ません。
しかし、プログラム的には、「塗りつぶしダイアログ」に、直接イベント(OnAction)を取り付けてマクロを走らすことは可能なはずです。ただ、正確な資料がありません。
Ka-Net にも載っていません。陶山(suyama)なんとかという人のネットで、かろうじて似たようなものを見つけたに過ぎません。
まあ、とうぶん時間が掛かりそうな気がします。私は、もう1年以上もやっているのですが、まだ出来ません。それと、思い出したことですが、COM側からなら、可能なようです。いずれにしても、難易度の高い問題です。
P.S. NumLockLock VBAマクロで、NumLockが外れてしまうので、それをLockするために使っているツール( http://www.inasoft.org/)
No.2
- 回答日時:
NumLockLock からヒントを得て作ってみました。
'ThisWorkbook モジュール
'//
'このコードを変更する時は、必ず、StopTheTimer で、タイマーを止めないとハングする。
Private Declare Function SetTimer Lib "user32.dll" (ByVal Hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
Private Declare Function KillTimer Lib "user32.dll" (ByVal Hwnd As Long, ByVal nIDEvent As Long) As Long
Private myTimer As Long
Private Sub Workbook_BeforeClose(Cancel As Boolean)
KillTimer 0&, myTimer
End Sub
Private Sub Workbook_Open()
myTimer = SetTimer(0&, 0&, 1000&, AddressOf TimerProc)
End Sub
'
Sub StopTheTimer()
KillTimer 0&, myTimer
End Sub
'//標準モジュール
Sub TimerProc(ByVal Hwnd As Long, ByVal uMsg As Long, ByVal idEvent As Long, ByVal dwTime As Long)
On Error Resume Next
If ActiveSheet.Name <> "Sheet1" Then Exit Sub
With Range("A1")
If .Interior.ColorIndex = 1 Then '数字は少ない順から
.Offset(, 1).Value = "未完了"
ElseIf .Interior.ColorIndex = 3 Then
.Offset(, 1).Value = "完了"
Else
.Offset(, 1).Value = ""
End If
End With
End Sub
No.1
- 回答日時:
誰が色を変えるんでしょう。
もし条件付き書式で色を変えてるなら、
超面倒な話になります。
人がセルに色を付けてるなら一応可能ですが、
すぐには反応しないかも。
条件付き書式の話なら、同じ条件で文字列表示が簡単です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 昨日、質問した件『VBA にて、条件付き書式で背景色を設定しているセルの範囲で、背景色付きのセルをカ 4 2022/04/07 14:39
- 会計ソフト・業務用ソフト エクセル 背景色のついたセル位置を参考にして固定の数値を取得する 4 2022/07/11 08:44
- Excel(エクセル) 条件付き書式を使ってユーザー定義。「数字のみ」も「数字+アルファベット」も認識させたい。 2 2022/05/28 07:22
- Excel(エクセル) こんなことできますか?例えば、sheetに貼り付けた図形のタイトルを、セルA1の文字で表示する。 5 2022/04/22 15:25
- その他(Microsoft Office) エクセル 表の移動 2 2023/04/05 20:29
- Visual Basic(VBA) マクロ実行時、自動で背景色を変えたい。 C列にあるチェックボックスをチェックするとB列に「TRUE」 4 2022/11/08 11:14
- その他(Microsoft Office) マクロについて教えてください、、 5 2023/06/06 22:07
- Visual Basic(VBA) エクセルVBA ダブルクリックしたら色反転を指定したセルのみにしたい 2 2022/04/06 12:52
- その他(Microsoft Office) googleスプレットシートで左右の数値を比較して色判別させたい 2 2022/06/06 18:33
- Excel(エクセル) Excelの関数について教えてください。 5 2023/07/28 11:27
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAでシートモジュール...
-
Excel VBA 『Call』で呼び出す...
-
VBA This Workbookモジュール...
-
Excel VBAでリンク切れをチェッ...
-
VBAで旧字体を異字体に一括で変...
-
モジュールとクラスの違いって...
-
VBでグローバル変数を宣言するには
-
VBAで別モジュールへの変数の受...
-
【vba】フォームに書いてあ...
-
グラフのX,Y座標を取得したい
-
VBA モジュールで共通に使う変...
-
Excel VBAで、ユーザーフォーム...
-
複数のフォーム間での変数宣言
-
ユーザー定義関数をEXCELに常駐...
-
Excelで時刻になったら知らせて...
-
エクセルVBA クラスモジュール...
-
モジュールとは何ですか
-
Excel VBA 定義されたプロージ...
-
モジュールからフォームのボタ...
-
VB2005ーDataGridViewの選択さ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBAでリンク切れをチェッ...
-
Excel VBA 定義されたプロージ...
-
ArduinoのジャイロモジュールMP...
-
ユーザー定義関数に#NAME?が返...
-
VBAで別モジュールへの変数の受...
-
Excel VBA 『Call』で呼び出す...
-
エクセルVBAでシートモジュール...
-
モジュールとは何ですか
-
VBA This Workbookモジュール...
-
VBでグローバル変数を宣言するには
-
グラフのX,Y座標を取得したい
-
モジュールの最大数はいくつな...
-
【vba】フォームに書いてあ...
-
VBAで旧字体を異字体に一括で変...
-
Excel VBAで、ユーザーフォーム...
-
Form間の値の渡し方
-
モジュールとクラスの違いって...
-
Access VBA標準モジュールにつ...
-
本当にPublicな変数(配列で)
-
標準モジュールを削除したい。(...
おすすめ情報
人が色をつけます。
すぐには反応しなくていいです
お願いいたします。
考えている通りです。
初めてです。こんなコードは
A列すべてを対象するにはどうしたら
よろしいでしょうか