2013-10-24 89 views
4

我試圖在sheet2的列A中添加一個今天的日期,每次我的宏粘貼我在sheet2的新行的列B中選擇的sheet1。今天在excel宏中的日期

我的腳本工作添加新行並將我的選擇粘貼到工作表2中,但我無法弄清楚如何在sheet2的新行中獲得A列中的日期。這是我的宏中的腳本;

Sub move() 
     Dim i As Integer 
     Application.ScreenUpdating = False 
     ActiveWorkbook.Sheets("Sheet1").Range("A1,A2,A3,A4,A5").Copy 

     Sheets("Sheet2").Select 
     i = 3 
     While Range("B" & i).Value <> "" 
      i = i + 1 
     Wend 
     Range("B" & i).Select 

     Selection.PasteSpecial (xlValues), Transpose:=True 

     Worksheets("Sheet1").Range("A1:A5").Clear 

End Sub 

任何幫助表示讚賞。感謝

+3

你嘗試使用'Now()'函數嗎?例如'Range(「A2」)。Value = Format(Now(),「MM/DD/YYYY」)''。根據需要修改。 –

+0

謝謝大衛,正是我在找的; –

+0

如果我的答案已解決您的問題,請考慮將其標記爲「已接受」,如下所示。 –

回答

1

下面是把A列

Sub move() 
    Dim i As Integer 
    Dim sh1 As Worksheet 
    Dim sh2 As Worksheet 
    Dim nextRow As Long 
    Dim copyRange As Range 
    Dim destRange As Range 

    Application.ScreenUpdating = False 

     Set sh1 = ActiveWorkbook.Worksheets("Sheet1") 
     Set sh2 = ActiveWorkbook.Worksheets("Sheet2") 
     Set copyRange = sh1.Range("A1:A5") 

     i = Application.WorksheetFunction.CountA(sh2.Range("B:B")) + 4 

     Set destRange = sh2.Range("B" & i) 

     destRange.Resize(1, copyRange.Rows.Count).Value = Application.Transpose(copyRange.Value) 
     destRange.Offset(0, -1).Value = Format(Now(), "MMM-DD-YYYY") 

     copyRange.Clear 

    Application.ScreenUpdating = True 

End Sub 

Now()值的例子有越來越B列的最後一行比使用While循環,大量的例子在這裏的更好的方法。有些比別人好,但取決於你在做什麼以及你的工作表結構是什麼樣的。我在這裏使用了一個,它假定列B除了您正在移動的行/記錄之外都是空的。如果情況並非如此,或者如果B1:B3中有一些值,則需要修改或使用其他方法。或者你可以使用你的循環,但我會尋找替代品:)

6

嘗試Date功能。它會以MM/DD/YYYY格式給你今天的日期。如果您正在以MM-DD-YYYY格式查找今天的日期,請嘗試Date$Now()還包含當前時間(您可能不需要)。這一切都取決於你需要什麼。 :)