2016-07-08 97 views
0

我想創建一個以從工作表中選擇數據部分開始的宏...但是,我希望此選擇僅包含在運行宏的同一天輸入的數據。例如(簡化)如果excel表中已經有10行數據,並且今天又輸入了3行數據,我希望當我啓動宏時,它只選擇最後3行數據。這可能嗎? (爲了達到我尋找的目的,宏在數據輸入後總是運行,並且實際上每次都會輸入更接近200行的數據......因此我無法通過並單獨輸入在該行旁邊的日期或類似的東西)。無論如何選擇基於Excel VBA中輸入日期輸入的數據?

+0

你可以跟蹤哪些行已經具有宏更新另一列處理。因此,例如,您更新列A〜B。 marco處理這些信息並在C列中留下標記。這可能是日期時間戳。您可以從最後一行重新開始,並且列C爲空。此外,每行的狀態與工作簿一起保存。 –

+0

@ destination-data是否有可以分配日期數據的excel函數? –

+0

是的。使用'Now()'。 **編輯**這將返回日期。 Excel不標記具有* last updated *屬性的單元格。除非你自己添加這個功能,否則它是不可用的。 –

回答

1

最簡單的做法是將最後一行處理存儲在工作表的名稱集合中。所以當你啓動你的宏時,你會得到最後一行更新。當您的宏完成後,您設置名稱的值。

LASTROW = getLastRow( 「Sheet2的」)

setLastRow 「Sheet2的」

Function getLastRow(SheetName As String) As Long 
    Dim value As String 

    On Error Resume Next 
     value = Worksheets(SheetName).Names("LastRow").RefersTo 
     getLastRow = CLng(Right(value, Len(value) - 1)) 
    On Error GoTo 0 

End Function 

Function setLastRow(SheetName As String) As Long 

    Dim lastRow As Long 
    With Worksheets(SheetName) 
     lastRow = .Rows(Rows.Count).End(xlUp).Row 
     .Names.Add Name:="LastRow", RefersTo:=lastRow, Visible:=False 
    End With 

End Function 
相關問題