У меня проблема с применением функции Excel INDIRECT при проверке данных при применении VBA.Я использую VBA для заполнения критериев проверки данных и использую INDIRECT для поиска подходящего именованного диапазона рабочей книги из другого именованного диапазона через HLOOKUP.Я думаю, что моя проблема связана только с синтаксисом кода VBA, но я не могу понять, как правильно расположить двойные кавычки, чтобы заставить его работать.При запуске это возвращает уведомление об ошибке 400.
В настоящее время у меня есть следующее (функциональные разделы кода опущены для ясности).Столбец F, на который ссылается HLOOKUP, содержит выбираемое пользователем значение, а DepartmentRef представляет собой именованный диапазон:
Sub AddNewRoom()
Dim targetRow As Integer
targetRow = Range("EndRoomData").Row
With Worksheets("RoomData")
With .Range("G" & targetRow).Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=indirect(hlookup(F" & targetRow & ",DepartmentRef,2,false))"
End With
End With
End Sub
Когда я изменяю формулу проверки для удаления переменной кода, как показано ниже, код функционирует правильно, то есть:
With .Range("G" & targetRow).Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=indirect(hlookup(F7,DepartmentRef,2,false))"
End With
Любая помощь оценена, эта начинает меня угнетать ...
Спасибо в ожидании
RJ