- ベストアンサー
エクセルVBAで値に応じて表示を変える方法
- エクセルVBAで、セルの値に応じて表示を変える方法を知りたいです。
- 特定の範囲のセルに入っている値に応じて、別のセルに表示させたいです。
- VBAのコードを使用して、セルの値を条件分岐させたいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
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)
VBAの基本的な考え方は他の人の書かれているとおりですが、質問者さんの書かれているように一括してセルを処理する方法もなくはないです。 VBAからワークシート関数を使ってしまう方法です。配列数式として処理してくれます。 Sub 陰陽 Range("H2:H10000") = Application.Evaluate("=IF(G2:G10000>0,""上昇"",IF(G2:G10000<0,""下降"",""トンボ""))") End Sub
- gggggg2009
- ベストアンサー率25% (3/12)
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
補足
gggggg2009さん ありがとうございます。 こちらでやってみていますが、ステップインで確認すると、なぜか上昇と下降がとばされ、トンボだけになってしまうようなのですが、これはなぜでしょうか。 わたしのやり方がまずいのでしょうか。