• 締切済み

VBA シートの切り替えができないようにするには

こんにちは。いつもこちらでお世話になっています。 現在、VBAでフォームを利用したマクロを組んでいます。 あるボタンを押したときにマクロが実行された後、終了ボタンを押すまでの間はアクティブシートを移動してほしくない場合、シートの切り替えができないように制御したいのですが、ワークシートに直接イベントとして記述したくない場合はどうしたら良いでしょう? いっそのこと、ウインドウからシート選択ができないように画面を操作すれば良いのでしょうか? その方法はどうやって記述すればいいのでしょうか? それとも、シート切り替えのイベントをフォームで感知することができるのでしょうか? 困っています、、どなたか助けてください。 ウィンドウからシート選択ができないようにする方法だけでも結構です。 よろしくお願いします。

みんなの回答

  • ipsum11
  • ベストアンサー率21% (55/251)
回答No.3

>ウインドウからシート選択ができないように画面を操作 1.タブを非表示にする 2.アクティブシート以外非表示にする こんな感じでしょうか。

nao_lin
質問者

お礼

タブを非表示にするコードがわからなかったのですが、解決しました。どうもありがとうございました。

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

簡単なのは、あるボタンを押してマクロが実行されたときに、ワークシートタブを隠してしまうようにする。これが安直過ぎるのならアクティブシート以外を非表示にしてブック保護をかけるマクロも同時に走らせたらいかがでしょうか?

nao_lin
質問者

お礼

やっぱりこれが一番シンプルですよね、結局、タブを隠すことで処理することにしました。コードがわからなかったのですが、解決しました。どうもありがとうございました。

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

タブの非表示 ActiveWindow.DisplayWorkbookTabs = False

nao_lin
質問者

お礼

タブを非表示にするコードがわからなかったのです、解決しました。どうもありがとうございました。

関連するQ&A

  • EXCEL VBAでシートを削除したい

    こんにちは。EXCEL VBAのことで質問させていただきます。 マクロでシートを削除しようと思い、 下記のように記述しました。 Sheets(1).Select ActiveWindow.SelectedSheets.Delete しかし、このように記述すると「選択したシートを削除します。~」のようなメッセージが出てきてしまうため、何度もOKボタンを押さなければなりません。これではマクロで自動実行した意味がなくなってしまいます。 このメッセージを回避する方法はないでしょうか。 宜しくお願い致します。

  • 【ExcelVBA】commandButtonをクラスモジュールで制御するには

    お世話になります。 エクセルVBAで、ワークシートに置いたコマンドボタンの制御を、クラスモジュールから 行いたいと考えています。 制御といっているのはボタンの使用可不可、イベントの実行などです。 いろいろ調べてみたのですが、フォームからのイベントをクラスモジュールで行っているのは 見つけたのですが、ワークシート上に直接配置したボタンなどの制御は見つけることが出来ませんでした。 使用しているEXCELにバージョンは2003です。 よろしくお願いいたします。

  • エクセルVBA ユーザーフォームの終了について

    エクセルVBAでユーザーフォームを作成しています。 コマンドボタンにVBAマクロを割り当てしているのですが 思うように動いてくれないので質問します。 コマンドボタンをクリックしたら望む動作 1、ワークシートを選択 2、その後、ユーザーフォームを消す。 と言う動作にしたいのですが、2の ユーザーフォームを消す方法、書き方が分かりません どなたか教えていただけないでしょうか 1の動作は以下のように書いています。その後の書き方を お願いします。 Private Sub CommandButton8_Click() ブック名 = "VBA演習" シート名 = "sheet1" Workbooks(ブック名 & ".xls").Worksheets(シート名).Activate End Sub (ユーザーフォームの名前は"テストフォーム"としてます)

  • EXCELのVBAでシートコピーをしたとき元のマクロを削除するには?

    VBAのマクロでシートのコピーをしたいのですが、元のシートにはVBAのコードが含まれています。コピーするのはデータだけのコピーが必要で、マクロ自体は必要ないのですが、それを削除するコードはどのように書いたらいいのでしょうか? どうしてもコピーしたファイルを開くと「マクロが含まれています」という確認メッセージが出てしまうのですが、それもなくしたいのです。 シートにフォームのボタンが配置されている場合も同様に、そのボタン自体をなくした状態でコピーを行いたいのですが・・・。プログラムで行うのは不可能なのでしょうか?

  • エクセル ワークシートの切替をするマクロ

    エクセル97です。 エクセルに関してはまったくといっていいほど素人です。 見当違いな点もあると思いますが、よろしくお願いします。 ワークシートを多数作成します。 (仮にシート名を1、2、3……とします。ただし最終的には連番にはなりません) 各シートの様式はすべて同じです。 やりたいことは、コマンドボタンあるいはショートカットキーでシートの切替です。 わからないなりに「新しいマクロの記録」を使ってシート1のボタンを押すと2に移動、というところまではできました。 ただ、これを何十とあるシートに一つずつ設定するのはかなりの手間なので、シートをコピーする時にマクロをいじらずにすむ方法が知りたいです。 (現在はシート1・シート2までしか作成していません。3以降はコピペで作成します) つまり「ボタンをクリックすると一つ右のシートに切替」という動作は可能でしょうか。 さらに「切替えたあとカーソルの初期位置をA2に」という事はできますか?(これはおまけでかまいません) わかりにくい説明になってしまいましたが、どうぞよろしくお願いします。

  • VBAで複数シート選択

    エクセルVBAで複数のシートを選択する場合、 Sheets(Array("AAA", "BBB", "CCC")).Select  と書くと思いますが、マクロを回してみないことにはシート名や枚数が特定できない場合、どのように記述したらいいのでしょうか? たとえば、新たに追加されたSheets(n)~Sheets(n+x)を選択するような場合です。 よろしくお願いします。

  • VBAで、エクセルワークシート上の図を選択・削除したい

    VBAで、ワークシート上の図をすべて選択して削除するのは、どのように書いたら良いでしょうか?実際の図は一つなのですが、オートマクロで記述すると、 ActiveSheet.Shapes.Range(Array("Picture 3").Select のように、番号が変わってしまいます。

  • EXCEL VBA(ワークシート上)でデータ入力の感知

    EXCEL VBAに関する質問です。(素人です) ワークシート上で金額、納入期限、利率を元に、延滞金が100、200、300~5,000円となる日の算出をボタンクリック行うロジックを作成しました。金額、納入期限、利率のいずれかの入力後、ボタンクリックすることなく出来るようしたいのですが、以下の方法ではダメでした。 ○ユーザー関数…for next,DO WHILE命令?使用の為機能せず。 ○SelectionChange…データ入力自体は感知しない。 ○Worksheet_Calculate…イベント発生が50回もあり不可。 何とかワークシート上でENTERキーを感知する方法はないでしょうか。

  • 【VBA】マクロのルールについての文章 解説

    マクロのルールについて記載された一文について、次の内容を噛み砕いて教えていただけますか。 さっぱりわかりません。。。 「イベントを利用するマクロはオブジェクトのモジュールに記述する」 ワークシートをアクティブにすると、アクティブになったワークシートでActivateイベントが発生します。このイベントを利用して、ワークシートが切り替わった時自動的に起動するようなマクロは、Worksheetオブジェクトのモジュールに記述しなければなりません。

  • VBAで実行押すまでExcel非表示にしたい

    VBAでユーザフォームを作成しました。 Excelを立ち上げるとExcelシートの前にユーザフォームが出る状態なのですが、 ユーザフォームの実行ボタンを押すまでは非表示にしたいのですが、どのような記述をしたらよいでしょうか? マクロ的に実行ボタンを押すと結果が、Excel上に反映されるので、実行ボタンを押すまで非表示であれば大丈夫です どうか教えてください。

専門家に質問してみよう