質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

3回答

824閲覧

Excel VBA 複数シートにペーストされてしまいます

退会済みユーザー

退会済みユーザー

総合スコア0

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2019/08/12 00:52

前提・実現したいこと

集計データをフォーマットに転記する簡単な処理です。

フォーマットは複数シートの構成で転記先は1番目のシートになります。

が、なぜか転記すると2番目のシートも同時選択されて転記されてしまいます。

ソースを一行ごと確かめましたが
転記する直前までシートは1番目しか選択されていません。
転記のプロセスを行うと2番目のシートも同時選択されてしまいます。

今までこのような状況に遭遇したことがなく
なぜなのか全くわかりません。
アドバイスいただければ幸いです。

発生している問題・エラーメッセージ

1枚のシートに転記しようとすると複数シートにコピーされてしまう。

エラーメッセージ

excel VBA

wbRawData.Worksheets("xxxxxxxx").Range("A1:D19").Copy
wbReport.Worksheets("yyyyyyyy").Activate 'ここまでは確実に1シート選択
Range("E3").PasteSpecial Paste:=xlPasteValues 'これを行うと2枚目も同時選択されている。

With wbReport.Worksheets("yyyyyyyy") .Activate .Range("E3").PasteSpecial Paste:=xlPasteValues .その他書式編集 end with 最初はこのように記述していましたが上の現象が起きたのでActivateのみ外に出してみたりもしました。(変わらないとは思いつつ) ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2019/08/12 05:55

「'これを行うと2枚目も同時選択されている。」の部分で選択されているのはどのブックのどのシートのことですか?
退会済みユーザー

退会済みユーザー

2019/08/12 06:07 編集

言葉足らずですみません。 wbReport.Worksheets("yyyyyyyy")がコピー先のシートで、同時に選択されてしまうのは このwbReportの"yyyyyyyy"の右隣のシートです。 1行前のActivateで処理を止めて確認しましたが そこまでは確実に"yyyyyyyy"のシートしか選択されていないのに ペーストを実行して確認すると2シートがグループ化されているのです。 どうしてなのか全くわからないです。
guest

回答3

0

ベストアンサー

自分の環境と提示のコピーペーストのみでは再現しませんでした。

とりあえずコードの改善点を挙げておきます。

VBA

1wbRawData.Worksheets("xxxxxxxx").Range("A1:D19").Copy 2wbReport.Worksheets("yyyyyyyy").Select 'Activateから変更 3Range("E3").PasteSpecial Paste:=xlPasteValues

Activateは厳密に言うとシート(セル)の選択とちょっと違って、複数選択状態にあるときはカーソルを変更するような操作です。
セルでいえば範囲選択状態で白抜きのセルがそれですし、シートでいえばちょっと見づらいのですがシート名がハイライトされている状態です。
なのでこれをSelectにしてやると、とりあえずは複数選択状態が解除され1つのシート(セル)が選択されます。


再現しない点がちょっと気になりますね…例えば別のマクロが動いていたりしませんか?
デバッグでステップ実行されてるので無いとは思いますが念のため確認してみてください。

投稿2019/08/15 07:10

S_kawa

総合スコア156

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/08/15 14:02

アドバイスありがとうございます。なるほどもしかすると「Activate」に問題があるのかもしれません。今ちょっと検証できる環境にいないのですが少し勉強してみます。ちなみに別のマクロが動いている等はなかったです。コピーの方法やブックの構造に何か問題があるのかと謎でしたが勉強不足の部分があるのだなと気づくことができました。ありがとうございました。
guest

0

試してみましたが、コードには問題なさそうです。(Windows8、Excel2013)

考えられるのは、コピー先のエクセルブックが複数シートを選択された状態で保存されていた、でしょうか。

投稿2019/08/12 06:27

meg_

総合スコア10602

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/08/12 06:49

検証いただきありがとうございます。コピー先のブックは定型フォーマットをコピーして新規作成しています。定型フォーマットのブックは何度も確認しましたが複数シートを選択されていはいません。実際コピーを実行する1行前まで複数シートの選択などされていないので…。本当に謎です。
guest

0

以下のように1行にまとめると良いのではないでしょうか。

VBA

1wbRawData.Worksheets("xxxxxxxx").Range("A1:D19").Copy _ 2 Destination:=wbReport.Worksheets("yyyyyyyy").Range("E3")

投稿2019/08/12 01:21

TanakaHiroaki

総合スコア1063

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/08/12 04:06

ありがとうございます。 アドバイスいただいたコードで望ましい結果を得ることができました。 しかしながらなぜ勝手にシートがグループ化されてしまうのかは全くわかりません。 後学のためにぜひとも謎を究明したいところです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問