Excel VBAのThisWorkBookでOpenイベントが不通

このQ&Aのポイント
  • my.xlsmというExcelのファイルには、sheet1~sheet10まであります。sheet1にはボタンが1つ配置されており、ボタンの名前は「CommandButton1」となっています。Excelを開いた時または閉じる時に、CommandButton1のForeColorを変更したいと思っていますが、ThisWorkBookのOpenやBeforeCloseイベントで以下のコードを実行した際にオブジェクトが見つからないエラーが発生します: CommandButton1.ForeColor = RGB(0, 0, 0)。解決策を教えてください。
  • Excelファイル「my.xlsm」には、sheet1〜sheet10までのシートがあります。sheet1には名前が「CommandButton1」というボタンが配置されています。Excelを開いた時や閉じる時に、CommandButton1の文字色を黒に変更したいです。しかし、VBAのThisWorkBookのOpenイベントやBeforeCloseイベントで、以下のコードを実行すると「オブジェクトが見つかりません」というエラーが発生します:CommandButton1.ForeColor = RGB(0, 0, 0)。このエラーを解決するにはどうすればよいでしょうか?
  • Excel VBAで、ファイル「my.xlsm」のsheet1に配置されている「CommandButton1」というボタンのForeColorを、Excelを開いた時や閉じる時に変更したいです。そこで、VBAのThisWorkBookのOpenイベントやBeforeCloseイベントを利用しようとしましたが、以下のコードを実行すると「オブジェクトが見つかりません」というエラーメッセージが表示されます:CommandButton1.ForeColor = RGB(0, 0, 0)。このエラーが発生しないようにするにはどうすればよいでしょうか?
回答を見る
  • ベストアンサー

ThisWorkBookでOpenイベントが不通

こんにちは。Excel VBAの質問です。 my.xlsmというExcelのファイルがあります。このファイルには、sheet1~sheet10まであります。 sheet1にはボタンが1つ配置されています。ボタンの名前は「CommandButton1」です。 Excelを開いた時、または閉じる時に、CommandButton1のForeColorを変更したいと思っています。 そこで、VBEから「ThisWorkBook」の「Open」または「BeforeClose」イベントを利用しようと思いました。 そこでOPENイベント、BeforeCloseイベントの時に、 CommandButton1.ForeColor = RGB(0, 0, 0) とおこなったら、オブジェクトが見つかりませんと表示されました。 これを解決するには、どのように変更をすればよいでしょうか?

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

worksheets("Sheet1").CommandButton1.ForeColor = RGB(0, 0, 0) などのように。

fflashing
質問者

お礼

worksheetsを指定しないといけなかったんですね。勉強になりました、無事にできました。ありがとうございます。

関連するQ&A

  • ThisWorkbookのオブジェクトが消えた

    エクセルVBAで VBAproject(book1) Excel objects sheet1 sheet2 sheet3 ThisWorkbook と こうなるのが 標準だと思うのですが、ThisWorkbook が 消えました。 困るのが、ThisWorkbook-OPEN で 初期値などセットするのですが、各シートには OPEN は ありませんし。 ThisWorkbook を 追加というか、復活というか 何かうまい方法は無いでしょうか。 また、新規から というのも・・・いささか。 シートを うまく取り込む方法ってあれば 、それはそれで、ありかなとも 思うのですが。

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

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

  • 今発生しているイベントのコントロール名を取得

    エクセルです 例えば、シートにコマンドボタンを一つ設置して、クリックイベントで Private Sub CommandButton1_Click() MsgBox "CommandButton1が押されました" End Sub こうしたら、コマンドボタン1を押した時に、 "CommandButton1が押されました"が表示されますが、 CommandButton1の部分を変数みたいなのにすることはできますか? MsgBox Me.Name & "が押されました" だとシート名が取得されるし MsgBox Me.Control.Name & "が押されました" や MsgBox Me.ActionControl.Name & "が押されました" だとエラーになります。

  • ExcelVBAで質問です。Workbook_openイベントが発生し

    ExcelVBAで質問です。Workbook_openイベントが発生しない。 Excel2003を開いている状態で「ファイル」→「開く」でファイルを開くと Workbook_openイベントが発生しません。他のマクロは正常に動くのですが、 Excelを閉じている状態でファイルを開くとWorkbook_openイベントが発生します。 (Workbook_Activateイベントでも同様の結果になりました。) なぜでしょうか?基本的なことかもしれないですが教えていただけると幸いです。 宜しくお願いします。

  • VBA ファイルオープン

    EXCEL2007使用。 いつもお世話になっております。 素人ですが、宜しくお願いいたします。 Sheet上にファイルパスがあり、 それを変数にマクロでBOOKをオープンしたいのですが、、 下記のマクロでは実行時エラー'1004 「D:\TestBook\test.xlsmが見つかりません。ファイル名およびファイルの保存場所が正しいかどうか確認してください」 と表示されます。 Sheet2に下記   A  B      C   1         ファイルパス 2        -------------------- 3        D:\TestBook\test.xlsm 4        D:\TestBook\test2.xlsm 5        D:\TestBook\test3.xlsm ----------------------------------------------- Private Sub CommandButton8_Click() Dim MDate As String Dim i As Integer, Cnt As Integer '項目件数をカウント Cnt = Worksheets("sheet2").Cells(500, "C").End(xlUp).Row - 2 For i = 1 To Cnt DtName = Worksheets("sheet2").Cells(i + 2, "C") MDate = DtName Workbooks.Open Filename:=MDate AWBN = ActiveWorkbook.Name Application.DisplayAlerts = False 'メッセージを非表示にする Workbooks(AWBN).Close Application.DisplayAlerts = True Next i End Sub ------------------------------------------------------------------------- マクロ記録からコピーしたファイルパスなら正常に開けるのにですが・・・    マクロ記録のパス D:\TestBook\test.xlsm ○ sheet2のセルCにある D:\TestBook\test.xlsm × パス名に間違いはないと思います。また保存場所も間違いありません。 何かアドバイスいただける方、宜しくお願いいたします。

  • VBA-Workbook_Open()イベントで

    再度、お世話になります。 手順1.book1よりボタンをクリックしてbook2を開く 手順2.あるフォルダの.xlsファイル名をボタン名に貼り付ける 手順3.book2の戻るボタンでbook2を閉じ、book1を開く 手順4.手順1を実行する という流れを行ったところ1回目のbook2の表示の際にはうまくファイル名を表示できるのですが、戻った後の2回目のbook2の表示ではファイル名が1回目のときのままになってしまいます。 一部 [book2での処理] ***Module1*** Public strPath as String ***ThisWorkbook*** Public Sub Workbook_Open() strPath = "C:\" & Worksheets("Sheet1").Range("A1") myName = Dir(strPath & "\*.xls", vbDirectory) If myName <> "" Then FCnt = FCnt + 1 Worksheets("Sheet1").OLEObjects("btn" & FCnt).Object.Caption = myName Do ・・・(略) Loop End If End Sub ***Sheet1*** Private Sub btnBack_Click() Workbooks.Open Filename:="C:\book1.xls" Workbooks("book2.xls").Close saveChanges:=False End Sub のようにしています。 お手数をおかけしますが、どなたかご教授お願いいたします。

  • エクセル/BeforeCloseイベントで保存できない!?

    エクセル2000です。 以下の_BeforeCloseイベントのマクロ(非常に簡略化してますが)ですが、標準モジュールに設定した Sub 終了() ActiveWorkbook.Close End Sub から終了させた場合、ActiveWorkbook.Saveの部分だけが働かないようです。 エクセル画面右上の×で終了させた場合は保存されます。 どうしてでしょうか? Private Sub Workbook_BeforeClose(Cancel As Boolean) With Sheet1 If .Range("A1") <> .Range("B1") Then ret = MsgBox("変更を保存しますか?" _ + Chr(&HD) + Chr(&HA) + "" _ + Chr(&HD) + Chr(&HA) + "新:" & .Range("A1") _ + Chr(&HD) + Chr(&HA) + "旧:" & .Range("B1"), vbYesNo + vbQuestion, " 確認") If ret = vbYes Then ActiveWorkbook.Save '←なぜ保存されないの?! MsgBox "保存しました" ThisWorkbook.Saved = True ActiveWorkbook.Close (False) End If Else ThisWorkbook.Saved = True ActiveWorkbook.Close (False) End If End With End Sub

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

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

  • 【Excel】データベースクエリ 開いたらデータの更新後にWorkbook_Openイベントを実行させたい。

    エクセル2003です。 シートに 「外部データの取り込み」→「新しいデータベースクエリ」でアクセスのテーブルを表示させています。 データ範囲プロパティで「ファイルを開く時にデータを更新する」にチェックをいれています。 なおかつ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

専門家に質問してみよう