2017-07-19 12 views
2

私はこのコードを、私が一緒につなぎ合わせたVBAのコードではあまりよくないコードを使って作成しました。別のワークブックの最後の行に複数のセルを送信

私はそれは例えば、あらゆる場所にあるデータを含む、鉱山で1つのワークブックを持っている:名前はL2で、口座番号は、C3などなどです

をこのコードは、このデータのすべてを送信することです私の同僚の残りの人が使っている別のワークブック、そしてそのワークブックの最後の行に移動します。

Sub Save_To_Register() 

Dim count As Integer 
Dim r1 As Range, r2 As Range, 

'Officer Name 
Set r1 = Range("L2") 
Set r2 = Sheets("Sheet1").Range("A100") 
r2.Value = r1.Value 

'Account Number 
Set r1 = Range("C3") 
Set r2 = Sheets("Sheet1").Range("C100") 
r2.Value = r1.Value 

'Account Address 
Set r1 = Range("C4") 
Set r2 = Sheets("Sheet1").Range("D100") 
r2.Value = r1.Value 

'Applicant of Take Over 
Set r1 = Range("L3") 
Set r2 = Sheets("Sheet1").Range("E100") 
r2.Value = r1.Value 

'Applicant of Take Over 
Set r1 = Range("C3") 
Set r2 = Sheets("Sheet1").Range("C100") 
r2.Value = r1.Value 

Application.Workbooks("PM-#8873088-v4-SUB-METERING_REGISTER.XLS").Activate 
Application.Wait (Now + TimeValue("0:00:1")) 


ThisWorkbook.Sheets("Sheet1").Range("A100:K100").Copy 

ActiveSheet.Select 
ActiveSheet.Range("A1").Select 


count = 1 

Do While Not (ActiveCell.Value = None) 
    ActiveCell.Offset(1, 0).Range("A1:K1").Select 
    count = count + 1 

Loop 

ActiveSheet.Range("A" & count).PasteSpecial 


End Sub 

これは、私は基本的に単列A100に細胞L2、C3、C4 & L3をミラーだ、非常に効率的なコードではない:K100。その行には= Today()の数式が含まれています。

すべてがうまくいきましたが、効率的ではありませんでした。このVBAを使用すると、すべてのデータが完全ににコピーされますが、前のエントリのすべての日付が更新されます

私はpastespecialを使うと値だけを転送すると思っていましたが、実際の値ではなく、新しいブック(Sub metering register)にコピーされたすべての日付セルが= Today() 。

日付の値が数式としてではなく値としてコピーされるようにする方法や、新しいブックの毎日更新されないように値を停止する方法についての提案はありますか?

はあなたpastespecial後、あなたが

答えて

1

あなたはxlPasteValuesが必要ありがとうございます。

ActiveSheet.Range("A" & count).PasteSpecial xlPasteValues 

編集:この答えの批評家に :私は私のポストは、コピー/貼り付けを必要としない、より効率的なアプローチを奨励していません実現 - しかし男性(または女性が)のみであるときワンワード解決策から離れて...私はそれを投稿して質問しません! :)

0

Cells(row, column).Value構文を使用します。

効率に関するヒントをもう少し紹介します。可能なかぎり、オブジェクトを有効にして選択してみてください。あなたのコードでは、それは追加のブックを開くには十分だが、店の参照は、例えば、タイプWorkbookの2つの参照変数にブックへ:

Dim myWorkbook As Workbook 
Set myWorkbook = ThisWorkbook 

はその後あなたがこの構文 myWorkbook.Sheets(1).Cells(1, 1).Value(単なる例)を利用することができます。次に、すべてのブック名を入力しない場合は、コードで Withブロックを使用できます。

関連する問題