Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 06.08.2019
Сообщений: 4

Работа с динамическим диапазоном

06.08.2019, 12:57. Показов 1230. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Просьба сильно не пинать ногами, я только учусь )

Есть макрос, не мой.
Пытаюсь уйти от статических значений, в частности:
Visual Basic
1
    Selection.AutoFill Destination:=Range("M2:M19999"), Type:=xlFillDefault
Можно конечно каждый раз перед выполнением запроса, менять значение, посмотрев сколько строк в таблице.
Но можно же этого не делать.

Пытался сделать вот так:
Visual Basic
1
Selection.Autofill Destination:=Range("M1:M" & Range("A" & Rows.Count).End(xlUp).Row)
Но получал ошибку. (1004)

Собственно, вопрос, куда копать? )
Заранее спасибо.

Макрос
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Sub A()
 
    Application.ScreenUpdating = False
    
    Columns("H:I").Select
    Selection.Insert Shift:=xlToRight
    
    Columns("K:K").Select
    Selection.Copy
    Columns("I:I").Select
    ActiveSheet.Paste
    
    Range("M2").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(RC[-3]<=99,ROUND((RC[-3]+20),0),IF(RC[-3]<=200,ROUND((RC[-3]*1.2),0),IF(RC[-3]<=300,ROUND((RC[-3]*1.1),0),ROUND(RC[-3],0))))"
    
    Selection.AutoFill Destination:=Range("M2:M19999"), Type:=xlFillDefault
   
    Columns("M:M").Select
    Selection.Copy
    Columns("H:H").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
 
    Range("J1").Select
    Selection.Copy
    Range("H1").Select
    ActiveSheet.Paste
    
    Columns("H:H").EntireColumn.AutoFit
        
    Application.ScreenUpdating = True
    
End Sub
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.08.2019, 12:57
Ответы с готовыми решениями:

Поиск данных по добавляющимся листам и динамическим диапазоном
Есть книга, в которой каждый месяц будет добавлять по одному листу. И есть в книге лист с отчетом. Необходимо каждый месяц собирать...

Работа с именным диапазоном
Почему получается такой казус? при назначении имени asdf Visible:=False ActiveWorkbook.Names.Add Name:=&quot;asdf&quot;,...

Использование формул с динамическим диапазоном
Добрый день. Имеется необходимость посчитать входящие и исходящие остатки ДДС для каждой записи по источникам расхода. Исходящие...

6
109 / 60 / 27
Регистрация: 22.02.2018
Сообщений: 189
06.08.2019, 13:39
Если честно не понял в чём задача, но автофильтр я ставлю так:
Visual Basic
1
Rows(1).AutoFilter
или так если через переменную
Visual Basic
1
2
3
Dim n
n = 1 ' номер строки в которую будет поставлен автофильтр
Rows(n).AutoFilter
0
0 / 0 / 0
Регистрация: 06.08.2019
Сообщений: 4
06.08.2019, 14:04  [ТС]
@Aleksan7

Я пытаюсь избежать появления "пустых" строк в конце.
Допустим сегодня файл 100 строк.

Если я оставлю
Range("M2:M19999")

то на выходе получу 100 полезных строк и 19899 строк с цифрой 20 в нескольких ячейках.

Возможно я ошибаюсь и проблема не в этом месте, но тогда я не понимаю в каком )
0
1847 / 1162 / 354
Регистрация: 11.07.2014
Сообщений: 4,107
06.08.2019, 18:17
kazZzantip, у вас выделена ячейка М2, поэтому надо так (не М1, а М3)
Visual Basic
1
Selection.Autofill Destination:=Range("M2:M" & Range("A" & Rows.Count).End(xlUp).Row)
1
0 / 0 / 0
Регистрация: 06.08.2019
Сообщений: 4
06.08.2019, 18:26  [ТС]
Мне подсказали вот такое решение. Работает.

Visual Basic
1
Selection.AutoFill Destination:=Range("M2:M" & ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row)
Добавлено через 1 минуту
Цитата Сообщение от Burk Посмотреть сообщение
kazZzantip, у вас выделена ячейка М2, поэтому надо так (не М1, а М3)
Попробовал, не работает. Та же 1004 ошибка.
0
1847 / 1162 / 354
Регистрация: 11.07.2014
Сообщений: 4,107
06.08.2019, 19:05
kazZzantip, и поправленная мной ваша строка у меня тоже работает - скопировал ваш код и запустил, оба варианта абсолютно эквивалентны

Добавлено через 36 минут
kazZzantip, ошибка при наборе, недосмотрел, должно быть так - поэтому надо так (не М1, а М2) хотя в строке кода у меня набрано правильно
1
0 / 0 / 0
Регистрация: 06.08.2019
Сообщений: 4
06.08.2019, 19:10  [ТС]
Burk - а вот теперь да работает )

Спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.08.2019, 19:10
Помогаю со студенческими работами здесь

Чтение файла и работа диапазоном его чисел
В исходном файле числа, записанные через запятую. Подскажите, пожалуйста, как преобразовать числа ТОЛЬКО ИЗ ЗАДАННОГО ДИАПАЗОНА? Я...

Range работа с диапазоном в Excel - добавление гиперссылки
Не определяется Range У меня такой вот код Как &quot;вписать&quot; в него метод добавления гиперссылки в колонку В файла ексель? class...

Работа с диапазоном дат (выборка праздничных дней календаря)
Помогите дописать скрипт. Осталось выбрать праздничные дни. Условие: Из формы &quot;прилетают&quot; следующие данные: - Дни недели...

Работа с диапазоном бинарных переменных (для VBA SOLVER)
Доброго дня! Вопрос, который возник, представляет собой задачу о рюкзаке/ранце из математического программирования. Каждый элемент...

Работа с динамическим массивом
Помогите, пожалуйста. В чем проблема? Компилирует, но выполнять не хочет. Надо вставить элемент в конец динамического массива, удалить...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru