データベース(テーブル)があり、複数の特定の列を別のワークシート(sheet3
)にコピーする必要があります。さらに、各列は特定の列sheet3
に貼り付ける必要があります。これを達成するために、2つのアライメントを作成しました。arrSht
にはコピーする列のヘッダーが含まれ、Arrcol
には列を参照する数字が含まれています。範囲内のループと参照配列の要素がマクロを凌ぐ
次に、両方の配列の各要素をループして列を見つけ、コピーして貼り付けようとします。次のように私の試みが行く:
Sub copia()
Dim f As Range
Dim arrSht, Arrcol As Variant, j As Long
arrSht = Array("a","b","c")
Arrcol = Array(5, 6, 8)
For j = LBound(arrSht) To UBound(arrSht)
Set f = Sheet1.Cells.Find(arrSht(j), searchorder:=xlByRows, LookAt:=xlPart)
If Not f Is Nothing Then
Sheet1.Range(f, Sheet1.Cells(Rows.Count, f.Column).End(xlUp)).Copy _
Sheet3.Range(Sheet3.Cells(2, Arrcol(j)))
Else
MsgBox arrSht(j) & "Header not found!"
End If
Next j
end sub
明確にするために、ループの最初の繰り返しは、そのヘッダ「A」(arrSht
の最初の要素)であるとf
に保管範囲を見つける必要があります。次に、f
が対応する列をコピーします。そして最後に、私は、コードを実行すると、私はエラーを取得するSheet3
列5(Arrcol
のすなわち最初の要素)
に貼り付け:Sheet1.Range(f, Sheet1.Cells(Rows.Count, f.Column).End(xlUp)).Copy _ Sheet3.Range(Sheet3.Cells(2, Arrcol(j)))
に対応する行に「オブジェクトのメソッド 『範囲』 『_Worksheetは』失敗しました」。だから、私はおそらく間違った方法で配列の要素を参照しているか、間違ったループを書くだけです。
ご協力いただきありがとうございます。このコードで
わからないけど、 'Sheet1.Range(F、Sheet1.Cells(Rows.Count、Fに変更してみてください.Cols(2、Arrcol(j)) ' – SJR