3 / 3 / 2
Регистрация: 11.01.2019
Сообщений: 121
|
|
Excel Подскажите, как можно в VBA использовать переменные в диапазоне функции Range ?21.06.2021, 13:05. Показов 2873. Ответов 19
Метки нет Все метки)
(
Подскажите, как можно в VBA использовать переменные в диапазоне функции Range ?
Например, выражение 1 работает корректно. 1). Range(Cells(1, 10), Cells(1, 10)).Value = 300 Далее вместо Cell (1,10) хотел бы использовать Cell (I,K) .... Пытаюсь по аналогии заменить Range("$A2:$D$61") на Range(Cells(2, 1), Cells(61, 4)) - вылетает ошибка 1004 Применяю совместно с LOOKUP. Выражение 2 работает корректно, выражение 3 с ошибкой 1004. 2). Rezult3 = WorksheetFunction.VLookup(Range(Cells(7, 4), Cells(7, 4)), Workbooks("bill.xlsx").Sheets("Phone").R ange("$A2:$D$61"), 4, 0) 3). Rezult3 = WorksheetFunction.VLookup(Range(Cells(7, 4), Cells(7, 4)), Workbooks("bill.xlsx").Sheets("Phone").R ange(Cells(2, 1), Cells(61, 4)), 4, 0) При этом доступ к файлу и листу есть. Workbooks.Open "D:\Test\Bill.xlsx" ActiveSheet.Name = "Phone" Может есть какие идеи? Спасибо!
0
|
21.06.2021, 13:05 | |
Ответы с готовыми решениями:
19
Можно ли использовать зарегистрированные переменные сессии, как входные параметры функции? Можно ли на VB использовать функции написанные на VBA Excel (VBA) - Как вернуть Range из функции? |
859 / 508 / 187
Регистрация: 09.03.2009
Сообщений: 1,713
|
||||||
21.06.2021, 13:18 | ||||||
Когда вы пишете Cells() без полной спецификации файла и листа - смотрите, какой лист будет использован. Я всегда пишу или полный адрес FP.Sheet(N).Cells(x, y), или с With и с точкой: .Cells(x, y) при ранее поставленном With FP.Sheet(N)
В вашем случае проверил бы так:
1
|
3 / 3 / 2
Регистрация: 11.01.2019
Сообщений: 121
|
|
21.06.2021, 17:05 [ТС] | |
Спасибо, сейчас попробую...
вы правы с листами есть вопрос... Изначально открывается файл "Test_Link.xlsx" В нем активный лист с именем "Лист2" И уже далее подтягивается файл "D:\test\bill.xlsx") и лист "Phone". Добавлено через 24 минуты Zeag, Вы имеете ввиду с помощью Set Set ah = ActiveSheet Set sh = Workbooks("bill.xlsx").Sheets("Phone") как тогда полностью будет выглядеть запись LOOKUP, чтобы прописать в нем оба файла и листа на которых строится функция. Спасибо!
0
|
4087 / 1467 / 401
Регистрация: 07.08.2013
Сообщений: 3,665
|
|
21.06.2021, 17:14 | |
ykr,
Давайте разбираться вместе Range - по моему понятию диапазон т.е. что что ограниченное размерами соответственно в его описании эти границы обозначены по секрету скажу что это диагональ из левого верхнего угла в правый нижний угол в записи range (cells(x,y),cells(x1,y1))........... x,y,x1,y1 могут быть переменными т.е если вы зададите заранее значения для этих переменных то команда должна отработать
0
|
859 / 508 / 187
Регистрация: 09.03.2009
Сообщений: 1,713
|
|||||||||||
21.06.2021, 18:08 | |||||||||||
snipe, x и y заданы у него. Но если Cells или Range идет без указания рабочей книги и/или листа, то они относятся к текущему листу. А это может быть совсем не тот, что предполагается автором.
ykr, я имею в виду запись вида:
Поиск я чаще делаю через Find, дело привычки.
0
|
3 / 3 / 2
Регистрация: 11.01.2019
Сообщений: 121
|
|
21.06.2021, 18:47 [ТС] | |
Zeag,
{В записи WorksheetFunction.VLookup(Range(Cells(7, 4), Cells(7, 4)) - я не знаю, в каком файле вы находитесь, к какому листу относится Cell(7,4). } Изначально открывается файл "Test_Link.xlsx" В нем активный лист с именем "Лист2" К этому файлу и листу относится Cell(7,4). И уже далее к VLookup подтягивается файл "D:\test\bill.xlsx") и лист "Phone". В принципе понятно, часть проверил, работает. Возможно в коде действительно нужно точно указать, что берется из какой книги, листа ... Спасибо, ваш способ чуть позже попробую реализовать...
0
|
859 / 508 / 187
Регистрация: 09.03.2009
Сообщений: 1,713
|
|
21.06.2021, 19:14 | |
Тут надо видеть, как вы файл открываете. Идет ли работа в активном или по указателю.
Если файл внешний, то Set FP = Application.Workbooks.Open(Filename:=FN1 , UpdateLinks:=False, Local:=True) и дальше через FP.Sheet(нужный_лист) работаю.
0
|
6997 / 2895 / 555
Регистрация: 19.10.2012
Сообщений: 8,803
|
|||||||||||
22.06.2021, 11:37 | |||||||||||
Как-то сложно всё в рассуждениях, а суть одна - при каждом применении cells нужно явно указывать родителя.
Удобнее это делать использую with и точку, но можно где-то выше по коду написать как уже упомянуто
0
|
ᴁ ☭
![]() ![]() |
||
22.06.2021, 14:45 | ||
0
|
3 / 3 / 2
Регистрация: 11.01.2019
Сообщений: 121
|
|
24.06.2021, 12:55 [ТС] | |
Добрый день! В продолжении темы, появился вопрос с обработкой ошибки, когда VLookup не находит данные.
Не могу перехватить ошибку, если используется WorksheetFunction.VLookup Не получается использовать: On Error Resume Next Rezult_Logic = IsError(WorksheetFunction.VLookup(Range( ah.Cells(L, H1), ah.Cells(L, H1)), sh.Range(sh.Cells(N1, P1), sh.Cells(N2, P2)), H, 0)) Rezult_Logic всегда False, даже на строках, где данные не найдены. Если используется Application.VLookup - ошибка перехватывается. Тогда строчка выглядит ка книже и все работает. On Error Resume Next Rezult3 = Application.VLookup(Range(ah.Cells(L, H1), ah.Cells(L, H1)), sh.Range(sh.Cells(N1, P1), sh.Cells(N2, P2)), H, 0) Далее могу анализировать Rezult_Logic и на строках, где данные не найдены равен True. Но хотелось бы использовать, если надо и функционал WorksheetFunction.VLookup и научиться перехватывать такие ошибки. Кто поможет? Спасибо!
0
|
859 / 508 / 187
Регистрация: 09.03.2009
Сообщений: 1,713
|
||||||
24.06.2021, 18:15 | ||||||
ykr, какие именно камни? Там все просто:
0
|
859 / 508 / 187
Регистрация: 09.03.2009
Сообщений: 1,713
|
|
25.06.2021, 19:05 | |
Find и тысячи нормально обработает, за приемлемое время. А если хочется мгновенно - переходить на БД и SQL, ключевые поля делать.
0
|
25.06.2021, 19:05 | |
Помогаю со студенческими работами здесь
20
Можно ли и как целиком использовать объект типа WorkSheet.Range.Font Подскажите как access запрос использовать в C# (чтобы запросом можно было и использовать в c#)
Можно ли как-то использовать две переменные в switch?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
![]() |
||||
Blazor и контроллер сервопривода IoT Meadow Maple
Wired 11.07.2025
Я решил разобраться, как можно соединить современные веб-технологии с миром "железа". Интересная комбинация получилась из Blazor в качестве веб-интерфейса и микроконтроллера Meadow с его веб-сервером. . .
|
Генерация OpenQASM из кода Q#
EggHead 10.07.2025
Летом 2024-го я начал эксперименты с библиотекой Q# Bridge, и знаете что? Она оказалась просто находкой для тех, кто работает на стыке разных квантовых экосистем. Основная фишка этой библиотеки -. . .
|
Изучаем новый шаблон ИИ-чата .NET AI Chat Web App
stackOverflow 10.07.2025
В . NET появилось интересное обновление - новый шаблон ИИ-чата под названием . NET AI Chat Web App. Когда я впервые наткнулся на анонс этого шаблона, то сразу понял, что Microsoft наконец-то. . .
|
Результаты исследования от команды ARP (июль 2025 г.)
Programma_Boinc 10.07.2025
Результаты исследования от команды ARP (июль 2025 г. )
Африканский проект по дождям (ARP) World Community Grid снова запущен! Мы рады поделиться обновленной информацией о нашем прогрессе с осени. . .
|
Angular vs Svelte - что лучше?
Reangularity 09.07.2025
Сегодня рынок разделился на несколько четких категорий: тяжеловесы корпоративного уровня (Angular), гибкие универсалы (React), прогрессивные решения (Vue) и новая волна компилируемых фреймворков. . .
|
Code First и Database First в Entity Framework
UnmanagedCoder 09.07.2025
Entity Framework дает нам свободу выбора, предлагая как Code First, так и Database First подходы. Но эта свобода порождает вечный вопрос — какой подход выбрать?
Entity Framework — это. . .
|
Как использовать Bluetooth-модуль HC-05 с Arduino
Wired 08.07.2025
Bluetooth - это технология, созданная чтобы заменить кабельные соединения. Обычно ее используют для связи небольших устройств: мобильных телефонов, ноутбуков, наушников и т. д. Работает она на частоте. . .
|
Руководство по структурам данных Python
AI_Generated 08.07.2025
Я отчетливо помню свои первые серьезные проекты на Python - я писал код, он работал, заказчики были относительно довольны. Но однажды мой наставник, взглянув на мою реализацию поиска по огромному. . .
|
Тестирование энергоэффективности и скорости вычислений видеокарт в BOINC проектах
Programma_Boinc 08.07.2025
Тестирование энергоэффективности и скорости вычислений видеокарт в BOINC проектах
Опубликовано: 07. 07. 2025
Рубрика: Uncategorized
Автор: AlexA
Статья размещается на сайте с разрешения. . .
|
Раскрываем внутренние механики Android с помощью контекста и манифеста
mobDevWorks 07.07.2025
Каждый Android-разработчик сталкивается с Context и манифестом буквально в первый день работы. Но много ли мы задумываемся о том, что скрывается за этими обыденными элементами? Я, честно говоря,. . .
|