VBAでExcelのシートを非表示にする方法

このQ&Aのポイント
  • Excel2000でVBAを使ってシートを非表示にする方法を教えてください。手順を詳しく教えてください。
  • VBAでWorksheets("Sheet1").Visible = Falseという式を見つけましたが、どこに入力すれば良いかわかりません。
  • Sheet1だけでなく他の複数のシートを非表示にする方法も教えてください。Excelの機能ではシート非表示はできますが、VBAでの実行方法を知りたいです。
回答を見る
  • ベストアンサー

VBAを入れる場所

シートの非表示をVBAで実行したく(Excel2000) VBAのヘルプを見て Worksheets("Sheet1").Visible = False という式を見つけたのですが、どこに入力していいのかがわかりません。 質問内容をみていただいた通り、VBAに関しては全く知識がありません。 標準モジュールに入力してみたのですが、ダメでした。 (できれば、手順を詳しく教えてください) と、多分、上の式は、Sheet1を表示しなくするということだと思うのですが、 例えばSheet1とSheet3とか SHEET1からSheet4まで非表示にするとか というときには、どのように記述 したらよいのか、教えてください。 (Excelの機能でのシート非表示は知っています)

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

  • ベストアンサー
  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.1

ツール→マクロ→Visual Basic Editorで VBAの画面を開きます。 次に プロジェクトに表示されている ThisWorkBookをクリックします。 (General)とかかれてあるドロップダウンリストをクリックして Workbookを選択します。 すると その隣が Openと表示されます。 その下には Private Sub Workbook_Open() End Sub と表示されています。 で、その間に記述して Private Sub Workbook_Open() Worksheets("Sheet1").Visible = False End Sub とします。 これは、このワークブックを開いたときに シートを表示にするといった 内容になります。 VBAには、こうしたイベントというのがいろいろあります。 クリックした時や閉じた時など イベントが発生し、そのイベント時に 何をして欲しいか記述してプログラムを作っていきます。

omusupa
質問者

お礼

ありがとうございました。 思い通りのものができました。 ファイルを開くときに、マクロの有効無効のダイアログが出ますが これを表示しないようにする、VBAと言うものもあるのでしょうか? 新しい質問で出しておきますので、お時間があれば、見ていただけませんか? よろしくお願いします。

関連するQ&A

  • sheets() と worksheets() の違い

    基本的な内容になるのかもしれませんが、ヘルプや他の方のプログラムなどを読んでも、いまひとつ理解できないので、質問させていただきました。 EXCELのVBAの記述で、仮に Worksheets("sheet1").Select Worksheets("sheet1").Visible = False としても Sheets("sheet1").Select Sheets("sheet1").Visible = False としても同じ結果になります。私は普段後者のSheets()という記述をしているのですが、人によってはWorksheets()を使用されている方も見受けられます。 この2つどのような違いがあるか教えていただければ、とてもうれしいのでが。

  • VBA

    VBEの標準モジュール(例Module1)にVBAのプログラムを書き、 実行した時、ワークシート(例Worksheets(”sheet1”)のウインドウを自動的に開くには(前面に持ってくるには)どのようにコーディングすれば良いのでしょうか。今は実行後確認するため、プロジェクトのSheet1で右クリックして「オブジェクトの表示」でSheet1を出したり、タスクバーをクリックしていますが。まずSheet1を前面に出して処理をしたい。Activate,Select、Showなど試しても効果がありません。

  • Excel VBA 自身を非表示にした時の解除方法

    Excel2010でVBAのコードデバッグ中に Excelアプリケーションのウインドウの中に Excelブック(シート)が表示されなくなってしまったため 一度、Excelアプリケーションを終了して 再びデバッグ中のExcelブックを開いたのですが それでも Excelアプリケーションのウインドウだけが表示されて、 開きたいExcelブック(シート)は表示されません。 おそらく、VBAのコードの中の Set wb = Workbooks.Open(fileName:=filePass, ReadOnly:=True) ActiveWindow.Visible = False の ActiveWindow.Visible = False のコードが 自分自身を非表示にしてしまったのではないかと思われます。 イミディエイトウィンドウに ActiveWindow.Visible = True と入力してもウインドウが表示されていないので エラーになります。 どのようにすれば非表示の状態から 表示の状態に戻すことができるのでしょうか。

  • VBAで作成したComboboxにVBAでマクロを割り当てたい。

    下記コードでcomboboxをつくったのですが 作成されたCombobox1のComboBox1_Changeエベントに 標準モジュール内のSub cal をVBAで割り当てたいのですが可能でしょうか。 コンボボックス作成マクロ x=0 y=0 With Worksheets("Sheet1").OLEObjects.Add(ClassType:="Forms.ComboBox.1", Link:=False, DisplayAsIcon:=False) .Left = X .Top = Y .Width = 53.25 .HEIGHT = 18 .ListFillRange = "AAA" End With これで作成したコンボボックスに標準モジュール内マクロをVBAで割りあてしたい。 標準モジュール sub cal ・ ・ end sub

  • エクセルVBAの記述で・・・OTL

    エクセルVBAの記述で・・・OTL VBA初心者です。 まず、私が記述した内容を書きます。 Sub 実践練習() Dim tuika As String tuika = Application.InputBox( _ Title:="追加", _ Prompt:="追加する内容を入力して下さい。", _ Left:=650, _ Top:=100, _ Type:=2) If Worksheets("Sheet2").Range("G10").Value <> " FALSE " Then MsgBox "OKです", vbOKOnly + vbDefaultButton2, "追加完了" With Worksheets("Sheet2") .Range("G10").Value = tuika LastRow = Worksheets("Sheet3").Range("A" & Rows.Count).End(xlUp).Row + 1 Worksheets("Sheet3").Range("A" & LastRow).Value = Worksheets("Sheet2").Range("G10").Value End With Else MsgBox "入力が不足しています。", vbOKOnly + vbCritical, "入力ミス" End If End Sub() 完成させたいことは・・・ Sheet1に存在するInputbox(ボタン)を使用し、 Sheet2のG10にFALSE以外が入力されたときは、 MsgBox追加完了のダイアログを表示してSheet2のG10値をSheet3のA列に順番に転送させる。 もしFALSEが入力されてしまったら、 MsgBox入力ミスを表示させて、 Sheet2のG10の値(FALSE)を削除しなさい。 と、記述したいのです。 勿論、上記の記述は完成していません(泣 どなたか、ご教授の程、何卒宜しくお願い致します。 (上記の完成型をお待ちしてます m(_ _)m ) 【環境】 OS:WindowsXP Pro Excel:2003

  • エクセルVBA/非表示シートの使い方

    度々よろしくお願いします。 シート(1)が入力用、シート(2)が計算および並び替え用、シート(3)が編集表示用として、シート(2)を常に非表示にしておきたいのです。 非表示のまま、記述の対象とする方法というのはあるのでしょうか?なければ、 Sheets(2).Visible = True ⇔ False で挟む方法が一般的なのでしょうか?

  • Excel2007VBA ブックのアクティブ化

    ●質問の主旨(2点) 1.以下のコードは、なぜエラーが返されるのでしょうか? 2.タスクバーにあるアクティブ状態ではないブックの1枚目シートを 選択するためには、以下のコードをどのように書き換えれば良いでしょうか? ●質問の補足 タスクバーにはエクセルブック「Book1」と「Book2」を表示させ、 「Book1」の「sheet1」がアクティブになっています。 Book1の標準モジュールに以下のコードを記述しています。 Sub sample1() Workbooks("Book2.xlsx").Activate Worksheets("sheet1").Select End Sub しかし実行すると「実行時エラー9インデックスが有効範囲にありません」と エラーが返されます。なぜそうなるのかが分かりません。 ご存知の方がいらっしゃればご教示よろしくお願い申し上げます。 私はVBA初心者です。

  • excel2010でボタンが反応しなくなった?

    EXCEL2010でシート上に作成したボタンがある時期から反応しなくなりました。 原因がわかりません。 VBAエディタで開いて、実行(f5)すると実行できます。 どうしたら元に戻るか、どなたかわかる方、お願いします。  ・元に戻る…「Excelのシート上からボタンをクリックするだけで実行できるようになる」 1.処理自体は単純でシート上に作成したコマンドボタンをクリックすると   標準モジュールに記述したマクロを実行します。   Sheet1のコード (CommandButton1_Click)      Call [標準モジュールSubの名称]ItiranGet   ※1 VBAのコードを開いた状態で、上記のCall文、標準モジュールで      実行(F5)すると、実行できます。 2.マクロのセキュリティは、下記に設定しています。   すべてのマクロを有効にする よろしくお願いいたします。

  • エクセルvba アクティブシート以外の範囲指定

    現在エクセルのVBAを勉強中(かなり初心者ですが。。)で、仕事でも使う封筒印刷用のマクロを組んでみようと思っています。 作成したユーザーフォーム内のリストボックスに、宛名一覧を入力したワークシートからデータを引っ張ってきて表示しようと思っているのですが、宛名一覧を記述しているシートがアクティブの際にはうまく動作するのですが、その他のシート(封筒のレイアウトを書き込んでいるシートなど)がアクティブの時には 実行時エラー'1004' アプリケーション定義まてはオブジェクト定義のエラーです。 というエラーが表示され、うまく行きません。 うまく行く方法をご教授いただけたらと思います。よろしくお願いいたします。 ソース(標準モジュールに記述) Sub adrsList() UserForm1.ListBox1.List = Worksheets("address").Range(Cells(Worksheets("address").UsedRange.Rows.Count, 8)).Value UserForm1.Show End Sub ※address:住所録のデータがH列に格納されているワークシートです

  • エクセルのマクロの記述について

    VBA初心者ですのでどうか詳しく教えてください。下記のマクロをエクセルで組んだのですが・・・ -------------------------------------------------------------------- Sub hideworksheets() Worksheets("sheet1").Visible = False End Sub Sub ボタン_Click() ActiveWindow.SelectedSheets.PrintOut Copies:=1 Sheets("sheet1").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1 Sheets("sheet2").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1 Sheets("sheet3").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1 Sheets("sheet4").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1 End Sub ------------------------------------------------------------ 1.上記設定で"sheet5"という別シートにボタンを設置した場合、このボタンを実行すると、シート1~4のほかにシート5まで印刷されてしまいます。シート5を印刷したくない場合のVBAの記述について教えてください。 2.「Sub hideworksheets()  Worksheets("sheet1").Visible = False    End Sub」    の箇所で、シート1を非表示にしたいのですが、このマクロを実行時、「Sub ボタン_Click()」以下のマクロを実行しようとすると、「実行時エラー1004 worksheeクラスのselectメソッドが失敗しました」のエラーがでてしまいます。シート1を非表示にし、無事印刷のマクロを実行する為の記述を教えてください。

専門家に質問してみよう