我正在使用 3 excel表格。在表单起始页中,从A4列开始的日期下降。对于位于 A11到lastrow 列中的相同日期并偏移3列的宏
问题是指宏在某些情况下没有将值填充到工作表应计费用中。 或它没有找到日期。我的代码如下:
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年2月11日这样的日期时,它会切换到2015年11月2日。但它没有发生在所有日期
克服问题。我放置了一个工作表函数来强制日期列到文本。目前正在运作。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Sheets("Start page").Range("A4", "A50000").NumberFormat = "@"
Sheets("Fund Trend").Range("A11", "A50000").NumberFormat = "@"
End Sub
答案 0 :(得分:1)
要避免1004错误,可以使用Application.VLookup
函数,该函数允许将错误类型作为返回值。使用此方法测试错误,如果没有错误,则返回结果。
要执行此操作,您必须Dim result as Variant
,因为(在此示例中)我在result
中放置了一个文本/字符串值,以帮助识别错误发生。
If IsError(Application.Vlookup(Nav_Date.Range("A" & i), fund_Trend.Range("A11:C1544"), 3, False)) Then
result = "date not found!"
Else
result = Application.WorksheetFunction.VLookup(Nav_Date.Range("A" & i), fund_Trend.Range("A11:C1544"), 3, False)
End If
"工作表中没有打印结果"需要进一步调试。对于任何给定的查找值,您是否已逐步完成代码以确保result
符合您的预期?如果没有错误,那么几乎当然发生的是你输入的公式是返回一个空字符串,并且该值被放入单元格中。