- ベストアンサー
列の表示非表示をするマクロ
C列とE列が非表示ならば再表示 表示されていれば非表示になるマクロを設定したいです。 このマクロを正しくするにはどうすればいいですか? Sub 再表示また非表示() If Columns("C:C,E:E").Hidden = True Then Columns("C:C,E:E").Hidden = False Else: Columns("C:C,E:E").Hidden = False Columns("C:C,E:E").Hidden = True End If End Sub
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>どうやって調べたらいいでしょうか。 弱った。昔のBASIC からある機能なので、当たり前に使っていました。 サイトで調べたわけではないし、多分ないと思います。 Not True ☞ Fales Not False ☞ True になるので、True Falseで指定する所で、反対の動作をしたいなら使えます。 イミディエイトで、 ? [C:C].EntireColumn.Hidden と入力してみて、True Falseのどちらかが出てくれば使えます。 例えば ThisWorkbook.Close Not ThisWorkbook.Saved 保存していなければ保存終了、保存してあれば保存せず終了。 Saved は保存してなければFalse になります。 ActiveWorkbook.CloseはTrueを指定すれば保存終了。
その他の回答 (3)
- SI299792
- ベストアンサー率47% (772/1616)
C列が非表示かどうかで判断します。 (C列が非表示でE列が表示☞表示) [C:C,E:E].EntireColumn.Hidden = Not [C:C].EntireColumn.Hidden
補足
ありがとうございます。無事動作しました。大かっこも初耳でした。これはNotを左辺に代入しているところまでわかりました。 他にもNotの方法で活用できないかと思い、調べたいのですがうまく調べられません。どうやって調べたらいいでしょうか。
- kkkkkm
- ベストアンサー率66% (1719/2589)
Columnsは離れた列の指定はできないのでエラーになります。 連続していれば大丈夫です。 Columns("C:E").Hidden = True .Hiddenに限らず離れた列を指定する場合はRangeで.EntireColumnを使ってください(.EntireColumnをつけなくてもいい場合もあります) RangeでEntireColumnは離れてなくても使えます。 そういう仕様だと思ってください。
- kkkkkm
- ベストアンサー率66% (1719/2589)
以下で試してみてください。 If Range("C:C,E:E").EntireColumn.Hidden = True Then Range("C:C,E:E").EntireColumn.Hidden = False Else Range("C:C,E:E").EntireColumn.Hidden = True End If
補足
無事動作しました。ありがとうございます。 まだ少し教えていただきたいことがあります。 ifに変更したためかと思っていたのですが、 複数行にしたところでエラーが出ていたようです。 『実行時エラー"13" 型が一致しません。』 これはどうしてでしょうか。 .Hiddenで複数行を選ぶときはEntireColumnを使わないと作動しない理屈がよくわからないです。そういうものとして覚えるものなんですか?
お礼
ありがとうございます。奥が深くて難しいです。イミディエイトで色々調べてみます。