2017-04-20 24 views
-1

私がやっていることは、E17:BK17の値を最後の行にコピーすることです。今私がコピーしたものは、最後の行にE17の値が入りますが、残りの列のデータは最後の行にコピーされません。私が何をしているのか分からないので、どんな助けもありがたいです。VBA最後の行に値を貼り付け

Sub Mercy_CopyPaste_Row() 
' 
' CopyPaste Macro 
' 
' 
Dim targetRng As Excel.Range 
Dim destRng As Excel.Range 
Set targetRng = Range("$E$17:$BK$17") 
Set destRng = Excel.Range("E" & Rows.Count).End(xlUp).Offset(1, 0) 

destRng.Value = targetRng.Value 

End Sub 
+0

あなたdestRngが1列で、あなたはあなたがGoogleからの助けを得ることによって、あなたの答えを見つけることができますtargetRng.Columns.Count –

+0

にサイズを変更する必要があります。 – Masoud

答えて

1

あなたSet targetRng = Range("$E$17:$BK$17")探しているものを行うことができますdestRng = Excel.Range("E" & Rows.Count).End(xlUp).Offset(1, 0)は、単一の列(実際には単一のセルです)であるのに対し、59列です。これが、単一のセル「E17」だけを貼り付ける理由です。ごdestRngためには

targetRngの同じサイズ(同じ数の列を)であることを、あなたはResizetargetRng.Columns.Countの範囲を必要としています。

は以下のコードを試してみてください。

Set destRng = Range("E" & Rows.Count).End(xlUp).Offset(1, 0).Resize(1, targetRng.Columns.Count) 
destRng.Value = targetRng.Value 
+0

私はそれを説明してくれてありがとう! –

+0

@StevincentRianMoseleyあなたは大歓迎です:) –

0

これは、あなたが

Sub Mercy_CopyPaste_Row() 

Dim lRow As Long 
Dim ACell As String 
Dim Col As String 
Dim targetRng As Excel.Range 
Set targetRng = Range("$E$17:$BK$17") 
lRow = WorksheetFunction.Max(Range("E65536").End(xlUp).Row) 
ACell = Range("E17").Address(RowAbsolute:=False, ColumnAbsolute:=False) 

Range("$E$17:$BK$17").AutoFill Range(ACell & ":" & "BK" & lRow) 

End Sub 
+0

はほとんど機能しましたが、前の列のすべてを上書きしました –

関連する問題