シート1で、列a、c、d、gの値をコピーし、それをシート2の下部の列a、b、c、dに貼り付けたい
a、c、d、gの列に式が含まれているため、コピー/宛先メソッドを使用するとマクロが壊れてしまうため、これに苦労しています。
シート1で、列a、c、d、gの値をコピーし、それをシート2の下部の列a、b、c、dに貼り付けたい
a、c、d、gの列に式が含まれているため、コピー/宛先メソッドを使用するとマクロが壊れてしまうため、これに苦労しています。
個人的には、値を貼り付けるか書式設定するかを選択できるため、copy and pastespecial を使用します。ただし、その方法が気に入らない場合は、列の値を配列に割り当てて貼り付けることもできます。
このような問題に対処する方法の例を次に示します。
Sub test()
Dim colA As Variant
Dim colB As Variant
Dim colC As Variant
Dim lrow As Long
'putting the ranges into arrays
With Sheets(1).UsedRange
colA = .Columns("A")
colB = .Columns("B")
colC = .Columns("C")
End With
'putting arrays back into ranges
'note the use of resize to fit the target range with arrays
With Sheets(2)
lrow = .UsedRange.Rows.Count + 1
.Range("A" & lrow).Resize(UBound(colA, 1), 1) = colA
.Range("B" & lrow).Resize(UBound(colB, 1), 1) = colB
.Range("C" & lrow).Resize(UBound(colC, 1), 1) = colC
End With
End Sub
私は3つの方法を考えることができ、すべて基本的にコピー/貼り付けを使用します
rwtwmが提案した方法を使用します。サンプルコードは次のようになります
Sheets("Sheet1").Range("A1:A10").Copy
Sheets("Sheet2").Range("A1").PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
値をコピーします
Sheets("Sheet2").Range("A1:A10").Value = _
Sheets("Sheet1").Range("A1:A10").Value
データを配列にコピーし、それを使用してその配列を他のシートにコピーします
Dim MyData
MyData = Sheets("Sheet1").Range("A1:A10")
Sheets("Sheet2").Range("A1:A10") = MyData
問題の範囲で貼り付け特殊メソッドを使用します。Microsoft ヘルプ リソースのリンクを参照してください。修飾子 xlPasteValues が必要になります。