0

シート1で、列a、c、d、gの値をコピーし、それをシート2の下部の列a、b、c、dに貼り付けたい

a、c、d、gの列に式が含まれているため、コピー/宛先メソッドを使用するとマクロが壊れてしまうため、これに苦労しています。

4

3 に答える 3

1

個人的には、値を貼り付けるか書式設定するかを選択できるため、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
于 2013-08-07T15:20:15.217 に答える
0

私は3つの方法を考えることができ、すべて基本的にコピー/貼り付けを使用します

  1. rwtwmが提案した方法を使用します。サンプルコードは次のようになります

    Sheets("Sheet1").Range("A1:A10").Copy
    Sheets("Sheet2").Range("A1").PasteSpecial Paste:=xlPasteValues, _
        Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    
  2. 値をコピーします

    Sheets("Sheet2").Range("A1:A10").Value = _
        Sheets("Sheet1").Range("A1:A10").Value
    
  3. データを配列にコピーし、それを使用してその配列を他のシートにコピーします

    Dim MyData
    MyData = Sheets("Sheet1").Range("A1:A10")
    Sheets("Sheet2").Range("A1:A10") = MyData
    
于 2013-08-07T15:28:43.297 に答える
0

問題の範囲で貼り付け特殊メソッドを使用します。Microsoft ヘルプ リソースのリンクを参照してください。修飾子 xlPasteValues が必要になります。

于 2013-08-07T14:47:07.660 に答える