【質問】
以下のコードは、転記元ブックから転記先ブックへセルの値をコピー・貼付します
最初、Workbooks("転記元.xlsm").Activate の記述をしなかった場合エラーとなりました
追加後は動きました
ここで質問ですが
以下の記述の前にも Workbooks("転記先.xlsm").Activate を入れなくても
動くのでしょうか?(なぜ動くのでしょうか)
Workbooks("転記先.xlsm").Worksheets("Sheet1").Cells(1, 1).PasteSpecial xlPasteValues
という質問です
自分のイメージは以下のイメージなためです
●転記元ブック アクティブ
⇒転記元ブックのデータをコピー
●転記先ブック アクティブ・・・・・この記述がないと、マクロが転記先へ移動しないと思います
が実際は、移動して、貼付の実行をしてくれます
⇒転記先へデータを貼付
ご存じの方、ご指導お願いします
【コード動きます】
Sub 転記()
Dim lastrow As Long
lastrow = Workbooks("転記元.xlsm").Worksheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row
Workbooks("転記元.xlsm").Activate
Workbooks("転記元.xlsm").Worksheets("Sheet1").Range(Cells(1, 1), Cells(lastrow, 3)).Copy
Workbooks("転記先.xlsm").Worksheets("Sheet1").Cells(1, 1).PasteSpecial xlPasteValues
End Sub
No.2ベストアンサー
- 回答日時:
こんばんは
エクセルの気持ち(?)になって考えてみましょう。
「A1セルの値を読んで」と言われても、シートが沢山あるとどのシートのA1セルのことなのかわかりません。
この場合は、エクセルはアクティブなシートのA1セルを読みに行きます。
同様に、複数のブックが開いているときに、
「シート1のA1セルを読んで」と言われても、どのブックかわからないので、アクティブなブックのシート1を読みに行きます。
一方で、
「ブックAのシート1のA1セルを読んで」と言われれば、曖昧なところはなくなるので、アクティブなブックやシートが何であっても、正しく「ブックAのシート1のA1セル」を読みに行きます。
それだけの話です。
No.3
- 回答日時:
>>Rangeの中でCellsを使う場合は、前もって.Activate記述が要ります。
vbaの仕様です。
Rangeの中でと言う事じゃ無いです。
この場合、たまたまそうなってるだけです。
RangeはWorkbooksとWorksheetsを明示して使ってるけど、Cellsは何も明示しないでイキナリCellsを使ってるからです。
No.1
- 回答日時:
Workbooks("転記元.xlsm").Worksheets("Sheet1").Range(Cells(1, 1), Cells(lastrow, 3)).Copy
この記述が問題なのです。
Rangeの中のCellsは、ブック・シートを省略するとアクティブブック・シートの事になります。
転送先のSheet1がアクティブになっていたり、転記元の別シートがアクティブになってたとしたら、変な事になります。
なので、Rangeの中でCellsを使う場合は、前もって.Activate記述が要ります。
vbaの仕様です。
Activate記述をしたく無いなら、以下の様にCellsにブック・シートを指定したフル記述します
Workbooks("転記元.xlsm").Worksheets("Sheet1").Range(Workbooks("転記元.xlsm").Worksheets("Sheet1").Cells(1, 1), Workbooks("転記元.xlsm").Worksheets("Sheet1").Cells(lastrow, 3)).Copy
以下、勉強になりました。ご指摘ありがとうございます。
Rangeの中でCellsを使う場合は、前もって.Activate記述が要ります。
vbaの仕様です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
Excel 1の位の数字で処理を分岐させたい
Excel(エクセル)
-
エクセル IF計算式?でしょうか?
Excel(エクセル)
-
【マクロ】顧客番号にて一致させ、情報を表へ上書きする為には
Excel(エクセル)
-
-
4
2列に入っているデータを1列で表示する関数について
Excel(エクセル)
-
5
再質問です。マクロの修正箇所を教えてください。
Excel(エクセル)
-
6
Excelを無料で使うには? パソコン購入して、マイクロソフトに登録して そのままExcelがデスク
Excel(エクセル)
-
7
データチェックを行うエクセルマクロをおしえてほしい
Excel(エクセル)
-
8
とびとびの大量セルを選択したいのですが・・・
Excel(エクセル)
-
9
【マクロ】Ifとwith ステートメントにて分からない部分があります
Excel(エクセル)
-
10
Excelの数式の効率化について
Excel(エクセル)
-
11
エクセルマクロを教えてほしい(月別のシートを一つにまとめたい)
Excel(エクセル)
-
12
エクセルを使用して、円周率を表示させる方法
Excel(エクセル)
-
13
重複しない値を取り出したい
Excel(エクセル)
-
14
【マクロ】for nest について 別のブックを動かす際のコード
Excel(エクセル)
-
15
エクセル②
Excel(エクセル)
-
16
VBAについての質問です
Excel(エクセル)
-
17
【マクロ】2回実行したら、エラーにならずに、既に実行済みメッセージを出したい
Excel(エクセル)
-
18
エクセルのクイックアクセスツールバーには何を登録したら良いですか?罫線を引く「格子・枠なし・外枠」と
Excel(エクセル)
-
19
エクセルで 自動的に◯や数字を表示させることできます? 例えばなんですが 日付 山田 1 ◯ みたい
Excel(エクセル)
-
20
ある表にフィルターをかけて出てきた記号の個数を知りたいのですが、簡単な関数はないでしょうか?
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【お題】絵本のタイトル
- ・【大喜利】世界最古のコンビニについて知ってる事を教えてください【投稿~10/10(木)】
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA シートをコピーする際に Co...
-
ワイルドカード「*」を使うとう...
-
ADOで複数のBookから抽出
-
VBS Bookを閉じるコード
-
エクセルVBAが途中で止まります
-
別ブックをダイアログボックス...
-
VBAで別ブックのシートを指定し...
-
【ExcelVBA】インデックスが有...
-
VBAで別のブックにシートをコピ...
-
日付ごとの集計マクロ
-
VBA 別ブックからコピペしたい...
-
【ExcelVBA】zip圧縮されたCSV...
-
VBA コードを実行すると画面が...
-
ユーザーフォームの切り替えに...
-
【Excel VBA】書き込み先ブック...
-
vbaでvbaProjectのパスワード解...
-
VBA 実行時エラー 2147024893
-
VBAで複数のブックを開かずに処...
-
エクセルVBAでテキストボックス...
-
VBAの実行時エラー'9'について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA シートをコピーする際に Co...
-
エクセルVBAが途中で止まります
-
ワイルドカード「*」を使うとう...
-
別ブックをダイアログボックス...
-
VBA 別ブックからコピペしたい...
-
【ExcelVBA】インデックスが有...
-
VBA コードを実行すると画面が...
-
VBAで別ブックのシートを指定し...
-
【ExcelVBA】zip圧縮されたCSV...
-
VBA シート名が一致した場合の...
-
VBA 実行時エラー 2147024893
-
VBAで別のブックにシートをコピ...
-
VBS Bookを閉じるコード
-
【マクロ】違うフォルダにある...
-
ユーザーフォームの切り替えに...
-
[Excel]ADODBでNull変換されて...
-
vbaで他のブックに転記したい。...
-
【Excel VBA】書き込み先ブック...
-
Excel2007VBAファイルの表示に...
-
VBAで複数のブックを開かずに処...
おすすめ情報