• ベストアンサー

シート選択時のみに実行されるようにしたい。

Excel2003です。 Sheet2_Activateに  MsgBox "a" とすると、Sheet2を選択するたびにメッセージボックスを表示できますが、Sheet1選択状態で別の関数からSheet2上にPasteすると、Sheet2_Activateが発生し、メッセージボックスが表示されてしまいます。(表示されているのはSheet1のまま) Activateは「有効になったとき」なので仕方ないのかもしれないですが、Sheet2が“選択(表示)されたときのみ”メッセージボックスを出すにはどうしたらよいのでしょうか? よろしくお願いします。

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

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

こんにちは。 Pasteを使わないで、Copyメソッドの引数に転送先を指定すれば、 Sheet2のActivateは発生しませんよ。 ------------------------------ Worksheets("Sheet1").Range("A2").Copy Worksheets("Sheet2").Range("A3") ---

panda--
質問者

お礼

返信ありがとうございます。 希望通りの動作ができました。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • 0shiete
  • ベストアンサー率30% (148/492)
回答No.1

>Sheet1選択状態で別の関数からSheet2上にPasteすると のところがわかりません。VBAでコーディングされているのですか? 状況の補足をお願い致します。

panda--
質問者

補足

返信ありがとうございます。 たとえば、Sheet1上のコマンドボタンcmdTestをクリックすると呼ばれるcmdTest_Clickに、 With Sheets("Sheet2")  msgbox "b"  .Range("A2").Copy  msgbox "c"  .Paste (.Range("A3"))  msgbox "d" End With と書いて押すと、Sheet2_Activateが呼ばれます。 親記事の部分と合わせると、表示されるメッセージボックスの順はb c a dになります。 ペースト時にActivateが発生しているのだと思いますが、cmdTestをクリックしたときにはこのaを表示されないようにしたいと思っています。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 開いているシートをチェックする

    いつもこちらでお世話になってます。 VBAで、ひとつのブックの開いているシートをチェックする方法を教えてください。 "sheet1" "sheet2"  "sheet3" と同じブックにあるとし、 "sheet1"を開いてマクロを実行したら、 「シート1です」とメッセージボックスを出し、"F4"を選択。 "sheet2"を開いてマクロを実行したら、 「シート2です」とメッセージボックスを出し、"G4"を選択。 "sheet3"を開いてマクロを実行したら、 何もしない。 というようなコードをどうすればいいいのでしょうか? 自分なりに試してみたのは、以下のようなものです。 ' Macro () If Sheets("sheet1").Activate Then MsgBox "シート1です"   Sheets("sheet1").range("f4").select End If If Sheets("sheet2").Activate Then MsgBox "シート2です" Sheets("sheet2").range("g4").select End If End Sub これだと、どのシートを開いていても、 "sheet1"が開いて、"シート1です" のメッセージが出て、OKを押すと、"F4"を選択し、そのまま "sheet2"が開いて、"シート2です" のメッセージが出て、OKを押すと、"G4"を選択してし、 "sheet2"が開いた状態になってしまいます。 今現在は、2つのマクロが別々にあります。 マクロのオプションでCtrl+半角キーを同じにしたい、と考えています。 マクロのオプションで同じ半角キーをすることはできるようなのですが、 そうすると、Private Sub Worksheet_Activateで "sheet1"が開いたときは"E4"を選択するようにしているので、デバックが出てしまいます。 どのようにすればいいのでしょうか?

  • 選択行番号を取得して別シート貼り付ける方法

    VBAを使いsheet1の選択した行番号をsheet2のA1列に全て貼り付ける方法が分からなくて困っています。  ちなみに下記のVBAはsheet1上で実行するとメッセージボックスに選択行の数値が順番に表示されます。この選択行番号情報を全てsheet2のA1列に貼り付けたいのですが、どうすれば良いでしょうか?   選択行は最大400位になります。特にメッセージボックスに表示する必要はありませんので、メッセージボックス表示は不要です。 Sub 行番号取得() Dim r As Range For Each r In Selection.Rows MsgBox r.Row Next End Sub

  • 「複数の選択範囲に対して実行できません」エラー

    Excel2007でVBAのプログラムを作成していますが、以下の処理を行うと、いずれも 「そのコマンドは複数の選択範囲に対して実行できません」エラーになります。 エラーになるのは、VBAマクロがあるファイルAだけなので、これに問題があるのだろうと思いますが、特に特殊なことをしているわけではなく、フォームやボタンを作成し、その処理プログラムが書かれているだけのものです。 シートは常に1シートのみを表示し、アクティブでないシートは非表示になるようにしていますが、 全てを表示しても同様のエラーになります。 シートは保護してあっても、解除されていても同様のエラーになります。 Excelファイルによってこのような事象が起きることはあるのでしょうか? <エラーになる処理> (1)ファイルA.xlsmのシート上で1セルをコピーし、別ファイルのシートに張り付けるとき。 (2)上記をプログラムから行う。 With Workbooks(pMyAplName).Sheets("AAA") .Activate .Range(.Cells(1, 1), .Cells(100, 20)).Copy Workbooks(pNewFileName).Sheets(strStName).Activate Workbooks(pNewFileName).Sheets(strStName).Cells(1, 1).Select ActiveSheet.Paste End With (3)ファイルA.xlsmに新規シートを追加する(手動だと新規シートをクリック)とき。 (4)上記をプログラムから行う。 With Workbooks(pMyAplName) .Worksheets.Add After:=Sheets(Sheets.Count) .ActiveSheet.Name = "WKAAA" End With 但し、(1)はExcelアプリケーションをもう1つ起動させ、そこで開いたファイルにならコピペできます。 (ファイルAと同じExcelアプリケーション上で開かれたファイルだとエラーになる)

  • 任意のシートを選択して対象をコピー

    例えばsheet1のA1:B10のセルの内容を、任意に選択したシートの、任意の箇所に貼り付けるにはどの様にしたらいいのでしょうか? 考えとしては、マクロを起動させて対象範囲を選択した後、シートの選択を行い「このシートでいいですか」といったメッセージボックスを出したいです。OKなら今度は貼り付け選択のメッセージボックスを出しOKなら貼り付け。シート選択でキャンセルと選択すると別のシートの選択が出来るようにしたいのです。 ユーザーの入力指示をどの様にすればいいのか全く判らず困っています。宜しくお願いします。

  • リストボックスに表示後、選択したシートを削除する

    初歩的な質問で恐縮ですが、ご教示ください。 リストボックスにすべてのシート名を表示させ、選択したシートのみ削除するマクロを作成したいのですが、エラーメッセージ「オブジェクトが必要」と表示されエラーとなります。どのように変更したらよいのでしょうか?  Private Sub CommandButton1_Click() 'Selectedプロパティを使って、選択されているかどうかを判断して、選択されていたらメッセージボックスにその内容を表示します。 'このメッセージボックスを表示される全シートのうち、選択したシートのみ、削除処理する。 Dim i As Integer With ListBox1 For i = 0 To .ListCount - 1 If .Selected(i) Then MsgBox .List(i) End If Next i End With ' 選択シート削除 '「はい」「いいえ」のアイコンを表示する Btn = MsgBox("選択されたシートが全て消去されます。元にもどりません いいですか?", vbYesNo + vbQuestion, "確認") '「いいえ」の場合は終了します。 If Btn = vbNo Then Exit Sub End If 'リストのうち、選択したシートだけ削除する 'オブジェクトが必要? Workbook.Sheet.[(List(i))].Delete End Sub

  • シートの選択について

    エクセルのVBAにて、シートの選択について質問です。 直前まで【テスト1】と言うシートで作業をしていて、その後 Worksheets("テスト2").Activate Worksheets("テスト2").Select Range("A1").Value = 123 テスト2のA1に123と言う文字を表示させるとします。 プログラムを走らせてみたのですが、123と言う数字はテスト1のシートに記述されてしまいました。 ホントに初歩的な質問で申し訳ありませんが、テスト2に表示される方法を教えて頂けたらと思います。 それでは、よろしくお願い致します。

  • 初歩的な質問です!sheetの選択

    よろしくお願いします! エクセル2003,Sheet1を右クリック>コードを表示を選択して、下のように記述したところ、予想と違う動作をしました。 sheet1,2のそれぞれのA1セルに各々のsheet名を入力したかったのですが、失敗した原因はどうしてでしょうか。activateをselectにしても変わりませんでした。 初歩的なことだと思いますが、どうぞよろしくお願いします! Sub macro() Worksheets("sheet1").Activate Cells(1, 1) = "sheet1です。" Worksheets("sheet2").Activate Cells(1, 1) = "sheet2です。" End Sub

  • シートが表示された時にメッセージを表示したい

    win7・Excel2007でマクロ作成中の初心者です。 1)今ブック2個があります。 2)ひとつは、ブックAでマクロ書き込み用です。 3)もひとつは、ブックBで、データ作業用です。 4)やりたい事は、ブックAのユーザーフォームのコマンドボタンクリックで  ブックBのシートCを表示させ、メッセージボックスを即座に表示させたいです。 5)そこで、ブックAにコードを書込みました。 Private Sub CommandButton89_Click() Unload Me 表を開く End Sub ----------------------------------------- Sub 表を開く() ChDrive ThisWorkbook.Path ChDir ThisWorkbook.Path On Error GoTo err: Workbooks("H25年11月の表.xls").Activate Exit Sub err: Workbooks.Open Filename:=ThisWorkbook.Path & "\綴り\H25年11月の表.xls" Sheets("確定").Select MsgBox "これを更新してください。" End Sub ところが、シートCを表示させてから、メッセージボックスを表示させたいのに Private Sub CommandButton89_Click() Unload Me こんなところで(この段階で)、メッセージボックスが出てきてしまいます。 表を開く ここで出したいです。 End Sub シートを開いてからメッセジボックスを開くにはどうしたらよいでしょうか?よろしくお願いします。

  • リスト選択したものをワークシートに自動表示させるには?

    エクセル2007を使用しています。 コンボボックス?のリストから選択したものを、別のワークシート内の コンボボックスに自動的に表示させるにはどうすればよいのでしょうか? つまり、ワークシート1のリスト(A,B,C)から「A」を選択すると、 ワークシート3のリスト(A,B,C)も自動的に「A」が表示されるように したいのです。 用語が間違っているかもしれませんが、よろしくお願いします。

  • VBAでセル選択時に別シートのマスター一覧を表示させたい

    同じブックに ・データ入力シート ・品番マスター[1|A-100] ・部門マスター[1|関東] があるとします。 データシートの品番マスターのセルがアクティブになった時に メッセージボックスでも何でもいいのですが 品番マスターの一覧が画面上に表示されるようにしたいのです。 あわよくば、1と入力したらセルに1と入って メッセージボックスが自動で消えるようになればありがたいです。 このようなことがEXCELで可能かと できれば、VBA構文を教えていただければと思います 宜しくお願い致します

倉庫の床の滑り止め対策
このQ&Aのポイント
  • 倉庫の床の滑り止め対策について悩んでいます。滑り止めの塗装は効果があるのか、またタイヤの摩耗に影響はあるのか気になります。最適な滑り止めの塗装方法や他の対策について教えてください。
  • 倉庫の床の滑り止め対策について調べています。滑り止めの塗装は膜なので剥がれやすいのか、タイヤの摩耗に影響はあるのでしょうか。どのような滑り止めの塗装が最適か、他の対策方法について教えてください。
  • 倉庫の床の滑り止め対策についてアドバイスをお願いします。滑り止めの塗装は効果があり、安全にフォークリフトを運用するために必要ですが、剥がれやすいのか心配です。タイヤの摩耗にも影響があるのでしょうか。最適な滑り止めの塗装方法や他の対策について教えてください。
回答を見る

専門家に質問してみよう