ExcelVBAで値がない場合非表示にしたいが、取得元が数式エラーの場合
ExcelVBAでたまにあるのが、他から取得した値が空だった場合そのセルには何も表示したくないというケース。
取得元のセルに何も値がなければ、セルに以下を入れると解決する。
だけど、取得元が数式でそこで出た値を表示するセルの場合、取得元が既にエラーだった場合は「#DIV/0!」が表示されてしまう。
取得元がエラーなので、エラーを表示ということらしい。
なので、VBAで取得元がエラーだったらNullを入れることで非表示になるようにしてみた。
僕の場合はセルが年間推移を表示するグラフの元データとなってて、例えば5月までは折線グラフ出して6月以降は線が無いようにしたかったけど、セルの取得元のセルが数式で、エラーは必ず出る仕様だったので、このままだと6月で値が0になってしまっていた。
値がない場合だけじゃなく、エラーがある場合も非表示になってほしかったので、このやり方にしたというわけ。
Sub Jan()
‘1月の値の取得とNullの代入
Dim Jan As Variant
Dim Jan0 As Variant
Dim MeJan As Variant
Dim MeJan0 As Variant, Mejan1 As Variant
Jan = Worksheets(“1月度”).Range(“N18”).Value ‘別シート1月度のN18セルの値を代入
Jan0 = Worksheets(“1月度”).Range(“M31”).Value ‘別シート1月度のM31セルの値を代入
Set MeJan = Range(“B2”) ‘B2セルにれる値はMeJanに代入、以下同じ
Set MeJan0 = Range(“B3:B4”)
Set Mejan1 = Range(“B5”)
If IsError(Jan) Then ‘別シート1月度から取得した値が数式エラーだったら、Nullを代入する
MeJan.Value = Null
MeJan0.Value = Null
Mejan1.Value = Null
Else ’別シート1月度から取得した値がエラーでなければその値を代入する
MeJan.Value = Jan
MeJan0.Value = Jan0
Mejan1.Value = Range(“B4”) – Range(“B7”)
End If
End Sub