2016-12-15 14 views
0

このループを実行しようとすると、Cell.Value.Copy行にError:Object Requiredが表示されます。このエラーを修正するには何が必要ですか?Loop-VBA経由でセルをコピーする

Sub Findings() 
Application.ScreenUpdating = False 

Dim Cell As Object 
Dim Rng As Range 

Set Rng = Sheets("Sheet1").Range("C5:C74") 
For Each Cell In Rng 
    If (Cell.Value <> "") Then 
    Cell.Value.Copy 
    End If 
Next Cell 

If IsEmpty(Range("C85").Value) = True Then 
    Range("C85").PasteSpecial xlPasteValues 
ElseIf IsEmpty(Range("C86").Value) = True Then 
    Range("C86").PasteSpecial xlPasteValues 
ElseIf IsEmpty(Range("C87").Value) = True Then 
    Range("C87").PasteSpecial xlPasteValues 
End If 

Application.ScreenUpdating = True 
End Sub 
+1

をちょうど 'Cell.Copy'を使用しています。 – Phylogenesis

+0

あなたが「For Each Cell In Rng」を開始するループは、ループを通る後続のパスがループを通る前のパスからクリップボードの値を上書きするので、少し無意味です。 VBAでは、目標範囲の '.Value'に直接割り当てるだけで、コピー/貼り付けを使用して値を転送するのは正当な理由はほとんどありません。 –

+0

@ gg315あなたは私の答えでコードを試してみましたか? –

答えて

0

あなたは(空の値を返すされている数式なし)の値を持つ細胞だけをコピーしたい場合は、範囲を設定するためにSpecialCells(xlCellTypeConstants)を使用することができます。

は、以下の私のコードを参照してください:

Sub Findings() 

Application.ScreenUpdating = False 

Dim Rng As Range 

With Sheets("Sheet1") 
    ' set "Rng" only to cells inside the range with values inside them 
    Set Rng = .Range("C5:C74").SpecialCells(xlCellTypeConstants) 
    Rng.Copy 

    If IsEmpty(.Range("C85").Value) Then 
     .Range("C85").PasteSpecial xlPasteValues 
    ElseIf IsEmpty(.Range("C86").Value) Then 
     .Range("C86").PasteSpecial xlPasteValues 
    ElseIf IsEmpty(.Range("C87").Value) Then 
     .Range("C87").PasteSpecial xlPasteValues 
    End If 

End With  
Application.ScreenUpdating = True 

End Sub 
関連する問題