我正在使用3 excel sheets。在sheet Start Page中,从A4列开始的日期下降。从Range("C7").开始,在基金趋势表中查找相同日期的宏,该日期位于A11列中,到最后一行并抵消3列,并将该值复制到“应计费用”中。宏循环,直到在工作表中的最后一行(“开始页”)范围(“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月11日这样的日期时,它会切换到2015年11月2日。但并不是所有的日子都是这样
克服了这个问题。I被放置了一个工作表函数,以强制日期列为文本。目前正在起作用。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Sheets("Start page").Range("A4", "A50000").NumberFormat = "@"
Sheets("Fund Trend").Range("A11", "A50000").NumberFormat = "@"
End Sub发布于 2015-04-27 20:42:05
要避免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是您所期望的,对于任何给定的查找值?如果没有错误,那么几乎(当然是)发生的是,您输入的公式是返回一个空字符串,并且该值被放入单元格中。
https://stackoverflow.com/questions/29905297
复制相似问题