2017-01-09 2 views
1

Застрял на некоторое время. Я надеюсь, что кто-то может помочь мне с моей текущей проблемой, и указать мне, почему у меня ошибкаExcel VBA. Добавить 1 год в существующую ячейку

Объекта Требуемого 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

Я предполагаю, что ваш код внутри кода User_Form, в этом случае оно размещаемым? 'ComboBox_Change'? –

+0

@ShaiRado внутри Частный Sub CommandButton1_Click() Спасибо –

+0

@ShaiRado Скажите, пожалуйста, если вам нужна дополнительная информация. На самом деле нужна помощь в этом. –

ответ

0

Поскольку вы знаете, что хотите сравнить значение Combo-Box cmbveh со значениями в столбце F, вы можете использовать Application.Match, чтобы найти номер строки, соответствующий значению в Combo-Box. Впоследствии вы можете получить строку refference (добавьте 13 к ней, так как ваш диапазон начинается с строки 14, а не строки 1) и читает значение из столбца «R» (где вы храните свою «РЕГИСТРАЦИЮ ИСПЫТАНИЯ ДАТА»).

Наконец, используйте функцию 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 
+0

Он работает! Пожалуйста, объясните коды для моей будущей ссылки :) Большое спасибо! –

+0

@KelvinJhonCamua Посмотреть отредактированный пост, я добавил объяснение наверху, а некоторые комментарии внутри кода –

+0

Большое вам спасибо за это. Не возражаете, если я задам другой вопрос? Это связано с этой проблемой. Речь идет о том, что моя формула продолжает меняться после тестирования. –

Смежные вопросы