• 締切済み
  • すぐに回答を!

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

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

共感・応援の気持ちを伝えよう!

  • 回答数3
  • 閲覧数1391
  • ありがとう数3

みんなの回答

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

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

共感・感謝の気持ちを伝えよう!

質問者からのお礼

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

関連するQ&A

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

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

  • エクセルVBAで全シートをアクティブにするには?

    ブック内の全シートを選択するのはSheets.Selectですね。 そうやって選択した全部のワークシートをアクティブにするにはどう記述するのでしょうか? SelectedSheets.Activateや Sheets.Activateではエラーになってしまいました。 何をしたいかといえば、全シートをアクティブにしてページ設定(横向きに)したいのです。

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

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

  • 回答No.2

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

共感・感謝の気持ちを伝えよう!

質問者からのお礼

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

  • 回答No.1

タブの非表示 ActiveWindow.DisplayWorkbookTabs = False

共感・感謝の気持ちを伝えよう!

質問者からのお礼

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

関連するQ&A

  • EXCEL;VBAマクロ:シート名変更

    アクティブシートの現在ついている名前をマクロの中で使用せずに、シート名をABCとかに変更するにはどのようにマクロ記述すればいいか。

  • [Excel VBA]シートの

    Visual Basic Editorを起動し、"プロジェクト エクスプローラ"と"プロパティウィンドウ"を表示した状態で、適当なシートを選択すると、"プロパティ ウィンドウ"の一番上の"(オブジェクト名)"欄に、今現在設定してある値が表示されます。 で、その値は"プロパティ ウィンドウ"から直接変更することは簡単にできますが、マクロから変更する方法が分かりません。 私がやりたいのは、マクロからシートを追加し、シート名と、この"(オブジェクト名)"を設定することです。 どなたか方法を知っている方がいましたら、是非ご教授お願い致します。

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

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

  • エクセルVBA escキーのマクロ

    初心者に毛が生えた状態です。エクセル2000を使っています。 ワークシートをWクリックするとユーザーフォームを表示するようにマクロの記述をしています。 ユーザーフォームをキャンセルボタン(×)で閉じるとシートのセルの中にカーソルが入った状態になります。 それをescキーを押した時のように、カーソルがセルの中に無い状態にしたいのです。 マクロの記録でescキーを押しても記録されないので、コードが分かりません。 ユーザーフォームの×ボタンを押したら、Wクリックする前の状態に戻すコードを教えてください。 よろしくお願いします。

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

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

  • エクセル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:ワークシート名の変数格納

    ユーザーフォームを使用して、ワークシート名を表示しまして、選択したワークシート名を変数に収めて、Workshees(変数)みたいな感じで処理の対象にしていきたいと考えています。 何が適切な方法かわからない状態です。 もしよろしければコードも教えてください。よろしくお願いします。

  • exel vbaについて教えてください。

    EXCEL2000のワークシート上にツールバーのフォームからボタン選択し追加させ、そのボタンを押すとフォルダが開くようにさせたいのですが、可能でしょうか?可能でしたら命令文を教えて下さい。

  • エクセルVBA

    Office2007ユーザーです ActiveXコントロールのコマンドボタンをワークシート上に置いてマクロを動かす仕組みのものを多数運用しています. 複数のファイル,複数のPC端末で,このタイプのマクロが動かなくなる事象が最近になって多発しています. とりあえずActiveX以外の手段でマクロを制御するように作り変えて対応していますが,何か良い対処方法はないでしょうか?

  • excel97で、一番右側に新しいシートを挿入させたい

    excel97で、「挿入」→「ワークシート」を選択すると、アクティブになっているsheetの前(シート見出し左側)に新しいシートが挿入されますが、大抵新しいsheetを挿入したいのは、一番後ろ(画面向かって一番右側)なので、そのあと移動させたりしなければならず面倒です。マクロ以外で一発で「一番後ろ(右側)に新しいワークシートを出す」ことは出来ないでしょうか? 宜しくお願い致します。

専門家に質問してみよう