[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『Unionを使用した可視セルのシート間コピー&値貼り付け』(スマトラ)
すみません、先程も同じようなケースで質問をさせていただきましたが、類似ケースでエラーが出て困っております。
処理内容は以下の通りです。
コピー元シート(予)のセル範囲をコピー
コピー先シート(TP)の複数Cell起点に同じものを値貼り付け
※この際に予めUnionで一括りにしています。
・下記実行すると、Union部分でエラー
実行時エラー1004
Rangeメソッドは失敗しました、Worksheetオブジェクト
と出ます。
・参照先はしっかり指定しているつもりなのですが、どこかおかしい箇所があればアドバイスお願いできますでしょうか。
下記コードは、テスト用で、実際にはセル範囲の指定をループさせる予定ですので「Cell」を使用しています。
Sub テスト()
Dim sh1 As Worksheet Dim d As Variant Set sh1 = Worksheets("TP") '転記元 d = Sheets("予").Range("B6575").End(xlUp).Row Worksheets("予").Range(Cells(3, 14), Cells(d, 14)).Copy '性別
With sh1 Union(.Range(.Cells(3, 11)), .Range(.Cells(61, 4))).PasteSpecial (xlPasteValues) 'K3, End With End Sub
< 使用 Excel:Excel2010、使用 OS:Windows7 >
・フィルタで絞り込んだセル範囲(非表示Cellあり)を
・手作業でコピーして
・別シートのCellを「Ctrl+クリック」で選択して貼り付け
をやってみましtが、仕様上できませんでした。
(スマトラ) 2018/05/09(水) 17:29
Union(sh1.Cells(3, 11), sh1.Cells(61, 4)).PasteSpecial (xlPasteValues) (スマトラ) 2018/05/09(水) 18:15
本当ですか?そんなはずないと思いますが。
(マナ) 2018/05/09(水) 18:43
[[20180509001948]] 『マクロ:別のシートで実行するとWorksheetエラーが』(スマトラ)
(マナ) 2018/05/09(水) 18:49
ここも気になります。
(マナ) 2018/05/09(水) 18:51
Dim d As Variant→ネットで調べると→as Longでした
Unionにつては、以下で処理できました。
With sh1
.Range(.Cells(予, 14), .Cells(d, 14)).Copy: Union(sh2.Cells(日, 10 + i), sh2.Cells(入, 3 + i)).PasteSpecial (xlPasteValues)
End With
(スマトラ) 2018/05/10(木) 16:25
次の質問で、結局Unionは使用していないようなので
どうでもよいことかもしれませんが…
こちらでは、手作業でと同じで、エラーになりました。
(オートフィルタで絞り込まれている状態で動作確認しています)
(マナ) 2018/05/10(木) 19:02
・次の質問では省略していますがUnionを使用しております。
手作業で、やってみたところ、エラーがの原因は、オートフィルタで絞り込んだ際に
非表示セル行が入り込むとエラーになるようです。
対策としては、非表示行が発生しないように並び替えて絞り込むことで回避できました。
絞り込んだ際に非表示行となりそうな値を昇順で並び替えた際に、最終行に集め
必要なデータをフィルタで表示させたときに1行目から順序よく並ぶようにして
みると複数範囲のコピペができました。
(スマトラ) 2018/05/10(木) 20:13
でも、Unionにこがわらなくても
2回にわけてペーストのほうがわかりやすくないですか?
Option Explicit
Sub test() Dim 転記元WS As Worksheet Dim 転記先WS As Worksheet
Set 転記元WS = Worksheets("予") Set 転記先WS = Worksheets("TP")
With 転記元WS.Range("A2").CurrentRegion 'ここでオートフィルタで絞り込み .Offset(1).Columns(14).Copy 転記先WS.Range("A3").PasteSpecial xlPasteValues 転記先WS.Range("BI4").PasteSpecial xlPasteValues End With
End Sub
(マナ) 2018/05/10(木) 20:31
私も2回にわけてみたんですが、コピー貼付け処理が多いのと
どうにか1行で書きたかったので、下記のようにこだわってしましました。
それと、次の質問にある、ループ処理する際に、個人的に見やすかったもので・・・
転記先.Value = 転記元.Value みたいな感じで、、、
Unionでまとめ
.Range(.Cells(予, 14), .Cells(d, 14)).Copy: Union(sh2.Cells(日, 10 + i), sh2.Cells(入, 3 + i)).PasteSpecial (xlPasteValues)
「:」でまとめ
転記元.Copy : 転記先.PasteSpecial (xlPasteValues)
と一行化しました。
(スマトラ) 2018/05/10(木) 20:47
そうですか。
わたしには、見にくいですが、人それぞれですね。
最後に、
>(xlPasteValues)
括弧はいりません。
(マナ) 2018/05/10(木) 21:02
ありがとうございます。スッキリします。
(スマトラ) 2018/05/10(木) 21:27
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.