[[20181119195358]] 『薄い文字の上から文字入力』(梨おいしい) ページの最後に飛ぶ

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

 

『薄い文字の上から文字入力』(梨おいしい)

おしえてください^_^

インターネットでよくみる、「ここに入力してください」の薄い文字が、実際に入力しようとすると、薄い文字から黒に変わるという文字入力をしたいです。

ネットにていろいろ検索して試してみたのですが、
エラーは出ないものの、思うように作動しません

したいこと1
・デフォルトで、薄い文字色で入れたいのは

    ここに入力してくださいの文字ではなく、
    あらかじめ、いろんなセルに薄い色で数値(小数点などを含むもの)が入っていて
    その数字の上に、新たな数字を黒で入力したい

→前回の計測結果の数値はこうでしたが、(薄い文字色)

   今回入力する計測結果も、薄い文字色の部分と同じ項目を計測してくださいねの意味と、前回の計測結果と比べて数値が大きく変わってないかを見る意味があります。

したいこと2
入力時メッセージのようにセルを選択した時に表示されるのではなく、
セルを選択されていない状態、かつ、文字列が入力されていないときには
常時薄い文字を表示していたい

したいこと3
セルの薄い文字は色んなところに飛び飛びで入っており、
A1からAA300までの中で、かつ、薄い文字(灰色)のとこれだけに、
作動するvbaコードが知りたい

上手く動かなかったコードは以下になります


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 With Range("A1:AA300")
If Not Intersect(Target, Range("A1:AA300")) Is Nothing Then
If .Value = myWd Then
.Value = ""
.Font.ColorIndex = 0
End If
Else
If .Value = "" Then
.Value = myWd
.Font.ColorIndex = 10
End If
End If
End With
End Sub

< 使用 Excel:Excel2010、使用 OS:Windows7 >


マクロ使わずとも、条件付き書式で実現してはいかがでしょうか?
・目的のセルには「ここに入力してください」と入力しておく。文字色は灰色にする。
・条件付き書式を設定。「指定の値を含むセルだけ」−「セルの値」−「次の値に等しくない」−「ここに入力してください」としておき、文字色を黒にする。

マクロの問題は、対象セルのどこかに1文字でも入力すると、対象範囲全部の文字を消してしまう事ですかねぇ? 空欄にすると全部メッセージになるし。 Targetだけ変更しましょう。
(???) 2018/11/20(火) 09:23


あ、実際には「ここに入力してください」の文字列ではなく、前回値を別シートに残しておいて、このセルと比較すれば良いでしょう。 値の行が違うなら、VLOOKUPで探して判定するとか。
(???) 2018/11/20(火) 09:25

条件付き書式を使う!なるほどですね

ちょっと試してみました。
前回の値を別シートに残しておくとして
値が前回の値と同じでも別に問題がないので黒にしたいのですが
そうすると前の値と比較して同じでも差分がいくつでも
新たに入力されれば黒になるという条件設定が思いつきません。

前回と比べて差分がいくつ以上だとダメなどそういうのはもうけず
入力があれば黒にするというのはやはりマクロでなければ難しいのでしょうか

>マクロの問題は、対象セルのどこかに1文字でも入力すると、対象範囲全部の文字を消してしまう事ですかねぇ? 空欄にすると全部メッセージになるし。 Targetだけ変更しましょう。

マクロでやるとしたら、Targetだけ変更しましょうとのことですが
どのようにコードを修正したらよいですか

(梨おいしい) 2018/11/20(火) 09:57


入力があれば黒、というようにすると、同じでも違っても黒なので、見分けが付きません。 灰色で始まって、同じなら黒、違えば赤とか、分けないと。

そして、直すと丸ごと新規作成になってしまうので、まずはご自身で考えてみてください。 入力は1セルずつですか?、それともコピペや値ドラッグ等で一気に書き換える事はありますか? 1セルずつなら、Targetのプロパティを直接操作するだけですよ。
(???) 2018/11/20(火) 10:17


???様

灰色で始まって、同じなら黒、違えば若干違う黒(ほぼ見分けがつかない黒)
にしようと思います。

条件付き書式でのご回答大変ためになりました。
ありがとうございました。
(梨おいしい) 2018/11/20(火) 11:11


マクロでの実現は諦めてしまったようなので、後続の方のためにコード例なぞ書いておきます。
(変更箇所は若干違う黒、との事でしたが、判りやすいように赤にしてます)
 Private Sub Worksheet_Change(ByVal Target As Range)
    Dim wk As Worksheet
    Dim R As Range
    Dim R1 As Range

    Set R = Intersect(Target, Range("A1:AA300"))
    If R Is Nothing Then Exit Sub

    Application.ScreenUpdating = False
    Application.EnableEvents = False

    Set wk = Sheets("Sheet2")
    For Each R1 In R
        If IsError(R1) = False Then
            If R1.Value = "" Then
                R1.Value = wk.Range(R1.Address).Value
                R1.Font.Color = RGB(192, 192, 192)
            Else
                If IsError(wk.Range(R1.Address)) = False Then
                    If R1.Value = wk.Range(R1.Address).Value Then
                        R1.Font.Color = RGB(0, 0, 0)
                    Else
                        R1.Font.Color = RGB(255, 0, 0)
                    End If
                Else
                    R1.Font.Color = RGB(255, 0, 192)
                End If
            End If
        Else
            R1.Font.Color = RGB(255, 0, 192)
        End If
    Next R1

    Application.EnableEvents = True
    Application.ScreenUpdating = True
 End Sub
(???) 2018/11/20(火) 17:39

コメント返信:

[ 一覧(最新更新順) ]


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