【发布时间】:2015-04-27 20:26:31
【问题描述】:
我正在使用 3 张 Excel 表格。在 工作表起始页 我有 从 A4 列开始的日期 向下。宏 V 在工作表 Fund Trend 中查找位于列 A11 到 lastrow 中的相同日期并偏移 3 列,并将值复制到工作表 "Accrued从 Range("C7") 开始的费用"。宏循环直到 sheet("Start page") Range("A4") 中的最后一行。
问题是宏在某些情况下没有将值填充到应计费用表中。 或它没有找到日期。我的代码如下:
Sub NetAsset_Value()
Dim result As Double
Dim Nav_Date As Worksheet
Dim fund_Trend As Worksheet
Dim lRow As Long
Dim i As Long
Set Nav_Date = Sheets("Start page")
Set fund_Trend = Sheets("Fund Trend")
lRow = Sheets("Start page").Cells(Rows.Count, 1).End(xlUp).row
For i = 4 To lRow
result = Application.WorksheetFunction.VLookup(Nav_Date.Range("A" & i), fund_Trend.Range("A11:C1544"), 3, False)
Sheets("Accrued Expenses").Range("C" & i + 3).Value = result
Sheets("Accrued Expenses").Range("C" & i + 3).NumberFormat = "0.00"
Sheets("Accrued Expenses").Range("C" & i + 3).Style = "Comma"
Next i
End Sub
错误陷阱:
On Error Resume Next
result = Application.WorksheetFunction.VLookup(Nav_Date.Range("A" & i), fund_Trend.Range("A11:C1544"), 3, False)
If Err.Number = 0 Then
Sheets("Accrued Expenses").Range("C" & i + 3).Value = result
Sheets("Accrued Expenses").Range("C" & i + 3).NumberFormat = "0.00"
Sheets("Accrued Expenses").Range("C" & i + 3).Style = "Comma"
End If
On Error GoTo 0
为了解决日期问题,我有这个子不知道这是否有效?
Sub dates()
Sheets("Start page").Range("A4", "A50000").NumberFormat = "dd-mm-yyyy"
Sheets("Fund Trend").Range("A11", "A50000").NumberFormat = "dd-mm-yyyy"
End Sub
我现在遇到的问题是,当输入像 2015 年 11 月 2 日这样的日期时,它会切换到 2015 年 2 月 11 日。但它并非发生在所有日期
克服问题。我放置了一个工作表函数来强制日期列为文本。目前正在工作。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Sheets("Start page").Range("A4", "A50000").NumberFormat = "@"
Sheets("Fund Trend").Range("A11", "A50000").NumberFormat = "@"
End Sub
【问题讨论】:
-
这些日期是否有效,区域设置是否与列中的内容一致?
-
您已经描述了两个不同的问题。一方面,你说它没有返回结果值——你调试过这个吗?在这些情况下,
result是什么?如果有错误,它应该使用WorksheetFunction类适当地引发。如果找不到日期,那肯定是 1004 错误。您可以通过一些错误捕获来解决这个问题,但首先要查看@AnthonyHorne 的建议。 -
@AnthonyHome 宏运行时,它从外部系统获取数据。我一直在尝试将两张表中的日期标准化。
-
它正在从 Excel 工作表中获取数据。现在,这可能是在较早的时间来自外部系统,但在运行时,它是 Excel 工作表的一部分(即使它是从外部源返回数据的公式 API),并且不是来自另一个系统。
-
@DavidZemens 我收到运行时错误 1004 - 无法获取工作表函数类的 vlookup 属性。但是我自己解决了这个错误陷阱。但没有价值。