Excel VBA質問箱 IV

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

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


12279 / 13645 ツリー ←次へ | 前へ→

【11273】字色、背景色の変更 麻衣子 04/3/4(木) 15:15 質問
【11278】Re:字色、背景色の変更 Jaka 04/3/4(木) 16:37 回答
【11280】すみません。 Jaka 04/3/4(木) 16:41 発言
【11283】手抜きです。ヒントになれば ぴかる 04/3/4(木) 16:59 回答
【11285】書いちゃったので...。 Jaka 04/3/4(木) 17:09 回答
【11294】Re:字色、背景色の変更 麻衣子 04/3/4(木) 18:12 お礼
【11304】すみませんでした。 Jaka 04/3/5(金) 9:08 回答
【11353】Re:Jaka様、ありがとうございます! 麻衣子 04/3/6(土) 13:09 質問
【11355】Re:Jaka様、ありがとうございます! とまと 04/3/6(土) 14:44 回答
【11359】Re:Jaka様、ありがとうございます! とまと 04/3/6(土) 15:57 回答
【11362】Re:Jaka様、ありがとうございます! とまと 04/3/6(土) 16:41 回答
【11363】Re:とまと様、ありがとうございます!! 麻衣子 04/3/6(土) 17:59 質問
【11365】Re:とまと様、ありがとうございます!! とまと 04/3/6(土) 20:02 回答
【11367】Re:とまと様、ありがとうございました!!! 麻衣子 04/3/6(土) 21:38 お礼

【11273】字色、背景色の変更
質問  麻衣子  - 04/3/4(木) 15:15 -

引用なし
パスワード
    はじめまして、初心者ですが、どなたか、教えてください。

  $B $C 
1 20
2 12 -8(=$B2 - $B1)
3  6 -6(=$B3 - $B2)
4 17 11
5 13 -4
6  5 -8
7 17 12

列番に、数値を入力し($B)、その前行の数値との差を、$Cに表示していき、
マイナスの場合は、文字を赤色に、プラスの場合は、背景色を黄色にする
という質問です。だだし、条件書式設定を使用しないで、$Bに、数値を
入力するだけで、自動的に、赤色の文字、黄色の背景色を、表示させることは
できないでしょうか。(-8は赤色、11は文字は黒色、背景色は黄色とふうに、)
そのような関数は、見当たらないのですが、ユ-ザ-定義関数のレベルに、
なるのでしょうか。もし、そのようになったら、そのコ-ド内容を、教えて
いただけないでしょうか。EXCEL20003を使用しています。

【11278】Re:字色、背景色の変更
回答  Jaka  - 04/3/4(木) 16:37 -

引用なし
パスワード
   C2以降のセルに
=B1-B2
こんな関数が入っているとして、

表示形式で、赤の「-1234」に設定
条件付き書式
セルの値が  次の値より大きい  0
として、書式ボタンを押しパターンで黄色を選べば良いです。

【11280】すみません。
発言  Jaka  - 04/3/4(木) 16:41 -

引用なし
パスワード
   >条件書式設定を使用しないで

良く読んでいませんでした。

【11283】手抜きです。ヒントになれば
回答  ぴかる  - 04/3/4(木) 16:59 -

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

手抜きですが、こういうことなんかな?。C列が−8なら赤文字、それ以外なら黒としました。OKでしたら、あとは条件等を変更していろんなパターンにして下さい。あたくしは、事情によりこれにて失礼します。

シートモジュール版です。
Private Sub Worksheet_Change(ByVal Target As Range)

  If Target.Column = 2 Then
    If Cells(Target.Row, 3).Value = -8 Then
      Cells(Target.Row, 3).Font.ColorIndex = 3
    Else
      Cells(Target.Row, 3).Font.ColorIndex = 0
    End If
  End If
    
End Sub

【11285】書いちゃったので...。
回答  Jaka  - 04/3/4(木) 17:09 -

引用なし
パスワード
   Private Sub Worksheet_Change(ByVal Target As Excel.Range)
  Application.EnableEvents = False
  With Target
    If .Count > 1 Then Exit Sub
    If .Column = 2 And .Row > 1 And .Value <> "" Then
      .Offset(, 1).Value = .Offset(-1).Value - .Value
      If .Offset(, 1).Value < 0 Then
       .Offset(, 1).Font.ColorIndex = 3
       .Offset(, 1).Interior.ColorIndex = 6
      Else
       .Offset(, 1).Font.ColorIndex = 0
       .Offset(, 1).Interior.ColorIndex = xlNone
      End If
    ElseIf .Value = "" Then
      .Offset(, 1).Font.ColorIndex = 0
      .Offset(, 1).Interior.ColorIndex = xlNone
      .Offset(, 1).Value = ""
    End If
  End With
  Application.EnableEvents = True
End Sub

【11294】Re:字色、背景色の変更
お礼  麻衣子  - 04/3/4(木) 18:12 -

引用なし
パスワード
   ぴかる様、ありがとうございました。
jaka様、ご丁寧に、レスして頂き、ありがとうございました。
皆様のレスを、ありがたく、参考にさせていただきます。
心から、お礼を申し上げます。

【11304】すみませんでした。
回答  Jaka  - 04/3/5(金) 9:08 -

引用なし
パスワード
   トンチンカンなことやってました。

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
  With Target
    If .Count > 1 Then Exit Sub
    If .Column = 2 Then
      If IsNumeric(.Text) And .Offset(, 1).Value < 0 Then
       .Offset(, 1).Font.ColorIndex = 3
       .Offset(, 1).Interior.ColorIndex = xlNone
      Else
       .Offset(, 1).Font.ColorIndex = 0
       .Offset(, 1).Interior.ColorIndex = 6
      End If
    End If
  End With
End Sub

【11353】Re:Jaka様、ありがとうございます!
質問  麻衣子  - 04/3/6(土) 13:09 -

引用なし
パスワード
   麻衣子です。
Jaka様、ありがとうございました!
Jaka様から頂いたコ-ドを貼り付けましたところ、望み通りになりました。
とても、嬉しいです。

Jaka様のコ-ドを基に、更に、改良したものを作ってみようと、試みた
のですが、やはり、初心者の私には、難しいものでした。
最初の質問内容に、更に、同じものを他の列にも設けようと思いましたが、
うまくいきません。
  
  B  C          F  G
1 20            15 
2 12 -8(=$B2 - $B1) 9 -6(=$F2 - $F21)
3  6 -6(=$B3 - $B2) 20 11
4 17 11          22 22
5 13 -4          14 -8
6  5 -8          14  0
7 17 12          3 -11

そして、入力したF6(14)は、前行のF5(14)と同じ数値ですので、F6の14にも、
青い背景色を、つけようと思ったのです。
Jaka様から頂いたコ-ドを、どのように、変更すればよいのか、
教えてください。

【11355】Re:Jaka様、ありがとうございます!
回答  とまと  - 04/3/6(土) 14:44 -

引用なし
パスワード
   麻衣子さん こんにちは

Jakaさん失礼します。

 列が増えるということなので、Jakaさんのコードを修正すると

 If .Column = 2 Then
    ↓
 If .Column = 2 Or .Column = 4 Then

 と増やせばいいかも。違ったらごめんなさい。

【11359】Re:Jaka様、ありがとうございます!
回答  とまと  - 04/3/6(土) 15:57 -

引用なし
パスワード
   なんだかぜんぜん読み違えてました。
修正します。

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
  With Target
    If .Count > 1 Then Exit Sub
    If .Column = 2 Or .Column = 6 Then
      If IsNumeric(.Text) And .Offset(, 1).Value < 0 Then
       .Offset(, 1).Font.ColorIndex = 3
       .Offset(, 1).Interior.ColorIndex = xlNone
      Else
       .Offset(, 1).Font.ColorIndex = 0
       .Offset(, 1).Interior.ColorIndex = 6
      End If
     
      If IsNumeric(.Text) And .Offset(-1, 0).Value = .Value Then
       .Interior.ColorIndex = 5
      Else
       .Interior.ColorIndex = xlNone
      End If

    End If
     
  End With
End Sub

【11362】Re:Jaka様、ありがとうございます!
回答  とまと  - 04/3/6(土) 16:41 -

引用なし
パスワード
   たびたび すみません

     If IsNumeric(.Text) And .Offset(-1, 0).Value = .Value Then
       .Interior.ColorIndex = 5
      Else
       .Interior.ColorIndex = xlNone
      End If

      ↑の部分は1行目だと .offset(-1,0) でエラーになるので
      下記のように1行目をはずすよう変更してください。
    

     If .Row > 1 Then
      If IsNumeric(.Text) And .Offset(-1, 0).Value = .Value Then
       .Interior.ColorIndex = 5
      Else
       .Interior.ColorIndex = xlNone
      End If
     End If

【11363】Re:とまと様、ありがとうございます!!
質問  麻衣子  - 04/3/6(土) 17:59 -

引用なし
パスワード
   とまと様、はじめまして。麻衣子です。ご親切なレス、ありがとうございます。
VBAに関して、初歩的な本しか読んだ事がない私に、助け舟を、送って下さり
心から、お礼を申し上げます。
とまと様のレスで、解決できました。解決できたのですが、私は、先程の質問の
中で、1つ書き忘れたことがありました。F6のセルに、青色の背景色をつけるこ
とは、良いのですが、G6のセルには(前行との差がゼロの時)、背景色は、つけな
いで、黒文字だけ表示したかったのでした。
私は、とまと様のレスをヒントに、試行錯誤で、トライしてみたのですが、
文字まで、消えてしまう有様です。まじめに、学習してこなかった自分が、悔や
まれます。どうか、こんな無知な私ですけど、教えてください。


【11365】Re:とまと様、ありがとうございます!!
回答  とまと  - 04/3/6(土) 20:02 -

引用なし
パスワード
   こんばんは。    

     If .Row > 1 Then
      If IsNumeric(.Text) And .Offset(-1, 0).Value = .Value Then
       .Interior.ColorIndex = 5
      Else
       .Interior.ColorIndex = xlNone
      End If
     End If

     のところに付け加えて下記のようにしてみてください。
   

     If .Row > 1 Then
      If IsNumeric(.Text) And .Offset(-1, 0).Value = .Value Then
       .Interior.ColorIndex = 5
       .Offset(, 1).Interior.ColorIndex = xlNone
      Else
       .Interior.ColorIndex = xlNone
      End If
    End If

【11367】Re:とまと様、ありがとうございました!!!
お礼  麻衣子  - 04/3/6(土) 21:38 -

引用なし
パスワード
   とまと様、出来ました!!ありがとうございました。
とまと様のお陰で、解決することができました。
心から、感謝申し上げます。
またいつの日か、疑問があった時、恐れ入りますが、ご指導をお願いします。
本当に、ありがとうございました。

   とまと様の上に、幸福が、多々と 
                  ありますように・・・・・ 

                            麻衣子より 

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