• 締切済み

EXCELでVBAを使って複数の列を選びたい

EXCELで、自分が希望する複数の列を選択し非表示にしたい。 これをマクロを使ってやりたいのですが、どうすればいいのかわかりません。 希望する列の入力はINPUTBOXを使えばいいのかなって思います。仮に開始列番号と終了列番号を入力したとして、その複数列を選択し非表示にするというコマンドが何かよくわからないのです。ちなみに、R1C1形式でもA1形式でもどちらもやりたいです。 すごく初歩的な質問だと思いますが、何卒よろしくおねがいします。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

Range("A:A,C:C,E:E").Select Selection.EntireColumn.Hidden = True VBAを勉強するのに、方法論として、「マクロの記録」を活用しましょう。私はこれに非常にお世話になりました。 ツール--マクロ--新しいマクロの記録でやります。 好きな列を飛び飛びに掴むには、ctrlキーを押しながら例えばA列、C列、E列の列記号の部分をクリックします。 非表示にするには、書式--列--表示しないの操作です。 ツール--マクロ--記録終了で止めます。 そしてツール--マクロ--VisualBasicEditorをクリックし、標準モジュールをクリックするとModule1が現れ、そこをクリックすると上記のようなVBAが現れます。

  • peso
  • ベストアンサー率41% (40/97)
回答No.2

ユーザーフォームを使ってみてはどうでしょうか? 次のものはユーザフォームに テキストボックスの textbox1 と textbox2 があり、 コマンドボタンの hiddenbutton というものがある場合、 hiddenbutton を押したときに指定した列 (textbox1とtextbox2に指定) を非表示にします。 A1形式とR1C1形式どちらでも指定できますが、その他のエラー処理をしていないため、 変な値(1000やZZZや%&'等)を指定するとエラーになります。 Private Sub hiddenbutton_Click() Dim select_clm1, select_clm2 As String Dim dummy, textvalue As Integer If IsNumeric(textbox1) = True Then textvalue = Val(textbox1.Value) dummy = Int(textvalue / 26) If dummy = textvalue / 26 Then dummy = dummy - 1 End If If dummy = 0 Then select_clm1 = "" Else select_clm1 = Chr(dummy + 64) End If select_clm1 = select_clm1 & Chr(textvalue - dummy * 26 + 64) Else select_clm1 = textbox1.Value End If If IsNumeric(textbox2) = True Then textvalue = Val(textbox2.Value) dummy = Int(textvalue / 26) If dummy = textvalue / 26 Then dummy = dummy - 1 End If If dummy = 0 Then select_clm2 = "" Else select_clm2 = Chr(dummy + 64) End If select_clm2 = select_clm2 & Chr(textvalue - dummy * 26 + 64) Else select_clm2 = textbox2.Value End If Columns(select_clm1 & ":" & select_clm2).Hidden = True End Sub

  • kougasha
  • ベストアンサー率32% (34/105)
回答No.1

 Columns("A:C").Hidden = True これで、A~C列は非表示になるでしょ。   マクロプログラマーの基本である、「マクロの記録」 をやってみたのですか? まず、自分がやりたい動作を「マクロの記録」で記録 してみて、記録されたマクロの処理を解析して修正す る。 これは、基本中の基本ですよ。

sizuka
質問者

補足

早速のご回答ありがとうございます。 ご指摘の「マクロの記録」はもちろんやりました。 ですので Columns("A:C").Hidden = True はわかりましたが、この「A」や「C」をx$、y$といった入力変数にしたいのです。単純にColumns("x$:y$").Hidden = True ではだめですよね・・・ また私は、A1形式とR1C1形式と両方ともよく使うので、R1C1形式での方法も知りたいのです(ご回答はA1形式ですよね)。 すみませんがよろしくお願いします。

関連するQ&A

専門家に質問してみよう