簡體   English   中英

使用 VBA 復制/粘貼日期

[英]Copy/Paste Date using VBA

我正在嘗試在 Excel 中使用 Today Function 插入日期。 我在單元格 I2 中有一張日期在頂部的表格。

我有一個表,正在使用 VBA 將粘貼值復制到其中 - 這將每天使用,我希望將日期自動填充到 D 列,從 D 列中最后使用的行開始,以最后使用的行結束列 C。 然后我希望將日期保存為值。

我嘗試使用以下代碼,但它沒有用 - 什么也沒發生。

有人可以幫我理解為什么,以及如何糾正這個問題嗎?

With ThisWorkbook
    With .Sheets("Test")
        Dim rng As Range
        Set rng = .Range(.Cells(.Rows.Count, "D").End(xlUp), .Cells(.Rows.Count, "C").End(xlUp).Offset(0, 1))
        
        rng.Value = ThisWorkbook.Sheets("Test").Range("I2").Value
    End With
End With

我相信這就是你想要的:

  1. 使用Column C查找最后使用的行(假設 C 和 D 中的最后一行是相等的,所以只需在一列中計算。看起來你試圖過於復雜
  2. 跳過 temp rng分配並在計算lr時使用Offset和在引用目標行時使用Resize組合應用值傳輸

Sub Try_Me()

Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Test")
Dim lr As Long

lr = ws.Range("C" & ws.Rows.Count).End(xlUp).Offset(1).Row
ws.Range("C" & lr).Resize(1, 2).Value = ws.Range("I2").Value

End Sub

查看您當前的Set rng =...語句,您可能正在嘗試確定任一列中最后使用的行,這表明兩者中最后使用的行可能會有所不同。 如果是這種情況,您可以比較兩者並選擇最大值,如下所示:

Sub Try_Me()

Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheet2")
Dim c As Long, d As Long, lr As Long

c = ws.Range("C" & ws.Rows.Count).End(xlUp).Offset(1).Row
d = ws.Range("C" & ws.Rows.Count).End(xlUp).Offset(1).Row

lr = Application.WorksheetFunction.Max(c, d)
ws.Range("C" & lr).Resize(1, 2).Value = ws.Range("I2").Value

End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM