Excel VBA質問箱 IV

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

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


7980 / 13644 ツリー ←次へ | 前へ→

【35679】アクティブセルを基準にして ringotyanZ 06/3/10(金) 1:04 質問[未読]
【35680】Re:アクティブセルを基準にして かみちゃん 06/3/10(金) 1:11 発言[未読]
【35729】Re:アクティブセルを基準にして ringotyanZ 06/3/11(土) 11:43 質問[未読]
【35734】Re:アクティブセルを基準にして tora 06/3/11(土) 15:41 回答[未読]
【35738】Re:アクティブセルを基準にして ringotyanZ 06/3/11(土) 17:30 お礼[未読]
【35735】Re:アクティブセルを基準にして Kein 06/3/11(土) 15:42 回答[未読]
【35739】Re:アクティブセルを基準にして ringotyanZ 06/3/11(土) 17:33 お礼[未読]

【35679】アクティブセルを基準にして
質問  ringotyanZ  - 06/3/10(金) 1:04 -

引用なし
パスワード
   アクティブセルを基準にして、ひとつ下のセルの数値が増加していた場合はその数値を赤に、減少していた場合はその数値を青に文字色を変化させたい場合、どの様にすれば良いでしょうか?

例えばこんな風にしたいのですが、

アクティブセル 2
下のセル    3 ←赤に

アクティブセル 2
下のセル    1 ←青に


本を読みながら色々試しているのですがどうも上手く行きません.......

よろしくお願いします。

【35680】Re:アクティブセルを基準にして
発言  かみちゃん  - 06/3/10(金) 1:11 -

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

>アクティブセルを基準にして、ひとつ下のセルの数値が増加していた場合はその数値を赤に、減少していた場合はその数値を青に文字色を変化させたい

特定のセルを基準にして、というのは、Offsetプロパティを使います。
詳しくは、ヘルプをご確認いただければと思うのですが、だいたい以下のような感じです。
なお、色を変更するコードは、「マクロの記録」でも記録できますから、まずは試してみてください。

Sub Macro1()
 With ActiveCell
  If .Offset(1).Value >= .Value Then
   MsgBox "大きい"
  Else
   MsgBox "小さい"
  End If
 End With
End Sub

もし、どうしても、わからなければ、再度おたずねください。

【35729】Re:アクティブセルを基準にして
質問  ringotyanZ  - 06/3/11(土) 11:43 -

引用なし
パスワード
   かみちゃん、ありがとうございます。

どうにかここまで出来たのですが、一部上手く動作しない部分があるので教えて下さい。

かみちゃんが教えてくれたマクロをいじって作ったものは下記の通りです。

Sub 数値の変化を色分け()
 With ActiveCell
  If .Offset(1, 0).Value > .Value Then
   ActiveCell.Offset(1, 0).Range("A1").Select
   Selection.Font.ColorIndex = 3
  ElseIf .Offset(1, 0).Value < .Value Then
   ActiveCell.Offset(1, 0).Range("A1").Select
   Selection.Font.ColorIndex = 5
  Else
   ActiveCell.Offset(1, 0).Range("A1").Select
   Selection.Font.ColorIndex = ActiveCell.Font.ColorIndex
  End If
 End With
End Sub


Elseの部分で、アクティブセルとオフセットで移動した先のセルの数値に増減が無かった場合、アクティブセルと同色にする様に指定したいのですが、こうすると文字色は黒になってしまいます。

アクティブセルの文字色が赤だった場合は、そのまま赤に、

アクティブセルの文字色が青だった場合は、そのまま青に、

そのように指定したい場合は、

ActiveCell.Offset(1, 0).Range("A1").Select
Selection.Font.ColorIndex = ActiveCell.Font.ColorIndex

ではまずいのでしょうか?


よろしくお願いします。

【35734】Re:アクティブセルを基準にして
回答  tora  - 06/3/11(土) 15:41 -

引用なし
パスワード
   はい、たしかにまずいですねぇ
アクティブセルを同色にするには
例として次ような、修正を加える必要があります。

>Selection.Font.ColorIndex = ActiveCell.Font.ColorIndex

Selection.Font.ColorIndex = ActiveCell.Offset(-1,0).Font.ColorIndex

使用されたElse部分では、最初に選んだセルの下のセルを選択しアクティブにすると言う意味であり、次にそのセルとアクティブセル(そのセルと同じ)との文字色を同じにするといった感じです。

これでは、文字色が黒のままでも仕方ありません。
この場合、最初に選んだセルの文字色を認識する必要があります。

【35735】Re:アクティブセルを基準にして
回答  Kein  - 06/3/11(土) 15:42 -

引用なし
パスワード
   Sub 数値の変化を色分け()
  Dim CInd As Long

  With ActiveCell
   CInd = .Font.ColorIndex
   Select Case .Offset(1).Value
     Case Is > .Value: CInd = 3
     Case Is < .Value: CInd = 5
   End Select
   .Offset(1).Font.ColorIndex = CInd
  End With
End Sub

ぐらいでよいでしょう。

【35738】Re:アクティブセルを基準にして
お礼  ringotyanZ  - 06/3/11(土) 17:30 -

引用なし
パスワード
   tora さん、ありがとうございます。助かりました!

最初に選んだセルの文字色を認識し直す必要があったんですね。色々調べてみていたのですが、気がつきませんでした。

これでやっと前進できます!

本当にありがとうございました。

【35739】Re:アクティブセルを基準にして
お礼  ringotyanZ  - 06/3/11(土) 17:33 -

引用なし
パスワード
   Kein さん、ありがとうございます。

こちらの方法でも上手く行きました!

色々な方法を教えて頂けるとすごく勉強になります。

ありがとうございました。

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