• ベストアンサー

列の表示非表示をするマクロ

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

質問者が選んだベストアンサー

  • ベストアンサー
  • SI299792
  • ベストアンサー率47% (772/1616)
回答No.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を指定すれば保存終了。

terabayahi1988
質問者

お礼

ありがとうございます。奥が深くて難しいです。イミディエイトで色々調べてみます。

その他の回答 (3)

  • SI299792
  • ベストアンサー率47% (772/1616)
回答No.3

C列が非表示かどうかで判断します。 (C列が非表示でE列が表示☞表示)   [C:C,E:E].EntireColumn.Hidden = Not [C:C].EntireColumn.Hidden

terabayahi1988
質問者

補足

ありがとうございます。無事動作しました。大かっこも初耳でした。これはNotを左辺に代入しているところまでわかりました。 他にもNotの方法で活用できないかと思い、調べたいのですがうまく調べられません。どうやって調べたらいいでしょうか。

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.2

Columnsは離れた列の指定はできないのでエラーになります。 連続していれば大丈夫です。 Columns("C:E").Hidden = True .Hiddenに限らず離れた列を指定する場合はRangeで.EntireColumnを使ってください(.EntireColumnをつけなくてもいい場合もあります) RangeでEntireColumnは離れてなくても使えます。 そういう仕様だと思ってください。

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.1

以下で試してみてください。 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

terabayahi1988
質問者

補足

無事動作しました。ありがとうございます。 まだ少し教えていただきたいことがあります。 ifに変更したためかと思っていたのですが、 複数行にしたところでエラーが出ていたようです。 『実行時エラー"13" 型が一致しません。』 これはどうしてでしょうか。 .Hiddenで複数行を選ぶときはEntireColumnを使わないと作動しない理屈がよくわからないです。そういうものとして覚えるものなんですか?