『列の非表示・再表示』(chappy)
横向きのフィルターをイメージしたものを作りたいです。
E4からAH88まで表があります。
B列にはE4からAH4に入力されている表の各項目を入力しています。
C列にはチェックボックスを配置し、リンクするセルをA列に設定して"TRUE","FALSE"と表示されます。
以下からイメージしていることです。
C列のチェックボックスからチェックをはずしA列が"FALSE"となるとB列の項目と該当する列を表から非表示にしたいです。
マクロを組んでみたのですが、A列が"TRUE"だろうが"FALSE"だろうが非表示になりません。
ご助力お願いします。
Sub 非表示()
If Range("A4").Value = "FALSE" Then
Columns(6).Hidden = True
Else
Columns(6).Hidden = False
End If
End Sub
< 使用 Excel:Excel2019、使用 OS:Windows10 >
セルの値はTRUE、FALSEという文字列ではなく論理値なので
If Range("A4").Value = False Then とするか
If Range("A4").Value Then Columns(6).Hidden = False Else Columns(6).Hidden = True End If
としてはどうだろうか? (ねむねむ) 2024/04/02(火) 17:18:47
If Range("A4").Value Then
Columns(6).Hidden = False Else Columns(6).Hidden = True End If
初心者で申し訳ございませんが、これはどのような流れ(考え方?)で動くのでしょうか?
(chappy) 2024/04/02(火) 17:25:20
If 条件式 Then 処理1 Else 処理2 End If
は条件式が成り立てば処理1を、成り立たない場合には処理2を実行するがこれは条件式が成り立つ場合にはTrueを、 成り立たない場合にはFaleを返すようになっていてそのTrue、Falseを見てどちらの処理を行うか判断している。
なのでA4セルの値がTreuならば Columns(6).Hidden = False をFalseならば Columns(6).Hidden = True を実行する。 (ねむねむ) 2024/04/02(火) 17:33:31
Trueの場合は
If Range("A4").Value = True Then
と表記しなくても勝手にTrueと判断し処理されるのでしょうか?
(chappy) 2024/04/02(火) 17:37:58
はいそうです。
If Range("A4").Value = True Thenを If Range("A4").Value Then と書いても同じです。 だって、条件式はすべてTrueじゃないですか。 Range("A4").Value = True もTrueですし、 Range("A4").Value もTrueじゃないですか。
ちなみに、関連する話として、 Range("A4")に 0 以外の数値が入っていても If Range("A4").Value Then は Trueと見なされます。
これは、この数値がBoolean型に自動的に変換され、 ヘルプによれば、 >他の数値型が Boolean 値に変換される場合、0 は False に、その他の値はすべて True になります。 となるからです。ご参考まで。
(xyz) 2024/04/02(火) 18:22:15
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.