Доброго дня! Не могу сам осилить, хелп! Надоело писать каждый раз формулу для динамического именованного диапазона и попробовал сделать макросом. Однако, отладчик ругается, что это неправильная формула. Вставлять руками эту формулу или формулу по-проще получается. Вот формула:
Код
=База!$A$1:ИНДЕКС(База!$C:$C;СЧЁТЗ(База!$A:$A))
а вот код макроса: [vba]
Код
Sub задать_сводную() Dim прав_край As Range, столб_счет As Range, лев_угол As Range Dim формула_$, назв_$
Set прав_край = Application.InputBox("Правый столбец таблицы:", "Запрос данных", "", Type:=8) Set столб_счет = Application.InputBox("Столбец для подсчета количества строк:", "Запрос данных", "", Type:=8) Set лев_угол = Application.InputBox("Левый угол таблицы:", "Запрос данных", "", Type:=8) ' назв_ = InputBox("Укажите значение для поиска:", "Запрос данных", "") назв_ = "св_Тест" ' On Error Resume Next With ActiveSheet формула_ = "=" & .Name & "!" & лев_угол.Address & ":ИНДЕКС(" & _ .Name & "!" & прав_край.Address & ";СЧЁТЗ(" & _ .Name & "!" & столб_счет.Address & "))" ActiveWorkbook.Names.Add Name:=назв_, RefersToLocal:=формула_ End With Stop End Sub
[/vba] Кто-нибудь встречался с этим?
Доброго дня! Не могу сам осилить, хелп! Надоело писать каждый раз формулу для динамического именованного диапазона и попробовал сделать макросом. Однако, отладчик ругается, что это неправильная формула. Вставлять руками эту формулу или формулу по-проще получается. Вот формула:
Код
=База!$A$1:ИНДЕКС(База!$C:$C;СЧЁТЗ(База!$A:$A))
а вот код макроса: [vba]
Код
Sub задать_сводную() Dim прав_край As Range, столб_счет As Range, лев_угол As Range Dim формула_$, назв_$
Set прав_край = Application.InputBox("Правый столбец таблицы:", "Запрос данных", "", Type:=8) Set столб_счет = Application.InputBox("Столбец для подсчета количества строк:", "Запрос данных", "", Type:=8) Set лев_угол = Application.InputBox("Левый угол таблицы:", "Запрос данных", "", Type:=8) ' назв_ = InputBox("Укажите значение для поиска:", "Запрос данных", "") назв_ = "св_Тест" ' On Error Resume Next With ActiveSheet формула_ = "=" & .Name & "!" & лев_угол.Address & ":ИНДЕКС(" & _ .Name & "!" & прав_край.Address & ";СЧЁТЗ(" & _ .Name & "!" & столб_счет.Address & "))" ActiveWorkbook.Names.Add Name:=назв_, RefersToLocal:=формула_ End With Stop End Sub
pabchek, откройте с другими региональными и будет там запятая. Вы второй вариант попробовали?Он более корректный так как будет работать не только в Русском варианте.
pabchek, откройте с другими региональными и будет там запятая. Вы второй вариант попробовали?Он более корректный так как будет работать не только в Русском варианте.bmv98rus
Замечательный Временно просто медведь , процентов на 20.
А так работает. И в прошлый раз тоже заработало бы, я вставил только первые 3 строки и не обратил внимания, что RefersToLocal надо заменить на RefersTo. Спасибо большое! Что ж за засада такая! Ручками точка с запятой, а в коде запятая. Фиг углядишь ))))
А так работает. И в прошлый раз тоже заработало бы, я вставил только первые 3 строки и не обратил внимания, что RefersToLocal надо заменить на RefersTo. Спасибо большое! Что ж за засада такая! Ручками точка с запятой, а в коде запятая. Фиг углядишь ))))pabchek
"Учиться, учиться и еще раз учиться!" WM: R399923528092
А что в там в RefersToLocal из #3 , если посмотреть из VBA? По факту , всегда запятая, так как это разделитель по умолчанию, также как и точка - десятичный разделитель в VBA, не зависимо от локализации.
А что в там в RefersToLocal из #3 , если посмотреть из VBA? По факту , всегда запятая, так как это разделитель по умолчанию, также как и точка - десятичный разделитель в VBA, не зависимо от локализации.bmv98rus
Замечательный Временно просто медведь , процентов на 20.