2016-12-19 24 views
0

セル値の基準に基づいて行を1つのシートから別のシートに移動しています。セルの値が満たされている場合は、別のシートに移動します。しかし、動くときには値として動かす必要があります。私のセルの1つに数式があり、そのセルの値を新しいシートに入れたいだけです。以下は行を移動する私のコードの一部です。私の質問は、PasteSpecialやこれに相当するコードを値として移動するためにどこに追加すればよいのでしょうか?ありがとう!VBA-別のシートの行をコピーして値として貼り付ける

For Each xCell In xRg 
    If CStr(xCell.Value) = "Pipeline" Then 
     xCell.EntireRow.Copy Destination:=Worksheets("Pipeline2").Range("A" & B + 1) 
     xCell.EntireRow.Delete 
     B = B + 1 

答えて

1

値を入力したい場合は、範囲を互いに等しく設定するだけです。

For Each xCell In xRg 
    If CStr(xCell.Value) = "Pipeline" Then 
     Worksheets("Pipeline2").Range("A" & B + 1).EntireRow.Value = xCell.EntireRow.Value 

     xCell.EntireRow.Delete 
     B = B + 1 

編集:また、「バットマン」ソリューションの

For Each xCell In xRg 
    If CStr(xCell.Value) = "Pipeline" Then 
     Worksheets("Pipeline2").Range("A" & B + 1).EntireRow.Value = xCell.EntireRow.Value 
     xCell.EntireRow.Copy 
     Worksheets("Pipeline2").Range("A" & B + 1).EntireRow.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ 
      SkipBlanks:=False, Transpose:=False 
     Application.CutCopyMode = False 
     xCell.EntireRow.Delete 
     B = B + 1 
+0

これは機能しましたが、フォーマットが失われました(各セルの枠線)。まだそれを保つどんな方法?ありがとう! – gluc7

+0

@ gluc7 - 編集を参照してください。 – BruceWayne

0

次のようなもの...それから戻って、pastespecialそして、私は(奇妙である)ことができます信じていませんが、元のワークシートを宣言する必要がありますし、コピーします。

'...... 
Set ws1 = Activeworksheet 
    For Each xCell In xRg 
    If CStr(xCell.Value) = "Pipeline" Then 
     xCell.EntireRow.Copy Destination:=Sheets("Pipeline2").Range("A" & B + 1) 
     Sheets("Pipeline2").Activate 
     Sheets("Pipeline2").Range("A" & B + 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False 
     Application.CutCopyMode = False 
     ws1.astivate 
     xCell.EntireRow.Delete 
     B = B + 1 
0

建物を書式設定を維持するために、あなたがいない最後に、すなわち、カラム1から(必要な最小に実際にコピーされた範囲の値を制限する可能性その行の空のセル):

For Each xCell In xRg 
    If CStr(xCell.Value) = "Pipeline" Then 
     With xCell.Parent 
      With .Range(.Cells(xCell.row, 1), .Cells(xCell.row, .Columns.count).End(xlToLeft)) 
       Worksheets("Pipeline2").Range("A" & B + 1).Resize(.Columns.count).Value = .Value 
      End With 
     End With 
     xCell.EntireRow.Delete 
     B = B + 1 
+0

私はこれらの空のセルのいくつかでフォーマットしています。それは非常に役に立ちましたが、私はそれを各シートにわたって均一に見せる必要があります。必要最小限のものを使用する場合、空のセルに書式設定の一部が継承されません。少なくとも私はそれが私の頭の中でうまくいくと思います。私が間違っているなら私を訂正してください。 – gluc7

+0

あなたは正しいですが、具体的に "値"に気をつけている間に書式は言及していませんでしたが、 – user3598756

0

これはあなたのために行うべきことです。

Sub copy_paste() 
    Dim i As Integer 

    i = 2 

    Sheets("Sheet1").Select 
    Range("E2").Select 

    Do While ActiveCell <> "" 
     If Range("E" & ActiveCell.Row) <> "" And Range("F" & ActiveCell.Row) <> "" Then 
      Range("E" & ActiveCell.Row).Copy Sheets(Sheet3).Range("B" & i) 
      Range("F" & ActiveCell.Row).Copy Sheets(Sheet3).Range("E" & i) 
      Range("A" & ActiveCell.Row).Copy Sheets(Sheet3).Range("F" & i) 
      Range("H" & ActiveCell.Row).Copy Sheets(Sheet3).Range("G" & i) 
      Range("I" & ActiveCell.Row).Copy Sheets(Sheet3).Range("H" & i) 
      Range("K" & ActiveCell.Row).Copy Sheets(Sheet3).Range("I" & i) 
      i = i + 1 
     End If 
     ActiveCell.Offset(1, 0).Select 
    Loop 

End Sub 
関連する問題