Excel VBA。在现有单元格中添加1年

时间:2017-01-09 08:01:39

标签: excel-vba date vba excel

被困了一会儿。我希望有人可以帮我解决当前的问题,并指出我为什么会遇到错误

  

对象必需424错误

Here是我正在处理的工作表,这是我当前的代码:

注意:( me.cmbveh.value是我的vba表单上的一个组合框)

Dim v_name As String
Dim add_date As Date

v_name = Me.cmbveh.Value
add_date = Application.WorksheetFunction.VLookup(v_name, Sheets("Vehicle Database").Range("F14:R33"), 13, False)

Application.WorksheetFunction.VLookup(v_name, Sheets("Vehicle Database").Range("F14:R33"), 13, False).Select
ActiveCell.Value = DateSerial(Year(add_date) + 1, Month(add_date), Day(add_date))

错误指向这行代码:

Application.WorksheetFunction.VLookup(v_name, Sheets("Vehicle Database").Range("F14:R33"), 13, False).Select

我在这里要做的是,如果我的组合框上的值与我的表格匹配,我希望能够在“注册过期日期”列中添加1年。 任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

由于您知道要将cmbveh组合框值与列F中的值进行比较,因此可以使用Application.Match查找与组合中的值匹配的行号-框。之后,您可以获得行参考(添加13,因为您的范围从第14行开始而不是第1行),并从列“R”(存储“REGISTRATION EXPIRY DATE”)中读取值。

最后,使用DateAdd函数将1年添加到现有日期(选择"yyyy"作为区间参数)。

<强>代码

Option Explicit

Private Sub CommandButton1_Click()

Dim v_name As String
Dim add_date As Date

Dim MatchRow    As Variant

v_name = Me.cmbveh.Value

With Sheets("Vehicle Database")
    ' first test to see if Match criteria was met (found in Column F)
    If Not IsError(Application.Match(v_name, .Range("F14:F33"), 0)) Then
        MatchRow = Application.Match(v_name, .Range("F14:F33"), 0) '<-- get row number
        .Range("R" & MatchRow + 13).Value = DateAdd("yyyy", 1, .Range("R" & MatchRow + 13).Value)
    End If
End With

End Sub