• ベストアンサー

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

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

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! 非表示にするマクロは簡単ですが、再表示させる必要はないのでしょうか? シートモジュールになります。 Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Rows(1)) Is Nothing Or Target.Count <> 1 Then Exit Sub If Target = 1 Then Target.Columns.Hidden = True End If End Sub ※ 手作業で列の再表示はできますが、余計なお世話かもしれませんが ↓のコードが再表示のコードです。 これは手動でマクロを実行してください。 Sub 再表示() ActiveSheet.Columns.Hidden = False End Sub こんな感じではどうでしょうか?m(_ _)m

James-Bond
質問者

お礼

ありがとうございました 目的を達成しました

James-Bond
質問者

補足

早速試してみたんですが、シートモジュールをどこに記述し、動かすためにはどうしたら良いかがわかりません 基本が判ってなくて恐縮ですが、教えて下さい

その他の回答 (2)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

No.1です。 VBE画面を出す方法ですが、何通りかあります。 一般的な方法としては 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → 表示されるのがVBE画面ですので そこに前回のコードをコピー&ペースト → Excel画面に戻り1行目にデータを入力してみてください。 「1」を入力した時点でマクロが走ります。 ※ 「再表示」のコードは標準モジュールでもよいですし、 同じSheetのシートモジュールでも構いません。(すでにあるコードの下へコピー&ペースト) 再表示のマクロはこちらで操作してやる必要があります。 Alt+F8キー → マクロ → マクロ実行です。m(_ _)m

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.2

とりあえず以下のようなものではいかがでしょう Private Sub Worksheet_Change(ByVal Target As Range) If Target.Value = 1 And Target.Row = 1 Then Columns(Target.Column).EntireColumn.Hidden = True End If End Sub

関連するQ&A

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

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

  • エクセルでマクロを作りたいのですが上手くいきません

    エクセルで会社で使うファイルを作成していますが、ファイルサイズが大きくなりすぎたので、こういうマクロが作れないかと調べていたのですが、やり方がわからないので困っています。 わからないのは、入力シートのA列にデータを入力して、シート2のB列に自動的に表示する ことを自動的にやってくれるマクロです。 今はIF関数をシート2に入力している状態ですが、セルに関数を入れる方法だとファイルサイズが大きくなりすぎてしまいます。 (IF関数をあらかじめ入力しておくセル数がとてもたくさんある為) なお、入力シートA列がブランクの場合は、シート2のB列には何も表示されないようにしたいです。 大変困っております。よろしくお願いします。 

  • エクセルかマクロで・・・

    エクセル関数かマクロで作りたいのですが、   A列に数字B列に個数を入力していくとします。   A列の数字をB列の個数分だけC列に表示したいのです。  例えばA1に300、B1に5、A2に500、B2に6と入力した場合、   C1からC5に300、C6からC11に500、と表示するにはどうしたらよい  でしょうか。 よろしくお願いいたします。

  • エクセルの表示について

    1行目:セルA1+セルB1= C1 2行目:セルA2+セルB2= C2  ・  ・  ・ という計算式を、50行作成します。 C列に、(=A1+B1)という計算式を入れて、1行目のC1とドラグ&ドロップし、50行目まで計算式を入力するとき、 B列に数字が入力されていないときに、計算式の入った C列にも何も表示されないようにしたいんです。 今の状態だと、A列に数字が入っていると、自動的にC列にも数字が入ってしまうので困っています。 当方はエクセル初心者なので、できれば、マクロなど複雑な方法を用いず、解決したいのですが・・・ どなたか御存知の方、アドバイスお願いします。

  • マクロ 列ごとの条件付き書式

    マクロで列ごとの条件付き書式を作成したいです 条件としては ・列ごとに上限値が1行目に下限値が2行目に入力されている ・3行目以降に測定値が入力される ・その3行目位以降の測定値のセルの書式を上下限値から外れた値は色を変えたい ・50列ほどデータがある (例) A1 10 A2 5 A3~A100 数字 条件をA3~A100に設定 A1(10)より大きいもの、A2(5)より小さいものはセルの色を黄色 B1 15 B2 7  B3~B100 数字 条件をB3~B100に設定 B1(15)より大きいもの、B2(7)より小さいものはセルの色を黄色 こんな感じで列ごとにデータと規格値が入っているものが50列あります。 どうかよろしくお願い致します。

  • エクセルで…関数かマクロか?

    エクセル2007を使っています。 3列のシートがあるとしますね。 それぞれの列は、「A 現金残高」、「B 収入」、「C 支出」とします。 たとえば、3行目から数値を入れるとします。 普通ならば、B3 (収入)のセルに 1000(円) と数字を打ち込めば、 A3 (現金残高)のセルに同じく 1000が入るよう、=B3 とすればいいと思います。 同様に、C3のセルに1000と入力すれば、 A3のセルには -1*(C3) とすることで、現金残高が収入と支出によって、 プラスマイナスされるようにし、あとで各列を∑すれば済みますね。 でも、いま僕がやりたいのは、 たとえば現金残高 A3のセルに -1000 と入力すると、自動的に C3のセルに 1000 と 表示され、A3に 1000 と入力すると、 B3のセルに 1000と表示されるようにしたいのです。 要するに、現金残高に入力した数値がプラスかマイナスかによって、 数字が表示されるセルを個別に指定し、指定したセルに計算結果を表示させたいわけです。 IF関数で、数値のプラスマイナスは判断できますが、任意のセルを指定させる方法が わかりません。 「もし…だったら 『任意のセルに』○○せよ」  というような指定はできるのでしょうか? もしくは、マクロを使わないとできないのでしょうか? いろいろサイトも調べてみましたが、力不足で回答にたどり着くことができませんでした。 よろしくご教授お願いいたします。

  • エクセル2000のマクロについて教えて下さい。

    いつも お世話になっております。 マクロにはこだわってはいませんが、 a1:a1000 まで名称があります。 セルb1に一部の名前を入力したら a1:a1000の間に同じ名称があった 場合c1に表示できないでしょうか? ただし 複数があった場合はc1:c・・・・で表示したいので マクロではないとできないかなと思っています。 すみませんがよろしくお願いします。

  • Excelでマクロを使用して、列を表示させる質問です。

    Excle2003での質問です。 C3セルからAE78セルまでにデータが入力されています。 C列には項目名・3行には氏名が並んでいます。 D4セルからAE78セルには、 各人に対応する項目に○や△等が記入されています。 (空白セルもあります) A1セルに氏名を記入して(3行目のリストから選択して)、 マクロを実行させると、 1.氏名を一致する氏名の列のみを表示して、 2.オートフィルタで空白以外の行を表示する。 (ただしC列の項目名は表示されたまま) このようなマクロを組みたいのですが、 初心者の私ではまったく分かりませんでした。 どなたかご教授いただけたらと思います。 よろしくお願いいたしますm(_ _)m

  • エクセル・マクロで最終行を表示することについて

    エクセル・マクロで最終行を表示することについて C列の最終行を表示する場合、以下のマクロで表示できます。 今回はC列に C1=A1&B1 C2=A2&B2  ↓ という式が入力されている場合について質問します。 A列とB列が空白の場合、C列には0が表示されます。 したがって、下記のマクロだとこの0の行が最終行となります。 私の希望はこのC列の0は空白とみなし、0以外の値や文字が入力されている最終行を表示することです。 どのような工夫をすれば可能でしょうか? ご指導よろしくお願いします。 Sub 最終行表示() maxrow = Range("c65536").End(xlUp).Row MsgBox maxrow End Sub

  • エクセルのマクロ

    セルA1に、a2からa90までの任意の文字を入力した後にマクロを実行します。 セルA1にa7と入力されている時はセルB1にa6と表示され、セルA1にa86と入力されている時はセルB1にa85と表示されるようなマクロを教えてもらいたいのですが。 B1は必ずA1の数字の部分が1つ少なくなるということです。      

専門家に質問してみよう