[[20081208112233]] 『関数が入っているセルを変更したあと、自動的に色』(こばちゃん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『関数が入っているセルを変更したあと、自動的に色が変わるようにしたい。』(こばちゃん)

関数が入っているセルに直接他の数字などを入力されてしまった場合、後からわかるようにそこのセルあるいは、文字の色を変えたいのですが、入力規則でメッセージを表示する以外に、自動的にそうする方法はあるのでしょうか?宜しくお願いいたします。


 実用的かどうかはわかりまへんが、かような方法はあります。
 そのシートのシートタブ\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

 をコピペします。

 エクセルに戻ってどっかのセル(関数が仕込まれている)に何かをかきこんでみませう
      (弥太郎)


弥太郎さま
早速の返信ありがとうございました。言われたとおりにやってみたのですが、マクロは初めてで、上手くできないのですが、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入門で検索してみればあんさんご希望のもんが見つかると思いまっせぇ。
 また、手始めにマクロの記録で遊ぶんも一つの手段かも知れまへん。
        (弥太郎)


Function 数式(セル)
 If セル.HasFormula = True Then
 数式 = 1
 End If
End Function

としておいて、
セルA1に 数式を =B1 などと書いて、

A1のセルで、
条件付き書式の設定
で、

数式が・・・  =数式(A1)=1

とし、パターン等、任意の書式を設定すれば、OK


Function 数式(セルさま
ありがとうございます。
いろんなやり方があるのですね。
試してみます。


 実用に耐えるかは不明ですが、こんな方法もあります。
シートモジュールにコピペです。
(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


(ROUGE)さま
ありがとうございました。
本当にVBAを学ぼうと思います。
尊敬です。
早速試してみます。


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.