Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/18: Рейтинг темы: голосов - 18, средняя оценка - 4.50
 Аватар для borro
37 / 5 / 3
Регистрация: 30.11.2011
Сообщений: 538

Как ограничить диапазон использованных ячеек?

13.08.2018, 15:23. Показов 3607. Ответов 10

Author24 — интернет-сервис помощи студентам
Здравствуйте!

Скажите, пожалуйста, как ограничить диапазон ActiveSheet.UsedRange ячейками от A1 до последней ячейки в столбце, в котором в первых 9 строках есть значение "Долгота"?

Добавлено через 50 минут
Попробовал так:
Visual Basic Скопировано
1
2
3
4
5
6
7
    Dim currCell, last As Range
    Set currCell = ActiveSheet.Cells.Find(What:="Долгота", SearchFormat:=False)
    If currCell.Parent.Cells(ActiveSheet.Rows.Count, currCell.Column) <> "" Then _
            last = currCell.Parent.Cells(ActiveSheet.Rows.Count, currCell.Column)
    If currCell.Parent.Cells(ActiveSheet.Rows.Count, currCell.Column) = "" Then _
            last = currCell.Parent.Cells(ActiveSheet.Rows.Count, currCell.Column).End(xlUp)
    Set filled_range2 = Range(ActiveSheet.Cells(1, 1), last)
но что-то не сработало "Object variable or with block variable not set (Error 91)" на втором if
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.08.2018, 15:23
Ответы с готовыми решениями:

Как определить диапазон использованных ячеек?
Проблема в следующем: необходимо данные с листа, которые располагаются в один столбец, поместить в комбобокс. Дело в том, что размер...

Обработать выделенный диапазон ячеек, результат записать в смежный диапазон
Напишите в среде Excel макрос, который в выделенном диапазоне ячеек должен выполнять заданные действия и записывать результат в смежную с...

Как выделить диапазон ячеек?
Объясните ламеру как можно вставить в функцию дапазон &quot;DNosaukums&quot; если известны первая и последняя ячейка. VBA отказывается понимать...

10
oh my god
 Аватар для fever brain
1455 / 795 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
13.08.2018, 15:41
Есть функция защита листа, от изменений от вставок и тд
0
 Аватар для borro
37 / 5 / 3
Регистрация: 30.11.2011
Сообщений: 538
13.08.2018, 15:43  [ТС]
Цитата Сообщение от fever brain Посмотреть сообщение
Есть функция защита листа, от изменений от вставок и тд
Спасибо. Я не так выразился, похоже. Извините.
Метод ActiveSheet.UsedRange выделяет в диапазон больше столбцов, чем нужно. Поэтому конечный диапазон должен быть ограниченным по сравнению с возвращаемым ActiveSheet.UsedRange. При этом столбец с заголовком "Долгота" может плавать от книги к книге как по X, так и по Y. Правее этого столбца бывают данные, которые не надо брать в диапазон
0
oh my god
 Аватар для fever brain
1455 / 795 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
13.08.2018, 16:14
Не понятно вообще что требуется UsedRange возвращает первую и последнюю занятую ячейку
если выше слова *долгота* будет еще чтото то ф-я возвратит высшую точку, также будет с нижней точкой
возможно придется сделать по другому
0
 Аватар для borro
37 / 5 / 3
Регистрация: 30.11.2011
Сообщений: 538
13.08.2018, 16:38  [ТС]
Надо выделить диапазон ячеек от A1 до последней ячейки в столбце, в котором присутствует заголовок Долгота. У вас есть идея, как это можно сделать?
0
oh my god
 Аватар для fever brain
1455 / 795 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
13.08.2018, 16:56
Цитата Сообщение от borro Посмотреть сообщение
У вас есть идея, как это можно сделать
Visual Basic Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Option Explicit
 
Sub Макрос1()
    Dim c1
    With ActiveSheet
        'Находим последнее слово на листе с текстом долгота
        Set c1 = .UsedRange.Find("долгота", , xlFormulas, xlWhole, , xlPrevious)
        
        'выделяем этот диапазон
        .Range([a1], c1).Select
 
    End With
 
End Sub
Миниатюры
Как ограничить диапазон использованных ячеек?  
0
 Аватар для borro
37 / 5 / 3
Регистрация: 30.11.2011
Сообщений: 538
13.08.2018, 17:14  [ТС]
Спасибо. Только под ячейкой со значением "Долгота" тоже будут данные, которые надо включить в диапазон. При этом не факт, что последняя(максимальная по координате Y) заполненная ячейка в столбце, в котором стоит "Долгота", она может быть в любом предыдущем столбце. И максимальную координату Y надо брать по этой самой нижней ячейке. Приложил пример с искомым диапазоном
Вложения
Тип файла: xlsx Пример.xlsx (9.6 Кб, 4 просмотров)
0
oh my god
 Аватар для fever brain
1455 / 795 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
13.08.2018, 17:34
ну так сделай
возьми координаты поиска из c1 и координаты последней заполненной
потом порученный cells вставь в искомый диапазон (Range)
мне самому чтоли это делать ? Может мне зарплату за тебя получить
0
 Аватар для borro
37 / 5 / 3
Регистрация: 30.11.2011
Сообщений: 538
13.08.2018, 18:12  [ТС]
Я пока не знаю, как найти координату Y самой нижней заполненной ячейки, причем из тех, что не правее столбца со значением "Долгота" в одной из ячеек
0
oh my god
 Аватар для fever brain
1455 / 795 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
14.08.2018, 09:34
Лучший ответ Сообщение было отмечено borro как решение

Решение

Visual Basic Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Option Explicit
 
Sub Определитель_долготы()
    Dim r&, cl
    
    With ActiveSheet
    
        'Ищим паследнее слово на листе с текстом долгота
        Set cl = .UsedRange.Find("долгота", SearchDirection:=xlPrevious)
        
        'Находим последний Y в табл
         r = .UsedRange.Row + .UsedRange.Rows.Count - 1
 
        'именуем этот диапазон
        .Range([a1], .Cells(r, cl.Column)).Name = "borro"
        
        'и выделяем его чтобы borro его увидел
        .Range("borro").Select
        
    End With
 
End Sub
Миниатюры
Как ограничить диапазон использованных ячеек?  
1
 Аватар для borro
37 / 5 / 3
Регистрация: 30.11.2011
Сообщений: 538
14.08.2018, 09:57  [ТС]
Спасибо! Добавил в закладки. Хорошего дня!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.08.2018, 09:57
Помогаю со студенческими работами здесь

Как выделить диапазон ячеек ?
Задача простая, но нигде не могу найти как оформить синтаксис Нужно выделить диапазон из ячеек (A3:A1003) Как прописать код,...

Как скопировать непрерывный диапазон ячеек?
Доброго времени суток! Помогите пожалуйста в решении проблемы. Необходимо скопировать диапазон ячеек в столбце (начиная с заданной,...

Как передать в формулу диапазон ячеек?
Здравствуйте, у меня такая проблема.. В общем надо программно работать с матриицей,введенной с листа с помощью RefEdit. A функция не...

Как залить диапазон ячеек в строке по условию
Здравствуйте уважаемые знатоки! Помогите пожалуйста разобраться! Есть таблица в ней есть данные - значение ряда, место начальное, место...

Как распечатать диапазон ячеек без цвета
Всем добрый день! Подскажите пожалуйста, как справится со следующей задачей посредством макроса: В Excel на листе есть диапазон ячеек,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Логирование в C# ASP.NET Core с помощью Serilog, ElasticSearch, Kibana
stackOverflow 25.04.2025
Помните те времена, когда для анализа проблемы приходилось подключаться к серверу, искать нужный лог-файл среди десятков других и вручную фильтровать тысячи строк в поисках ошибки? К счастью, эти дни. . .
Полностью асинхронный счётчик на логике (сумматорах) трёх состояний и асинхронных регистрах трёх состояний. Структура "электронный Buttom Up"
Hrethgir 25.04.2025
Программа для симуляции схемы - Logisim Evolution В общем какое-то время отвлёкся, так было надо, теперь когда запилю это на verilog и FPGA , досоставлю заявку в ФИПС на полезную модель - не готов. . .
Автоматизация Amazon Web Services (AWS) с Boto3 в Python
py-thonny 25.04.2025
Облачные вычисления стали неотъемлемой частью современной ИТ-инфраструктуры, а Amazon Web Services (AWS) занимает лидирующие позиции среди провайдеров облачных услуг. Управление многочисленными. . .
Apache Kafka vs RabbitMQ в микросервисной архитектуре
ArchitectMsa 25.04.2025
Современная разработка ПО всё чаще склоняется к микросервисной архитектуре — подходу, при котором приложение разбивается на множество небольших, автономных сервисов. В этой распределённой среде. . .
Параллельное программирование с OpenMP в C++
NullReferenced 24.04.2025
Параллельное программирование — подход к созданию программ, когда одна задача разбивается на несколько подзадач, которые могут выполняться одновременно. Оно стало необходимым навыком для. . .
Цепочки методов в C# с Fluent API
UnmanagedCoder 24.04.2025
Современное программирование — это не только решение функциональных задач, но и создание кода, который удобно поддерживать, расширять и читать. Цепочки методов и Fluent-синтаксис в C# стали мощным. . .
Мульти-тенантные БД с PostgreSQL Row Security
Codd 23.04.2025
Современные облачные сервисы и бизнес-приложения всё чаще обслуживают множество клиентов в рамках единой программной инфраструктуры. Эта архитектурная модель, известная как мульти-тенантность, стала. . .
Реализация конвейеров машинного обучения с Python и Scikit-learn
AI_Generated 23.04.2025
Мир данных вокруг нас растёт с каждым днём, и умение эффективно обрабатывать информацию стало необходимым навыком. Специалисты по машинному обучению ежедневно сталкиваются с задачами предобработки. . .
Контроллеры Kubernetes Ingress: Сравнительный анализ
Mr. Docker 23.04.2025
В Kubernetes управление входящим трафиком представляет собой одну из ключевых задач при построении масштабируемых и отказоустойчивых приложений. Ingress — это API-объект, который служит вратами. . .
Оптимизация кода Python с Cython и Numba
py-thonny 23.04.2025
Python прочно обосновался в топе языков программирования благодаря своей простоте и гибкости. Разработчики любят его за читабельность кода и богатую экосистему библиотек. Но у этой медали есть и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер