2016-10-09 2 views
-1

Я хочу использовать VBScript для обработки EXCEL вместо VBA. Но я столкнулся ошибки кода при вызове метода Range.Find см нижеКак использовать постоянную константу excel в VBS

Function find_range(wb, domain, var) 
    Dim sheet 
    Dim rg1, rg2, rg3 
    Set sheet = wb.Sheets(domain) 

    Set rg1 = sheet.Range("D:D").Find(var, , xlValues, xlWhole) 

    If Not rg1 is Nothing Then 
     'msgbox rg1.Cells(1,1).row 
     Set rg2 = sheet.Cells(rg1.Cells(1,1).row, 19) 
     msgbox(rg2.value) 
    End if 
End Function 

при выполнении функции find_range, я получил

переменная неопределенные "xlValues" "xlWhole"

ошибка ,

Так что я думаю, что я не могу просто использовать встроенные константы excel таким образом в VBScript.
Итак, каков правильный путь?

+2

Объявление через них. Обычно мы просто помещаем значение const в. Так что 'func (xlCrap)' становится 'func (3)'. См. Ключевое слово const, если вы хотите, чтобы глупый код находился на странице https://www.microsoft.com/en-au/download/details.aspx?id=2764 –

+0

Ссылка @Noodles отсутствует. –

+0

Похоже, что он снят. Я поставил копию на свой skydrive https://1drv.ms/f/s!AvqkaKIXzvDieQFjUcKneSZhDjw –

ответ

2

К сожалению, эти Именованные константы являются частью библиотеки объектов Excel, в которой VBScript не имеет способа ссылаться, поэтому наилучшим подходом является поиск именованных констант в обозревателе объектов внутри Excel VBA или онлайн через различные ссылки, тогда создайте свои собственные именованные константы и используйте их в своем коде.

В этом примере вы используете две перечисления, которые можно идентифицировать, просматривая Range.Find() method.

  • xlValues является именованной константой в xlFindLookIn перечисления и имеет значение -4163.
  • xlWhole является именованной константой в перечислении xlLookAt и имеет значение 1.

Итак, как только вы знаете значение, которое вы можете определить, и ваш код должен работать без каких-либо дополнительных изменений.

Const xlValues = -4163 
Const xlWhole = 1 

В идеале эти значения должны быть объявлены в глобальной области действия вашего сценария, чтобы они были доступны для любой функции или процедуры.

Вы можете спросить, почему бы не указать числовое значение? Ну, хотя это действительно правильный подход, если вы используете значение в нескольких местах, вам необходимо изменить это значение в нескольких местах, если значение когда-либо изменится (как маловероятно в этом случае). С именованной константой вы делаете одно изменение, и везде, где в вашем коде указано значение, также изменяется.

Следует также отметить, что VBScript интересуется только числовым значением, поэтому технически вы можете назвать константы чем угодно. Тем не менее, хорошо придерживаться соглашения об именах, особенно если вы повторно использовали код функции в Excel VBA, например.

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