あるExcelシートから別のExcelシートにデータをコピーしようとしていますが、貼り付け先は変数である必要があります。
基本的に、私がやりたいことは、2 つの Excel シートを開くことです。最初のシートには、次のように座標を保存する文字列があります。
sCurrentAddress = Selection.Address(True, True, xlA1, True)
シート 2 に既に取り込まれているデータに基づいて、アルゴリズムが目的の貼り付け場所を適切に見つけ、これらの座標を次のように保存します。
sDestinationAddress = Selection.Address(True, True, xlA1, True)
次に、次のように、最初のシートの情報を 2 番目のシートに貼り付けます。
Selection.Copy (sDestinationAddress)
しかし、エラー 1004: ランタイム エラー: 範囲クラスの選択メソッドが失敗しました。
今、私が取り組んでいる最初の値はたまたま A4 でした。マウスを「sDestinationAddress」の上に置くと、sDestinationAddress に保存されている値が
'[exampleFile.xlsx]Sheet 1'!$A$4
次のように実際の値をプラグインしない限り、マクロは失敗します。
'Selection.Copy (Worksheets(1).Range("A4"))
sDestinationAddress を Selection.Copy の引数として使用するにはどうすればよいですか?
(長文でまだ言葉足らずで申し訳ありません。昨日は文字通り初めて Visual Basic を調べたときでした。)
アルゴリズムについて: 下の 6 行の情報にラベルを付けるために、144 の異なるヘッダーがあります。たとえば、Inventory_S1_1 という見出しの列から新しいスプレッドシートにデータを移動しています。この 1 つのシートの 'S1_1' は、もう 1 つのシートを意味します: S=Diamond、1 = Black、_1 = Player 1. したがって、アルゴリズムは、まだ処理されていないヘッダーを見つけます (ここでは、Inventory_S1_1 が最初のヘッダーであるとします)。 t を処理)、ヘッダーの下の列をコピーし、新しいスプレッドシートでプレーヤー 1 のブラック ダイヤモンドに対応する場所を見つけて、貼り付けます。テンプレートは手作業で作成されているため、貼り付けアルゴリズムは問題なく機能しますが、検索アルゴリズムは、ごちゃごちゃしたデータを検索するため、ヘッダーを探すのに迷います。
問題は、生データを含むシートに戻ることです。setを
呼び出す場所にマウスを合わせると、2 番目のヘッダーに移動してから、貼り付けた後、
これがまさに問題のある行であることがわかります。sCurrentAddress = Selection
sCurrentAddress= Inventory_S1_2
sDestinationAddress = 0
Set rCurrentRange = .Find(What:=sCurrentAddress, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext)
私が従う
Application.Goto rCurrentRange, True
ActiveCell.Select
Selection.Offset(-1, 1).Select
Set sCurrentAddress = Selection
次のヘッダーを探しているのはこの行です。正確な座標を使用しようとしていたとき、この .Find は機能しているように見えましたが、コピーされたマテリアルの最初の値である 0 (sDestinationAddress) の最初のインスタンスを .Finds します。常に 0 をコピーしてから最初の 0 を探しているため、次のヘッダーを見つけることはありません。
Range オブジェクトに .Address プロパティがあることはわかっていますが、この場合に役立つかどうかはわかりません。