Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


11853 / 13646 ツリー ←次へ | 前へ→

【13598】データが変更されたらセルに色をつける おお 04/5/9(日) 11:46 質問[未読]
【13599】Re:データが変更されたらセルに色をつける かみちゃん 04/5/9(日) 12:06 回答[未読]
【13626】Re:データが変更されたらセルに色をつける おお 04/5/10(月) 1:09 質問[未読]
【13628】Re:データが変更されたらセルに色をつける Asaki 04/5/10(月) 9:12 回答[未読]
【13672】Re:データが変更されたらセルに色をつける おお 04/5/11(火) 0:31 質問[未読]
【13680】Re:データが変更されたらセルに色をつける Asaki 04/5/11(火) 9:52 回答[未読]
【13723】Re:データが変更されたらセルに色をつける おお 04/5/12(水) 0:09 質問[未読]
【13727】Re:データが変更されたらセルに色をつける つん 04/5/12(水) 10:16 発言[未読]
【13765】Re:データが変更されたらセルに色をつける おお 04/5/13(木) 0:10 お礼[未読]
【13681】Re:データが変更されたらセルに色をつける つん 04/5/11(火) 9:52 回答[未読]
【13682】Re:データが変更されたらセルに色をつける つん 04/5/11(火) 10:00 発言[未読]
【13684】Re:データが変更されたらセルに色をつける Asaki 04/5/11(火) 10:56 発言[未読]
【13766】Re:データが変更されたらセルに色をつける おお 04/5/13(木) 0:12 お礼[未読]

【13598】データが変更されたらセルに色をつける
質問  おお  - 04/5/9(日) 11:46 -

引用なし
パスワード
   何も入力されてないセルにデータが入力されたら
色をつけるというのは以前教えていただいたのですが

もともとセルにデータが入っていても、データが入って
いなくても、データが変更されたら
セルの色をかえたいのですがどしたらよいですか。

【13599】Re:データが変更されたらセルに色をつける
回答  かみちゃん  - 04/5/9(日) 12:06 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>もともとセルにデータが入っていても、データが入って
>いなくても、データが変更されたら
>セルの色をかえたいのですがどしたらよいですか。

前回のご質問の中で、Asakiさんがコメントされた方法でOKだと思います(WindoesXP、Excel2002で動作確認済み)が、何か問題がありますか?
http://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=13384;id=excel
たとえば、1回変更したあとに、さらに変更したら、色が変わらないということでしょうか?

【13626】Re:データが変更されたらセルに色をつける
質問  おお  - 04/5/10(月) 1:09 -

引用なし
パスワード
   ▼かみちゃん さん:
>こんにちは。かみちゃん です。
>
>>もともとセルにデータが入っていても、データが入って
>>いなくても、データが変更されたら
>>セルの色をかえたいのですがどしたらよいですか。
>
>前回のご質問の中で、Asakiさんがコメントされた方法でOKだと思います(WindoesXP、Excel2002で動作確認済み)が、何か問題がありますか?
>http://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=13384;id=excel
>たとえば、1回変更したあとに、さらに変更したら、色が変わらないということでしょうか?


>「数式が」「=LEN(A1)<>0」
この場合はエクセルのどこに書けばいいのか迷っています。

>VBAの場合、前述のとおりChangeイベントを利用しますが、
>今回のようなケースでは、
>引数のTargetを相手にするだけでよいかと思います。
>Private Sub Worksheet_Change(ByVal Target As Range)
>  Target.Interior.ColorIndex = xlNone
>On Error Resume Next
>  Target.SpecialCells( _
>    xlCellTypeConstants).Interior.ColorIndex = 34
>On Error GoTo 0
>End Sub
changeイベントってどうやってひょうじさせるのでしょうか。

【13628】Re:データが変更されたらセルに色をつける
回答  Asaki  - 04/5/10(月) 9:12 -

引用なし
パスワード
   >>「数式が」「=LEN(A1)<>0」
>この場合はエクセルのどこに書けばいいのか迷っています。
条件付書式を利用します。
設定したいセル範囲を、予め選択しておいてから、
メニューから 書式 >> 条件付書式 のダイアログで、条件1(1)の指定を↓のようにします。
「数式が」「=LEN(A1)<>0」
※ A1 の部分は、実際に処理対象となるセル
書式ボタンをクリックして、お好みの書式を設定してOKボタンをクリック


>>Private Sub Worksheet_Change(ByVal Target As Range)
>>  Target.Interior.ColorIndex = xlNone
>>On Error Resume Next
>>  Target.SpecialCells( _
>>    xlCellTypeConstants).Interior.ColorIndex = 34
>>On Error GoTo 0
>>End Sub
>changeイベントってどうやってひょうじさせるのでしょうか。
こちらは、対象となるシート名が表示されているタブのところで右クリックして、
メニューから「コードの表示」をクリックすると、画面が変わります。
右側の広い、白いところに、↑の Private 〜 End Sub の部分をコピーして貼り付けます。

上記は、同様の目的を達成するための2種類の別の方法ですので、
いずれか片方のみでよいと思います。

【13672】Re:データが変更されたらセルに色をつける
質問  おお  - 04/5/11(火) 0:31 -

引用なし
パスワード
   ▼Asaki さん:
>>>「数式が」「=LEN(A1)<>0」
>>この場合はエクセルのどこに書けばいいのか迷っています。
>条件付書式を利用します。
>設定したいセル範囲を、予め選択しておいてから、
>メニューから 書式 >> 条件付書式 のダイアログで、条件1(1)の指定を↓のようにします。
>「数式が」「=LEN(A1)<>0」
>※ A1 の部分は、実際に処理対象となるセル
>書式ボタンをクリックして、お好みの書式を設定してOKボタンをクリック
>
>
>>>Private Sub Worksheet_Change(ByVal Target As Range)
>>>  Target.Interior.ColorIndex = xlNone
>>>On Error Resume Next
>>>  Target.SpecialCells( _
>>>    xlCellTypeConstants).Interior.ColorIndex = 34
>>>On Error GoTo 0
>>>End Sub
>>changeイベントってどうやってひょうじさせるのでしょうか。
>こちらは、対象となるシート名が表示されているタブのところで右クリックして、
>メニューから「コードの表示」をクリックすると、画面が変わります。
>右側の広い、白いところに、↑の Private 〜 End Sub の部分をコピーして貼り付けます。
>
>上記は、同様の目的を達成するための2種類の別の方法ですので、
>いずれか片方のみでよいと思います。

これらの方法でやってみたのですが、セルにデータが入っている箇所全てに
色がついてしまいました。対象範囲に何もデータがない場合は
これらの方法でよいのですが、対象範囲にはデータの入っている
セルもあります。

あくまで更新したセルのみに色をつけたいのですが
どうしたらよいですか。

【13680】Re:データが変更されたらセルに色をつける
回答  Asaki  - 04/5/11(火) 9:52 -

引用なし
パスワード
   >あくまで更新したセルのみに色をつけたいのですが
更新した
ということを、どうやって判断しますか?
いちばん簡単なのは、シートを丸ごとバックアップしておいて、それと比較することです。

また、一度保存した場合などは、どうしますか?

【13681】Re:データが変更されたらセルに色をつける
回答  つん E-MAIL  - 04/5/11(火) 9:52 -

引用なし
パスワード
   こんにちは。
横から失礼します。

>あくまで更新したセルのみに色をつけたいのですが
>どうしたらよいですか。

ほんなら、単純に

Private Sub Worksheet_Change(ByVal Target As Range)

  If Target.Count = 1 Then
    If Target.Value <> "" Then
      Target.Interior.ColorIndex = 34
    End If
  End If

End Sub


とか・・・駄目?
複数範囲を、一度に更新したらあかんけど。
そういう場合ある?

【13682】Re:データが変更されたらセルに色をつける
発言  つん E-MAIL  - 04/5/11(火) 10:00 -

引用なし
パスワード
   Asakiさん、おはようございます。
被っちゃいました(^^; すんません。

おおさんがおっしゃってるのは、
「既に入力済みのセルのデータが変更されたとき」ってことなんでしょうか?
前にこんなスレッドがありましたよね?
もしかして参考にならないかしらん?

http://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=10612;id=excel

ここでは「変更されたセルの変更前の状態の取得」が問題になってましたが。
関係ないかな?(^^;

【13684】Re:データが変更されたらセルに色をつける
発言  Asaki  - 04/5/11(火) 10:56 -

引用なし
パスワード
   つん さん、こんにちは。

>被っちゃいました(^^; すんません。
いえいえ。しかし、同時刻は珍しいですね。

>http://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=10612;id=excel
多分、まさしく、↑と同じ話のような気がします。
しかも、σ(^_^)もカキコしてましたね。(忘れてました)

今回、
「更新」
とおっしゃるのが、どういう状況を指すのかはっきりしませんが、一般的に解釈して、
変更前と後で、値が違っていたら更新と見なす
かなぁ?という解釈で #13680 のレスになりました。

【13723】Re:データが変更されたらセルに色をつける
質問  おお  - 04/5/12(水) 0:09 -

引用なし
パスワード
   ▼Asaki さん:
>>あくまで更新したセルのみに色をつけたいのですが
>更新した
>ということを、どうやって判断しますか?
>いちばん簡単なのは、シートを丸ごとバックアップしておいて、それと比較することです。
>
>また、一度保存した場合などは、どうしますか?


更新したという言葉に間違いがありました。すみません。
エクセルファイルを開いた状態を元として、
そこからc1:e10の範囲の中でキーボードから入力してセルの値を変更したら
そのセルの色を変えたいのです。

【13727】Re:データが変更されたらセルに色をつける
発言  つん E-MAIL  - 04/5/12(水) 10:16 -

引用なし
パスワード
   おはようございます。

>更新したという言葉に間違いがありました。すみません。
>エクセルファイルを開いた状態を元として、
>そこからc1:e10の範囲の中でキーボードから入力してセルの値を変更したら
>そのセルの色を変えたいのです。

セル範囲の限定は、

Private Sub Worksheet_Change(ByVal Target As Range)

  If (Target.Row < 11) And (Target.Column > 2) And _
    (Target.Column < 6) Then
    MsgBox "対象範囲内です"
  End If

End Sub

こんな感じで出来るので、これと、今までのレスと【13682】で紹介したスレッドを参考にされたら、なんとかできそうな気がしますね。

【13765】Re:データが変更されたらセルに色をつける
お礼  おお  - 04/5/13(木) 0:10 -

引用なし
パスワード
   ▼つん さん:
>おはようございます。
>
>>更新したという言葉に間違いがありました。すみません。
>>エクセルファイルを開いた状態を元として、
>>そこからc1:e10の範囲の中でキーボードから入力してセルの値を変更したら
>>そのセルの色を変えたいのです。
>
>セル範囲の限定は、
>
>Private Sub Worksheet_Change(ByVal Target As Range)
>
>  If (Target.Row < 11) And (Target.Column > 2) And _
>    (Target.Column < 6) Then
>    MsgBox "対象範囲内です"
>  End If
>
>End Sub
>
>こんな感じで出来るので、これと、今までのレスと【13682】で紹介したスレッドを参考にされたら、なんとかできそうな気がしますね。

できましたありがとうございます!!
非常にうれしいです。

【13766】Re:データが変更されたらセルに色をつける
お礼  おお  - 04/5/13(木) 0:12 -

引用なし
パスワード
   ▼Asaki さん:
>つん さん、こんにちは。
>
>>被っちゃいました(^^; すんません。
>いえいえ。しかし、同時刻は珍しいですね。
>
>>http://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=10612;id=excel
>多分、まさしく、↑と同じ話のような気がします。
>しかも、σ(^_^)もカキコしてましたね。(忘れてました)
>
>今回、
>「更新」
>とおっしゃるのが、どういう状況を指すのかはっきりしませんが、一般的に解釈して、
>変更前と後で、値が違っていたら更新と見なす
>かなぁ?という解釈で #13680 のレスになりました。
できました。ありがとうございます。

11853 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free