[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『別シートのマクロ実行』(すにゃ)
Dim SetFile As String Dim wbMoto, wbSaki As Workbook
Set wbMoto = ActiveWorkbook
Application.DisplayAlerts = False
SetFile = ThisWorkbook.Path & "\〜条件表マスタ.xlsm"
'Workbooks.Open fileName:=SetFile, ReadOnly:=True, UpdateLinks:=0 Set wbSaki = Workbooks.Open(SetFile)
wbSaki.Worksheets("条件表M").Range("A1:J101").Copy
wbMoto.Worksheets("条件表").Range("A1").PasteSpecial xlPasteFormulasAndNumberFormats
'Application.CutCopyMode = False
wbSaki.Close False
Application.DisplayAlerts = True
+--------------------------------------+
シートAにボタンを作りマクロ指定→実行
マクロが実行されシートBに遷移してしまう
シートAから遷移しないで実行させたい
VBAはもともとそのような仕様になっていないのでしょうか
よろしくお願いします
< 使用 Excel:Office365、使用 OS:Windows10 >
(γ) 2021/05/31(月) 19:26
(もこな2 ) 2021/05/31(月) 19:34
シートA、シートBがどのブックにあるかわかりませんが、ステップ実行してみて想定外の動作になっていないか確認されてみてはいかがですか?
(もこな2 ) 2021/05/31(月) 20:03
Sheet条件表MがあるBookA
Sheet条件表とSheet作業表があるBookB
Sheet条件表はマクロでSheet条件表Mのデータを参照(Z)
Sheet作業表がアクティブの時にZを実行すると参照した後Sheet条件表になってしまう(Sheetが切り替わってしまう)
バックグラウンド処理?の書き方がわからないです
(すにや) 2021/05/31(月) 20:51
(γ) 2021/05/31(月) 21:01
さて、「2021/05/31(月) 20:51」のお話がイマイチ理解できません。
>Sheet条件表はマクロでSheet条件表Mのデータを参照(Z)
Zというのが提示されたマクロだとすれば、
●Sheet条件表とSheet作業表がある【BookB】
Set wbMoto = ActiveWorkbook wbMoto.Worksheets("条件表")
●Sheet条件表Mがある【BookA】
Set wbSaki = Workbooks.Open(SetFile)
wbSaki.Worksheets("条件表M")
という関係性でしょうから、コメントしたように普通であれば「wbSaki.Close」の段階で、Activeだった【BookB】のアクティブシート【Sheet作業表】に戻るようにおもいます。
よって他に説明していないコードがあるのではありませんか?
繰り返しになりますが、ステップ実行してみて想定外の動作になっていないか(例えばイベントなどが動いてないか)確認されてみてはいかがですか?
このほか、ガン無視されちゃいましたが、提示のコードはこの掲示板で何度かお見掛けしています。
参考にされたのであれば、そちらのコメントにもあるように無駄な記述があります。
(コメントアウトされていますけど、そもそもいらない処理です)
また、もしも同じ方であればニックネームをコロコロ変えるのはお勧めしません。
(同じ説明を何度もしてもされてもお互いにつまらないでしょう。)
(もこな2) 2021/06/01(火) 00:07
それなら、対処療法的な発想になりますが、マクロ起動直後のアクティブセルを覚えておき、処理がおわったらそこに戻るというのはどうでしょうか?
Sub 名もなきマクロ() Dim tmp As Range: Set tmp = ActiveCell '★追加 Dim SetFile As String Dim wbMoto As Workbook, wbSaki As Workbook Set wbMoto = ActiveWorkbook
Application.DisplayAlerts = False SetFile = ThisWorkbook.Path & "\〜条件表マスタ.xlsm"
Set wbSaki = Workbooks.Open(SetFile) wbSaki.Worksheets("条件表M").Range("A1:J101").Copy wbMoto.Worksheets("条件表").Range("A1").PasteSpecial Paste:=xlPasteFormulasAndNumberFormats wbSaki.Close False
Application.Goto tmp '★追加
Application.DisplayAlerts = True End Sub
(もこな2) 2021/06/01(火) 12:24
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.