[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『関数が入っているセルを変更したあと、自動的に色が変わるようにしたい。』(こばちゃん)
関数が入っているセルに直接他の数字などを入力されてしまった場合、後からわかるようにそこのセルあるいは、文字の色を変えたいのですが、入力規則でメッセージを表示する以外に、自動的にそうする方法はあるのでしょうか?宜しくお願いいたします。
実用的かどうかはわかりまへんが、かような方法はあります。 そのシートのシートタブ\Sheet1/を右クリック、コードの表示を選択します。 そこへ下のコードをコピペ。 '-------------------- Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Then Exit Sub If Target.Address = adrs Then Target.Font.ColorIndex = 3 End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Count > 1 Then Exit Sub If Target.HasFormula Then adrs = Target.Address End If End Sub
'------- 更に「挿入」→「標準モジュール」を選択して
Public adrs As String
をコピペします。
エクセルに戻ってどっかのセル(関数が仕込まれている)に何かをかきこんでみませう (弥太郎)
それでは初めからやり直してみませう。
先ず最初に深呼吸をして、心を落ち着かせます。^^ リハーサルとして、新しいブックを立ち上げます。
ツール→マクロ→セキュリティー を選択して、中のオプションボタンをクリック →OK とし Sheet1のセルのどっかになんぼか関数を入力してみませう。
Alt+F11を叩きますとVBEの世界に入ります。 「挿入」→「標準モジュール」を選択すると真っ白な画面が登場します。 そこへ Public adrs As String の一行をコピペします。
左のプロジェクト欄のSheet1をダブルクリックします。 また新しい画面が現れますから、そこへ
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Then Exit Sub If Target.Address = adrs Then Target.Font.ColorIndex = 3 End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Count > 1 Then Exit Sub If Target.HasFormula Then adrs = Target.Address End If End Sub
をコピペします。 右上隅の×をクリックしたらエクセルに戻れます。
先ほど書き込んだSheet1の関数式に「イカスぜヤタロウ」と上書きしてみませう。 イカスとイケズと間違えないように。^^
どうです?こんな塩梅で? (弥太郎)
ご丁寧なご指導ありがとうございました。
おかげさまで、出来ました。
すごいですね。
マクロって便利ですね。
勉強しようかなと思いました。
まず何から勉強したらいいですか?
お勧めの初心者向けの本などありましたら、
教えてください。
VBA入門で検索してみればあんさんご希望のもんが見つかると思いまっせぇ。 また、手始めにマクロの記録で遊ぶんも一つの手段かも知れまへん。 (弥太郎)
If セル.HasFormula = True Then 数式 = 1 End If End Function
としておいて、
セルA1に 数式を =B1 などと書いて、
A1のセルで、
条件付き書式の設定
で、
数式が・・・ =数式(A1)=1
とし、パターン等、任意の書式を設定すれば、OK
実用に耐えるかは不明ですが、こんな方法もあります。 シートモジュールにコピペです。 (ROUGE) '---- Dim dic As Object Private Sub Worksheet_Activate() Set dic = CreateObject("Scripting.Dictionary") End Sub Private Sub Worksheet_Change(ByVal Target As Range) Dim rr As Range For Each rr In Target If Not rr.HasFormula Then If dic(rr.Address) Then rr.Interior.ColorIndex = 3 End If Next End Sub Private Sub Worksheet_Deactivate() Set dic = Nothing End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim rr As Range dic.RemoveAll For Each rr In Target dic(rr.Address) = rr.HasFormula Next End Sub
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.