エクセル起動時にイベントが実行されないようにする方法
- エクセルVBEのThisWorkbook内にイベントを記述し、オープン時に実行されないようにする方法についてまとめました。
- イベントコードの行頭に「’」を付けてメモにし、有効無効を切り替える方法や一括で記号を付けたり省いたりする方法についても紹介しました。
- これにより、行数が増えても手間をかけずにイベントの有効無効を切り替えることができます。
- ベストアンサー
エクセル起動時にイベントが実行されないようにする。
エクセルVBEのThisWorkbook内に下記のようなイベントでコードを書いておき、 BOOKオープン時には実行されない単なるメモ的効果のものを書いておきたいと思います。 (これ以外にも複数のコードをたくさん記述しておきたい。) そして実際に使う時だけ有効に切り替えて使いたいと思っています。 コードは正しく書いておかないとオープン時にエラーメッセージがでてしまうので 「’」の記号を行頭につけてメモにしておくのはわかるのですが、行数が増えると全行頭に 記号を付けたり省いたりするのがかなり手間となります。 簡単に有効無効を切り替えて書いておく方法はありますか。 あるいは必要な部分だけ記号を全行頭に一気に付けたりとりはずしたりする方法はありますか。 Private Sub Workbook_Open() Sheets("販売").EnableSelection = xlUnlockedCells Sheets("顧客").EnableSelection = xlUnlockedCells Sheets("商品").EnableSelection = xlUnlockedCells End Sub
- kafun-show
- お礼率85% (95/111)
- Visual Basic
- 回答数4
- ありがとう数9
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
コメント行(') を複数行選択し一括して、コメントをon/off することは可能です。 ツールバーに「編集」メニューを表示させればその中に コメント ブロック 非コメント ブロック というのがあります。これで、 (')を付けたり消したりしてくれます。
その他の回答 (3)
- nda23
- ベストアンサー率54% (777/1415)
C言語のように条件コンパイルというのがあります。 #If AA Private Sub Workbook_Open() プログラム本体 End Sub #End If このように記述し、VBAProjectのプロパティで、 「条件付きコンパイル引数」の所でAA=1とすれば プロシージャはコンパイルされ、AA=0とすれば プロシージャはコンパイルされず、存在しない ものとして扱われます。
お礼
Thisworkbookに次を記述後シート名を”販売”に変更。また「条件付きコンパイル引数」の所でAA=1と入力してみましたがThisworkbook内の#If AAの部分が赤い文字になってうまくいきませんでした。自分には難しすぎたようです。ありがとうございました。 #If AA Private Sub Workbook_Open() Sheets("販売").EnableSelection = xlUnlockedCells End Sub #End If
- 2014itochan
- ベストアンサー率17% (13/74)
私は プログラムに手を入れる時と、実行時は下記の方法です Private Sub Workbook_Open() Msg = MsgBox("実行モードですか?", vbYesNo + vbQuestion, "確認") If Msg = vbYes Then else setTimerFunction "", "", "" endif 完成すれば 用無しですが
お礼
これをコピーしてThisworkbookに貼り付けて実行したみたらsetTimerFunctionでコンパイルエラーと表示されます。自分には実力がないためそれをどうしてよいのか理解できず難しすぎました。ありがとうございました。
- hallo-2007
- ベストアンサー率41% (888/2115)
目的がいまいちわかりませんが 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の前に 'を付けるとかではダメでしょうか。
お礼
早々に、又いろいろな方法のご回答ありがとうございました。自分には役立ちそうなので ゆっくりと全部を試してみたいと思います。
関連する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です。
- 締切済み
- その他MS Office製品
- Workbook_Openを起動時以外に呼び出す
標準モジュールに書いた、Sub Auto_Open()なら、ボタンにAuto_Openを登録するなどで、ブックの起動時以外でも呼び出せますが、ThisWorkbookに書いた、Private Sub Workbook_Open()は、ボタンにWorkbook_Openを登録しても作動しません。 どのようにすればよいのでしょうか?
- ベストアンサー
- Excel(エクセル)
- 他のブックが開くと同時にユーザーフォームを表したい
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
- ベストアンサー
- Visual Basic
- 実行時エラー 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.~ の行で発生します。 何が間違ってますか?
- ベストアンサー
- Visual Basic
- 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 ↑こんな感じであれやこれや試してはいますが・・・ 記述方法をご教授ください。よろしくお願いします。
- ベストアンサー
- Visual Basic
- エクセル起動時のプロジェクトエクスプローラの「ThisWorkbook」の記述について教えてください。
現在Sheet1のG5をカレントセルするように次のように記述してあります。 Private Sub Workbook_Open() Sheets("Sheet1").Range("G5").Select End Sub これをG5ではなく今日の日付(たとえば2009/11/22)のあるセルをカレントセルにしたいと思います。よろしくお願いします。
- ベストアンサー
- その他MS Office製品
- 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() の中では違うブックに対して 作業ができないようになっているのでしょうか? よかったら御教授ください
- ベストアンサー
- オフィス系ソフト
お礼
自分にはこの方法が一番わかりやすかったです。ありがとうございました。