エクセル起動時にイベントが実行されないようにする方法

このQ&Aのポイント
  • エクセルVBEのThisWorkbook内にイベントを記述し、オープン時に実行されないようにする方法についてまとめました。
  • イベントコードの行頭に「’」を付けてメモにし、有効無効を切り替える方法や一括で記号を付けたり省いたりする方法についても紹介しました。
  • これにより、行数が増えても手間をかけずにイベントの有効無効を切り替えることができます。
回答を見る
  • ベストアンサー

エクセル起動時にイベントが実行されないようにする。

エクセルVBEのThisWorkbook内に下記のようなイベントでコードを書いておき、 BOOKオープン時には実行されない単なるメモ的効果のものを書いておきたいと思います。 (これ以外にも複数のコードをたくさん記述しておきたい。) そして実際に使う時だけ有効に切り替えて使いたいと思っています。 コードは正しく書いておかないとオープン時にエラーメッセージがでてしまうので 「’」の記号を行頭につけてメモにしておくのはわかるのですが、行数が増えると全行頭に 記号を付けたり省いたりするのがかなり手間となります。 簡単に有効無効を切り替えて書いておく方法はありますか。 あるいは必要な部分だけ記号を全行頭に一気に付けたりとりはずしたりする方法はありますか。 Private Sub Workbook_Open() Sheets("販売").EnableSelection = xlUnlockedCells Sheets("顧客").EnableSelection = xlUnlockedCells Sheets("商品").EnableSelection = xlUnlockedCells End Sub

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

  • ベストアンサー
回答No.2

コメント行(') を複数行選択し一括して、コメントをon/off することは可能です。 ツールバーに「編集」メニューを表示させればその中に コメント ブロック 非コメント ブロック というのがあります。これで、 (')を付けたり消したりしてくれます。

kafun-show
質問者

お礼

自分にはこの方法が一番わかりやすかったです。ありがとうございました。

その他の回答 (3)

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.4

C言語のように条件コンパイルというのがあります。 #If AA Private Sub Workbook_Open() プログラム本体 End Sub #End If このように記述し、VBAProjectのプロパティで、 「条件付きコンパイル引数」の所でAA=1とすれば プロシージャはコンパイルされ、AA=0とすれば プロシージャはコンパイルされず、存在しない ものとして扱われます。

kafun-show
質問者

お礼

Thisworkbookに次を記述後シート名を”販売”に変更。また「条件付きコンパイル引数」の所でAA=1と入力してみましたがThisworkbook内の#If AAの部分が赤い文字になってうまくいきませんでした。自分には難しすぎたようです。ありがとうございました。 #If AA Private Sub Workbook_Open() Sheets("販売").EnableSelection = xlUnlockedCells End Sub #End If

回答No.3

私は プログラムに手を入れる時と、実行時は下記の方法です Private Sub Workbook_Open() Msg = MsgBox("実行モードですか?", vbYesNo + vbQuestion, "確認") If Msg = vbYes Then    else   setTimerFunction "", "", "" endif 完成すれば 用無しですが

kafun-show
質問者

お礼

これをコピーしてThisworkbookに貼り付けて実行したみたらsetTimerFunctionでコンパイルエラーと表示されます。自分には実力がないためそれをどうしてよいのか理解できず難しすぎました。ありがとうございました。

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.1

目的がいまいちわかりませんが Private Sub Workbook_Open() if 1=1 Then Sheets("販売").EnableSelection = xlUnlockedCells Sheets("顧客").EnableSelection = xlUnlockedCells Sheets("商品").EnableSelection = xlUnlockedCells End If End Sub で if 1=1 Thenを if 1=2 Thenにするとか Private Sub Workbook_Open() 'Private Sub Test() Sheets("販売").EnableSelection = xlUnlockedCells Sheets("顧客").EnableSelection = xlUnlockedCells Sheets("商品").EnableSelection = xlUnlockedCells End Sub で、Subの前の'を変えるとか Private Sub Workbook_Open() Call Tset End Sub Sub Test() Sheets("販売").EnableSelection = xlUnlockedCells Sheets("顧客").EnableSelection = xlUnlockedCells Sheets("商品").EnableSelection = xlUnlockedCells End Sub で、Callの前に 'を付けるとかではダメでしょうか。

kafun-show
質問者

お礼

早々に、又いろいろな方法のご回答ありがとうございました。自分には役立ちそうなので ゆっくりと全部を試してみたいと思います。

関連するQ&A

  • Excelのマクロが実行されない

    Excelを立ち上げ、VBEでThisWorkbookに以下のマクロを記述します。 Dim WithEvents a As Workbook, WithEvents b As Workbook, WithEvents c As Workbook, WithEvents d As Workbook Private Sub Workbook_Open() Stop End Sub ファイルを保存してから起動し、マクロを有効にすると Stop で停止します。 ここで一旦 Stop を削除してから再度 Stop を挿入してから保存します。 再びこのファイルを起動し、マクロを有効にしても Stop で停止しません。 今回は簡単のため Stop にしていますが、実際には起動時の処理が実行されないため困っています。 OSはWindows7,Excelは2007です。

  • Workbook_Openを起動時以外に呼び出す

    標準モジュールに書いた、Sub Auto_Open()なら、ボタンにAuto_Openを登録するなどで、ブックの起動時以外でも呼び出せますが、ThisWorkbookに書いた、Private Sub Workbook_Open()は、ボタンにWorkbook_Openを登録しても作動しません。 どのようにすればよいのでしょうか?

  • 他のブックが開くと同時にユーザーフォームを表したい

    Aブックから他のブックが開いた時、ユーザーフォームを表示したいので 次のコードでやってみたが、なぜか表示されません。ご教示お願いします。 AブックのThisworkbookに入力しました。 (1)Private Sub Workbook_Open() A表紙.Show End Sub A表紙にコマンドボタンをつけました。 (2)Private Sub CommandButton96_Click() A表紙.Hide Workbooks.Open Filename:=ThisWorkbook.Path & "\2年施設\計算プログラム.xlsm" Sheets(1).Select End Sub 開いた”改善プログラム”のThisworkbookに入力しました。 Private Sub Workbook_Open() UserForm1.Show End Sub

  • 実行時エラー 2001

    http://officetanaka.net/excel/vba/vbe/05.htm を参考に VBAコードを取得したいのですが Declare Function GetTickCount Lib "kernel32" () As Long Public sampledata As String Sub Sample9() Dim Code As String Code = ThisWorkbook.VBProject.VBComponents("Module1").CodeModule.Lines(7, 5) MsgBox Code End Sub を実行すると 実行時エラー 2001 'VBProject'メソッドは失敗しました:'_Workbook'オブジェクト が、 Code = ThisWorkbook.~ の行で発生します。 何が間違ってますか?

  • VBA起動時のコンボボックスについて

    度々、お世話になっており、今回もご教授お願いしたいです。 VBAの“Sheet1”に2つのコンボボックスのプログラムを作成しました。 Private Sub ComboBox1_Change() Private Sub ComboBox2_Change() どちらも選択(fmStyleDropDownList)のみです。 しかし、Excel起動時にコンボボックスの内容が登録されないため、 ThisWorkbookの【Private Sub Workbook_Open()】 で Private Sub ComboBox1_Change() Private Sub ComboBox2_Change() ↑この2つを実行したいのですが、、、、 なんと記述したらよいかわからず、行き詰っています。。。 Private Sub Workbook_Open() ComboBox1_Change() = ture End Sub ↑こんな感じであれやこれや試してはいますが・・・ 記述方法をご教授ください。よろしくお願いします。

  • エクセル起動時のプロジェクトエクスプローラの「ThisWorkbook」の記述について教えてください。

    現在Sheet1のG5をカレントセルするように次のように記述してあります。 Private Sub Workbook_Open() Sheets("Sheet1").Range("G5").Select End Sub これをG5ではなく今日の日付(たとえば2009/11/22)のあるセルをカレントセルにしたいと思います。よろしくお願いします。

  • Excelファイルを開いた時に、特定のシートに保護をかけたいです。

    Excelファイルを開いた時に、特定のシートに保護をかけたいです。 http://okwave.jp/qa/q6067314.html 本日質問しましたカーソルの変な動作の原因というか引き金がわかりましたので、 再度質問致します。 Sheet1, Sheet2, Sheet3の3シートがあるExcelファイルを開いた時に、Sheet2に保護をかけたいです。 そこで、 ThisWorkbookの中に、以下のように記述しました。 Private Sub Workbook_Open()  Worksheets("Sheet2").Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, UserInterfaceOnly:=True  Worksheets("Sheet2").EnableSelection = xlUnlockedCells  'マクロ使用時には保護を無視したい End Sub このように記述し、Excelファイルを開くと、Sheet2に保護がかかります。 ただし、 (Excelファイルを開く際は、「前回保存時に開いていたシートで開く」と思うのですが、) このExcelファイルをSheet1またはSheet3を表示させた状態で保存すると、 次にこのExcelファイルを開いた時になぜかSheet1または3にも保護がかかってしまいます。 この「Sheet1または3にかかった保護」は、一度別のシートに切り替えることで解除される一時的なものなのですが、 なぜ指定していないSheet1または3にも保護がかかってしまうのでしょうか。 ThisWorkbookへの書き方がまずいでしょうか。 以上、知っている方いましたらよろしくお願いいたします。

  • エクセル ファイルの起動と同時にVBE画面を開くに

    accessの場合は、AutoExecを作成し、 モジュールを開くアクションでModule1を指定すれば、 ファイルを開いたと同時にVBE画面を開けますが、 エクセルの場合は、ファイルの起動と同時にVBE画面を開くにはどうすればいいでしょうか? Private Sub Workbook_Open() に何かをすると思うのですが、どうすればいいのかわかりません。 ご回答よろしくお願いします。

  • アクセスでファイルを開いたと同時にフォームを表示させるにはどうすればいいのでしょうか?

    エクセルでいうWorkbook_Openイベントをアクセスで行いたいです。 でもアクセスのvbe画面を見て見るとエクセルでいうThisWorkbookがありませんでした。 どこにどういうコードを書けばいいのでしょうか? よろしくお願いします。

  • エクセルのマクロ イベントプロシージャについて

    エクセルのマクロについて教えて下さい 今 book1を開いたら動くマクロを組んでいます 「Private Sub Workbook_Open()」を 使って 内容は この中で別のブック(仮にbook100とします) を開いてその中のデータ (すでに選択してあります) をコピーして book1に貼り付けて book100を閉じる。 という作業なのですが book100を選択しようとするとエラーが起きてしまいます。 Private Sub Workbook_Open() の中では違うブックに対して 作業ができないようになっているのでしょうか? よかったら御教授ください