• ベストアンサー

マクロ:A列が表示→非表示/非表示→表示

条件分岐のマクロを作りたいです。 もしもA列とD列が 表示されている場合は、このボタンを押すと、それらの列がHIDEになる。 もしも隠れている場合は、このボタンを押すと、それらの列が再表示される。 ・・このようなマクロの式を、教えてください・・。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.3

隠れてるか隠れてないか二択なので、条件分岐とかしなくても sub macro1()  columns(1).hidden = not columns(1).hidden  columns(4).hidden = not columns(4).hidden end sub とかで十分です。

penichi
質問者

お礼

シンプルで美しいですね・・。 うまく行きました。 ご回答、どうもありがとうございました!

その他の回答 (3)

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.4

>もしもA列とD列が 表示されている場合は、このボタンを押すと、それらの列がHIDEになる。 マクロにする必要ありますか? EXCELの機能にありますけど。。。 [データ][グループ化]でA:Dセルを設定すれば、E列上の+(表示)、-(非表示)ボタンでON/OFFを切り替えられます。。。

penichi
質問者

お礼

データというものを、知りませんでした・・・。 今回はマクロにしますが、 今後の参考とさせていただきます。 ありがとうございました! 

  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.2

マクロの記録で列を非表示にした結果を参考にして、 Sub Module1()  If Range("A:A").EntireColumn.Hidden = False Then   Range("A:A,D:D").EntireColumn.Hidden = True  Else   Range("A:A,D:D").EntireColumn.Hidden = False  End If End Sub とか。 > もしもA列とD列が 表示されている場合は、 A列の表示/非表示で判定しています。

penichi
質問者

お礼

ご回答、どうもありがとうございました! このようなコードを探していました。 コラムの選び方など、マクロ言葉では、知らなかったので、とても参考になりました。

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

やりたいことを「マクロの記録」でコードにして、 ボタンに関連付ける。多少手直しが必要ですが。 EXCEL2007以降なら、開発の中に、 EXCEL2003までなら、メニューのツール>マクロにあります。

penichi
質問者

お礼

そのコードを知りたかったので、助かりました。 ご回答、どうもありがとうございました!

関連するQ&A

  • マクロ 列の非表示

    マクロで列の非表示を登録し、実行は出来るのですが、そのマクロを列ごとに非表示/表示で複数登録し実行したところ、うまくいきません。 たとえばMACRO1ではA,C:D列を非表示,MACRO2ではA,B,E:Fを非表示に登録し、MACRO1を実行したあと、MACRO2を実行するとおかしくなります。 解決策はありますか?

  • 【マクロ】クリックすると空白を含む列を非表示に

    上司にExcelのデータが見づらいと言われて困っています。 下記のようなマクロやVBAを教えていただけないでしょうか? 例えば、 A2のセルをクリックすると、その行(2行目)から空白セルを検索して、そのセルを含む列を非表示にして、データが入っている列だけを表するようなマクロってないでしょうか? (要は、C2とE2が空白セルのとき、A2をクリックして、A/B/D/F~の列だけ表示されるようになるマクロです。 同様に3行目でも、空白セルがB3、C3なら、A3をクリックした時、A/D/E…列だけ表示されて、B・C列が非常時になるような。) 似たような機能があれば、A2クリックでなく別にボタン等を作っても構いません。 ややこしくて、申し訳ございませんが、本当に困っているので、 どうかよろしくお願いいたします。

  • エクセルマクロで指定した列を非表示にするには

    A1、B1、C1、・・・のセルに、1を入力した時、その列を非表示にするマクロを教えて下さい。 マクロ作成に当たって、条件が不足する場合は、その旨ご指摘下さい。

  • エクセルの列を表示・非表示させるマクロ

    エクセル2007を使っています。 Sheet1は,多数の人がデータを入力するシートです。 A列~F列までは,タイトル列ですが, 例えば井上さんはG列~K列に入力し,太田さんはL列~M列に入力し,・・・・という感じです。 それぞれの人が使用するとき,使いやすいように自分以外の列を非表示にする人が多いのです。 それは別にかまわないのですが,使用後に元に戻してくれない人が多くて困っています。 (会社には,パソコンのことをまったく知らないオバチャン達がいて,毎回「私のデータが無くなってる」と大騒ぎされるのです。) そこで,Sheet1から他のシートに移動するとき,自動的にすべての列が再表示されるようになればいいなと思い,質問しました。 さらに,この質問をしながら思いついたことですが, 例えばSheet2にコマンドボタンを多数作成して,それぞれの人の名前を割り当てたシートを用意したら便利ですよね。 つまり,先ほどの太田さんが自分のボタンを押したとすると, Sheet1に移動し,無関係な列(G~K列と,N~GU列〔最終列です〕)を非表示にするようなマクロがあれば,さらに便利だと思うのです。 分かりにくい文章で申し訳ありませんが, (1) コマンドボタンに割り当てて,Sheet1に移動し,不必要な列を非表示にするマクロ (2) シートが移動すると,すべての列を再表示しておくマクロ 以上 2点を教えていただきたいのですが, よろしくお願いします。

  • Excelで列を非表示にするマクロ

    マクロ初心者なのですが、 Excelで印刷前に印刷しなくてよい列を非表示にしたいので、 列を非表示にするマクロを作りたいのですが、 うまくいかないので方法を教えていただきたいです。 表のA~Nにデータが入っていて、 CとGの列を非表示にしたいのですが。 よろしくお願いします。

  • 【Excel2003/VBA】ある列の入力内容で他列の書式を変えるマクロは?

    こんにちは。 1つお教えいただきたいことがあります。 Excel2003を使用(WinXP Pro Sp2)を使用しておりますので、 条件付け書式を3つ(擬似的には4つ)までしか設定できません。 そこで、VBAでマクロを組んで対応したいと思うのですが、 たとえば、次のようなことを考えたいと思っています。 1. A列に4つ以上の条件があったときに、 その入力内容によって他列の書式を変化させる 2. A列のある条件を満たし、かつ、A列以外のある条件を同時に満たしたとき(AND)に、 それによって、もう1つの列の書式を変化させる 3. A列のある条件か、あるいは、A列以外のどちらかの条件を満たしたとき(OR)に、 それによって、もう1つの列の書式を変化させる フォントを太字にしたり、セルを塗りつぶしたり(カラーインデックス番号は理解しております)したい場合、 どのような分岐で上記1~3の条件を満たすマクロを書けばよろしいのでしょうか? あえて省略なしの冗長な記述法(かつ、説明コメント付きの記述)になってもかまいませんので、 できましたら、サンプルマクロなどの形でお教えください。 仮に、A列にア、イ、ウ、エ、オ、カがあり、 その入力次第で、 C列の各セルで、青・太字かつセルの水色ぬりつぶし、という形で表示されるようにする、 と仮定します。 2.と3.については、 たとえば、A列がアでB列もあだったら、C列のフォントなどの書式を変更、 A列がアかB列があだったら、C列のフォントなどの書式を変更、 という2つの場合を想定しています。 うんちく本を頼りにとっかえひっかえサンプルマクロを試し、業務に使用している、 というレベルでしかありませんので、 そのへんをご理解いただいた上でお答えいただけますと幸いです。

  • エクセルに関しての質問です。A列とB列に任意の文字列があり

    A列にもB列にもその文字がある場合、C列にその文字以外の文字を表示させ、B列にしかない文字をD列に表示させる。 (例) A B C D 1 1 3 5 2 2 3 4 4 5 というものは出来ますか?関数でも、マクロでもいいので、とにかく、その文字を摘出したいのです。どなたか違う方法でも良いので、教えて頂きたいです。

  • 表のばらばらの文字列をまとめるマクロ 関数

    以前、同じ内容の質問を聞いたのですが、少し条件を変えて質問です。 (1)左の表には数式が入っていて、この他にもう一つある表のデータに該当すると1列ごとにSMとかNPとか表示されるようになっています。 (2)この左の表は実際には136列あるので、結果を印刷すると一枚に収まりきらないのです。なので、右の表のように、最短の列に表示したいのです。 (3)この例ではたまたま1行に1個ずつしか文字列が入ってないので右の表は1列ですが、1行に付き2個以上文字列が入ることもあります。5個以上はほとんどないです。 (4)関数でできませんか? またはマクロでもいいです。 以前、回答でいただいた関数は =IFERROR(HLOOKUP("*?",$A1:$D1,1,FALSE),"") 又は =IF(COUNTIF($A1:$D1,"*?"),HLOOKUP("*?",$A1:$D1,1,FALSE),"") でしたが、これだと1行につき1個文字列があるときのみ可能です。 1行に付き2個以上文字列がある場合に、例えば空欄を削除して左に詰めるような感じでマクロでできないでしょうか?

  • Excel マクロで 列と行を非表示にするには?

    Excel マクロ初心者です ボタンで sheetの 行1~10を非表示にして その後さらに列のBA~BJを非表示にするマクロを設定したいのですが マクロの自動記録にすると シート上一部のセルのみが残り その他は全て消えてしまいました。 行または列だけの非表示の自動記録は 正常に動きますが 単独のマクロを行と 列でそれぞれ作り、片方を動かした後 もう一方を動かすとやはり一部のみ残り 他は全て消えてしまいます。 マクロで行と、列を同時に非表示にするのは無理なんでしょうか?

  • エクセルのA列とB列で重複するレコードのみを抽出して別の列に表示させた

    エクセルのA列とB列で重複するレコードのみを抽出して別の列に表示させたい。 エクセルのA列に約1,000行くらいのデータが有ります。 このA列内で重複レコードがあります。 B列に約1,000行くらいのデータが有ります。 B列内でも重複レコードが有ります。 この条件の中で (1)A列にもB列にあるデータすべて (2)A列にしかないデータすべて (3)B列にしかないデータすべて を抽出したいのですが、どんな方法がありますか? それで (1)をC列 (2)をD列 (3)をE列 に並べて表示させたいです。 さらに抽出されたデータで重複レコードの場合は1件のみで表示したいです。 複数の操作を繰り返すのではなく C,D,E列に式を入れるだけで済ませる事は可能でしょうか? よろしくお願いします。 例    A   B    C   D   E 1-001-002--001--004--007 2-002-002--002--006--008 3-001-001--005--010 4-005-007 5-001-005 6-004-005 7-004-008 8-010-007 9-006-007 A列には001が3個、002が1個、005が1個有ります。 B列には001が1個、002が2個、005が2個有ります。 A列にもB列にも有るのは、001と002と005ですから これがC列に表示されます。 でそれぞれA列にもB列にも複数有りますが、1個として判定なので よって、C列には 001 001 001 001 002 002 005 005 と表示ではなく 001 002 005 と表示したい。 次にD列はA列に有る物だけですから 004 006 010 となります。B列には004は2個有りますが同じ値なので 004 004 006 010 では無く004は1個の表示です。 E列はB列のみのデータなので 007 008 です。 同じくB列には007が3個有りますが1個ともなします。 007 007 007 008 では無く 007 008 です。

専門家に質問してみよう