今天在excel宏中的日期

问题描述 投票:6回答:2

我试图在sheet2的每一行中将今天的日期添加到第A列,每次我将我选择的sheet1粘贴到sheet2新行的B列中。

我的脚本可以添加新行并将我的选择粘贴到sheet2中,但是我无法弄清楚如何在第一列中获取新的sheet2行。这是我宏中的脚本;

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

任何帮助表示赞赏。谢谢

excel vba
2个回答
8
投票

尝试Date功能。它将以MM / DD / YYYY格式为您提供今天的日期。如果您正在寻找MM-DD-YYYY格式的今天日期,请尝试Date$Now()还包括当前时间(您可能不需要)。这一切都取决于你需要什么。 :)


2
投票

这是一个将Now()值放在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

获取B列中最后一行的方法比使用While循环更好,这里有很多例子。有些比其他更好,但取决于你正在做什么以及你的工作表结构是什么样的。我在这里使用了一个假设列B是全空的,除了你正在移动的行/记录。如果不是这种情况,或者B1:B3中有一些值,则需要修改或使用其他方法。或者你可以只使用你的循环,但我会寻找替代方案:)

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.