• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル VBAで)

エクセルVBAで値に応じて表示を変える方法

このQ&Aのポイント
  • エクセルVBAで、セルの値に応じて表示を変える方法を知りたいです。
  • 特定の範囲のセルに入っている値に応じて、別のセルに表示させたいです。
  • VBAのコードを使用して、セルの値を条件分岐させたいです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

Sub test()   If Range("G2").Value > 0 Then   Range("H2").Value = "上昇"   End If End Sub なら動きますね。では次のはどうでしょう。 Sub test() If Range("G2").Value > 0 Then Range("H2:H3").Value = "上昇" End If End Sub これも動くはずです。でも次のは動きません。「型が一致しません」となります。 Sub test() If Range("G2:G3").Value > 0 Then Range("H2:H3").Value = "上昇" End If End Sub つまり、この式では、Range("G2:G3").Value の値が一個の数字ではないのでエラーになるわけです。「0」という数字と比べることがエラーになるわけです。ひとつのセルなら一個の数字と比べることができますが、複数のセルの値を一個の数字と比べることができないのですね。 ひとつずつセルを比べるプログラムを書くようにしましょう。

その他の回答 (2)

  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.3

VBAの基本的な考え方は他の人の書かれているとおりですが、質問者さんの書かれているように一括してセルを処理する方法もなくはないです。 VBAからワークシート関数を使ってしまう方法です。配列数式として処理してくれます。 Sub 陰陽 Range("H2:H10000") = Application.Evaluate("=IF(G2:G10000>0,""上昇"",IF(G2:G10000<0,""下降"",""トンボ""))") End Sub

回答No.1

Range("G2:G10000").Value > 0 のような比較はできません。 やるなら、for文とかでまわす必要があるのでは、 参考までにソースをのせます。 Sub test() Dim i, j As Integer For i = 2 To 10000 j = Cells(i, 7) If j > 0 Then Cells(i, 8) = "上昇" ElseIf j < 0 Then Cells(i, 8) = "下降" ElseIf j = 0 Then Cells(i, 8) = "トンボ" End If Next i End Sub

melon00
質問者

補足

gggggg2009さん ありがとうございます。 こちらでやってみていますが、ステップインで確認すると、なぜか上昇と下降がとばされ、トンボだけになってしまうようなのですが、これはなぜでしょうか。 わたしのやり方がまずいのでしょうか。