[[20240402165626]] 『列の非表示・再表示』(chappy) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『列の非表示・再表示』(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


納得いたしました。
詳細な説明ありがとうございます。
(chappy) 2024/04/02(火) 19:04:48

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.