• ベストアンサー

VBA

VBEの標準モジュール(例Module1)にVBAのプログラムを書き、 実行した時、ワークシート(例Worksheets(”sheet1”)のウインドウを自動的に開くには(前面に持ってくるには)どのようにコーディングすれば良いのでしょうか。今は実行後確認するため、プロジェクトのSheet1で右クリックして「オブジェクトの表示」でSheet1を出したり、タスクバーをクリックしていますが。まずSheet1を前面に出して処理をしたい。Activate,Select、Showなど試しても効果がありません。

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

  • ベストアンサー
  • baka
  • ベストアンサー率83% (15/18)
回答No.5

ブックやシート間での問題ではなく、Excel のウィンドウそのものを VBE のウィンドウの手前に表示したい、ということでしょうか? だとすれば手動で切り替えるはごくあたりまえのように思います。 一応次のような方法が考えられます。違っていたら補足してください。 ・VBE からではなく Excel のウィンドウからマクロを実行する ・VBE のウィンドウを最小化する (もちろん自動で元には戻りません) Application.VBE.MainWindow.WindowState = vbext_ws_Minimize ・SetWindowPos で Excel のウィンドウを最前面にする (ただし最前面になりっぱなし)

imogasi
質問者

お礼

ご解答有難うございました。2番目の方法もコピーし 実行しましたが、VBEの画面のままでした。 今後も勉強して行きます。

その他の回答 (4)

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.4

Moduleはコンパイルしたんですよね?

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.3

Selectで表示できるのでは? Sub ?????()    Sheets("Sheet1").Select End Sub 単純に上記で良いと思いますが。

imogasi
質問者

お礼

早速ご解答有難うございました。以前からご解答のようにもテストしているのですが、Moduleのコードの画面が、実行をクリックしても、ワークシートの画面に切り替わりません。どこか設定を変える必要が有るのでしょうか。今回もテストしましたがワークシートの画面になりません。エクセル2000です。

回答No.2

Sheets("Sheet1").Select 〈Select〉または〈Activate〉でもよいです。 例 シート3のC12のセル選択 Sheets("Sheet3").Activate Range("C12").Activate 〈Select〉または〈Activate〉でもよいです。

imogasi
質問者

お礼

早速ご解答有難うございました。解答のようにテストしましたが、実行をクリックしても、ワークシートの画面に切り替わりません。どこか設定を変える必要が有るのでしょうか。思い当たる節があれば教えてください。

  • baka
  • ベストアンサー率83% (15/18)
回答No.1

Activate メソッドで表示されるはずですが。 ThisWorkbook.Sheets("Sheet1").Activate 対象となるオブジェクトがきちんと指定されていないのでは?

imogasi
質問者

お礼

ご回答有難うございました。お礼が送れて失礼しました。 ただ教えていただいたとおりやって、実行をクリいクしましたが、VBEの画面のままです。今後もこの件につき勉強していきます。有難うございました。

関連するQ&A

  • VBA オブジェクト型使用の利点は?

    例えばワークシートの表現を考えます。 自分は今まで以下のようにしてました。 Dim sheet1 As String sheet1=Worksheets(1).Name Worksheets(sheet1).Activate オブジェクト型宣言を用いて以下のように書き換えられます。 Dim sheet1 As object set sheet1=Worksheets(1) sheet1.Activate ソースコードとしてはスッキリしますが、見た目以外でどのようなメリットがあるのですか?

  • Excel2007VBA ブックのアクティブ化

    ●質問の主旨(2点) 1.以下のコードは、なぜエラーが返されるのでしょうか? 2.タスクバーにあるアクティブ状態ではないブックの1枚目シートを 選択するためには、以下のコードをどのように書き換えれば良いでしょうか? ●質問の補足 タスクバーにはエクセルブック「Book1」と「Book2」を表示させ、 「Book1」の「sheet1」がアクティブになっています。 Book1の標準モジュールに以下のコードを記述しています。 Sub sample1() Workbooks("Book2.xlsx").Activate Worksheets("sheet1").Select End Sub しかし実行すると「実行時エラー9インデックスが有効範囲にありません」と エラーが返されます。なぜそうなるのかが分かりません。 ご存知の方がいらっしゃればご教示よろしくお願い申し上げます。 私はVBA初心者です。

  • シートに入力しようとするとダイアログを表示させたい

    エクセルVBAでマクロを実行させて、他のシートの内容をシート1にコピーするようにしてあります。 標準モジュールのModule1でコードをかきました。 それとは別に、MicrosoftExcelObjectsのSheet1の部分に Sub AutoClicked() Worksheets("Sheet1").Activate msg = "こちらのシートは入力は禁止しています" End Sub を追加して、シート1上(シート2以降は対象外)をクリックするとダイアログが表示される機能 を実現したかったのですが機能しませんでした。どこをどのように直せばよいのでしょうか?

  • Excel VBA オブジェクトの指定方法と速度

    Excel VBAについて質問です。 ワークシートを指定するときの書き方には色々ありますが、1~3の速度の順番はどうなりますか? オブジェクトは、変数に入れて使用したほうが速度が速くなるそうなので、 1より2のほうが速いと思いますが、3はどうでしょうか? 1.Worksheets("sheet1") 2.Dim ws As Worksheet   Set ws = Worksheets("sheet1") 3.Sheet1 (VBE画面で表示されるシートのプロパティのオブジェクト名) Excelのオブジェクトについて詳しいかたがいらっしゃいましたら教えてください。 よろしくお願いいたします。

  • 標準モジュールを削除したい。(VBA)

    VBAで、VBAの標準モジュールを削除したいのですが、なかなか出来ません。たぶん、コレクションについての認識があまいからだと思います。VBComponents コレクションのobject.Remove(component)のヘルプには、VBProjects コレクションには、スタンドアロン プロジェクトを指定します。とありますが、そもそもスタンドアロンプロジェクトって何ですか?Application.VBE.VBProjects(4).VBComponents(1).とするとコレクションでなくなってしまいますが、どうやってモジュールと特定するのでしょうか?どなたか詳しい方いらっしゃいましたらご指導願います。よろしくお願いいたします。 VBIDEのライブラリーです。

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

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

  • エクセルVBA  activesheetの非表示

    エクセル2002使用です。 sheet1のモジュールにsheet2のセルから値を取得するコードを書きました。 セルの値を取得後、sheet1の画面に戻します。 値を取得するために一度sheet2をactivesheetにする必要があると思うのですが、 その際にマクロを実行するとエクセルの画面が一瞬sheet1からsheet2に変わってしまいます。 この、一瞬のsheet2の画面を出さない方法はあるのでしょうか? sub aaa() Dim tukikekka as range Worksheets("sheet2").Activate Set tukikekka = ActiveSheet.Range("A2:A15") _ .Find(what:=ActiveSheet.Range("A1"), lookat:=xlWhole) Worksheets("sheet1").Activate ActiveSheet.Range("H7").Value = tukikekka.Offset(,7) end sub (実際のコードはもう少し長いので、Sheet2がはっきりと見えます) よろしくお願いします。

  • VBAでオブジェクト変数にsetしたシートがactiveかどうかを調べるには?

    標準モジュールの冒頭でワークシート用のオブジェクト変数を確保し、 あるタイミングで、あるシートをそのオブジェクト変数にSetしています。 で、そのシートに値をセットするときに、そのシートがActiveだった場合だけやりたい処理があるのですが、Setしてあるオブジェクト変数だけを見てそのシートがActiveか否かを判断する方法って、あるのでしょうか。 コード例) Private oSheetA as Worksheet Sub SetSheet(sName as String)   Set oSheetA = worksheets(sName) End Sub Sub SetValue(nValue as integer)   xxxxxx ←ここでoSheetAがActiveならやりたいことがある。   oSheetA.Cells(nRow, nCol) = cValue End Sub 具体的には、複数のBookを開いている状態で、Activeシートが何であるかはオペレータの操作次第なので固定化できない状態で、SetValueが呼び出されたとき、oSheetAがActiveだったら、値をセットするセルが見えるようにセルをActivateかスクロールさせたいんです。

  • Excel VBA サブルーチン関連

    複数のマクロが標準モジュールに書かれているとします。(例:Module1~Module10) このモジュールを順番に実行するマクロを作成したいのですが、モジュールの名前を指定してサブルーチンコールは出来ないようです。 全部のモジュールを数珠つなぎにして1つのモジュールにまとめる方法は気が進みません。 モジュールの名前を指定してサブルーチンコールするようなスマートな方法はないでしょうか?

  • VBA初心者です。

    VBA初心者です。 Excel 2010のVBAで、 ワークシートのSheet1のオブジェクトモジュールに 他のシートから別のシートにコピー&ペーストをしたいと思い、 以下のプログラムの記述をすると、 アプリケーション定義またはオブジェクトの定義エラーとなってしまいます。 Worksheets("Sheet2").Range(Cells(1, 7), Cells(d, 8)).Copy Destination:=Worksheets("Sheet3").Cells(3, 1) (「d」は変数です。セルの範囲指定は、実際に記述するときは 範囲が広範になるので、行数列数で把握できるようにCellsを使っています) エラーになる理由と解決法をご教授いただければと思います。