【发布时间】:2013-04-19 17:08:28
【问题描述】:
我在 Access 中有一些 VBA 代码,它从 Excel 工作表中获取一系列单元格,然后将它们从数字转换为日期。例如,一个范围是 H1:Y25000
Public Sub FixDates(theRange as Range)
Dim RangeCell as Range
For Each RangeCell In theRange
If IsNumeric(RangeCell.Value) And RangeCell.Value > 0 And Not IsEmpty(RangeCell.Value) Then
lngDate = CLng(RangeCell.Value)
RangeCell.Value = DateAdd("d", lngDate -1, "1/1/1968")
End If
Next RangeCell
End Sub
代码似乎可以运行,但运行起来需要很长时间。可以用不同的方式编写以更快地运行吗?我正在阅读有关使用 Variant 而不是 Range 的信息,但我无法弄清楚。
哦,要调用 Sub,我使用类似:
path = "C:\myfile.xlsx"
Set xlApp = CreateObject("Excel.Application")
Set xlWbk = xlApp.Workbooks.Open(path)
Set xlWks = xlWbk.Worksheets(1)
lastRow = xlWks.Range("A1").End(xlDown).Row
FixDates (xlWks.Range("H1:Y" & lastRow))
谢谢!
【问题讨论】:
-
我们可以修改问题并从中删除“访问”吗?因为这个问题在 Excel 中帮助了我很多(没有 Access)