被困了一会儿。我希望有人可以帮我解决当前的问题,并指出我为什么会遇到错误
对象必需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年。 任何帮助将不胜感激!
答案 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