Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/увеличить/уменьшить диапазон заданный макросом - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » увеличить/уменьшить диапазон заданный макросом (Макросы/Sub)
увеличить/уменьшить диапазон заданный макросом
grh1 Дата: Воскресенье, 12.02.2017, 18:16 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 200
Репутация: 0 ±
Замечаний: 40% ±

2019
Уважаемый KuklP подправил макрос формы, в котором задан программно диапазон работы формы с 7 по 30 строку столбцов D и Е.
код:
[vba]
Код
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Dim arr(), lr As Long, i As Long
If Sh.Name = "база" Then Exit Sub
If Target.Column < 4 Or Target.Column > 5 Then Exit Sub
If Target.Row < 7 Or Target.Row > 30 Then Exit Sub
r = Target.Row: c = Target.Column
Select Case Target.Column
Case 4
lr = Sheets(1).Cells(Sheets(1).Rows.Count, "C").End(xlUp).Row
arr() = Sheets(1).Range("C1:C" & lr).Value
Case 5
lr = Sheets(1).Cells(Sheets(1).Rows.Count, "D").End(xlUp).Row
arr() = Sheets(1).Range("D1:D" & lr).Value
End Select
UserForm1.ListBox2.Clear
For i = 2 To UBound(arr)
If arr(i, 1) <> "" Then
UserForm1.ListBox2.AddItem arr(i, 1)
End If
Next i
UserForm1.Show
End Sub
[/vba]
Можно ли учесть в коде возможность уменьшения или увеличения диапазона посредством удаления или добавления строк.
(Например оказалось, что закупок у меня больше чем 30 строк и я простым добавлением строк увеличиваю диапазон действия макроса формы и наоборот при уменьшении).
К сообщению приложен файл: 3086506.zip (69.0 Kb)


Vadym Gorokh

Сообщение отредактировал grh1 - Воскресенье, 12.02.2017, 18:26
 
Ответить
СообщениеУважаемый KuklP подправил макрос формы, в котором задан программно диапазон работы формы с 7 по 30 строку столбцов D и Е.
код:
[vba]
Код
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Dim arr(), lr As Long, i As Long
If Sh.Name = "база" Then Exit Sub
If Target.Column < 4 Or Target.Column > 5 Then Exit Sub
If Target.Row < 7 Or Target.Row > 30 Then Exit Sub
r = Target.Row: c = Target.Column
Select Case Target.Column
Case 4
lr = Sheets(1).Cells(Sheets(1).Rows.Count, "C").End(xlUp).Row
arr() = Sheets(1).Range("C1:C" & lr).Value
Case 5
lr = Sheets(1).Cells(Sheets(1).Rows.Count, "D").End(xlUp).Row
arr() = Sheets(1).Range("D1:D" & lr).Value
End Select
UserForm1.ListBox2.Clear
For i = 2 To UBound(arr)
If arr(i, 1) <> "" Then
UserForm1.ListBox2.AddItem arr(i, 1)
End If
Next i
UserForm1.Show
End Sub
[/vba]
Можно ли учесть в коде возможность уменьшения или увеличения диапазона посредством удаления или добавления строк.
(Например оказалось, что закупок у меня больше чем 30 строк и я простым добавлением строк увеличиваю диапазон действия макроса формы и наоборот при уменьшении).

Автор - grh1
Дата добавления - 12.02.2017 в 18:16
Pelena Дата: Воскресенье, 12.02.2017, 18:41 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 19184
Репутация: 4420 ±
Замечаний: ±

Excel 365 & Mac Excel
Либо исправить число 30 на бОльшее/меньшее, либо "объяснить" программе, к чему можно привязаться для определения последней строки. В Вашем примере есть какое-то условие, которое определяет последнюю строку?


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеЛибо исправить число 30 на бОльшее/меньшее, либо "объяснить" программе, к чему можно привязаться для определения последней строки. В Вашем примере есть какое-то условие, которое определяет последнюю строку?

Автор - Pelena
Дата добавления - 12.02.2017 в 18:41
grh1 Дата: Воскресенье, 12.02.2017, 18:46 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 200
Репутация: 0 ±
Замечаний: 40% ±

2019
Либо исправить число 30 на бОльшее/меньшее

Это я понимаю, но не годится так - каждый раз править код в зависимости от количества закупок.
Привязаться можно к строке 7 или ячейки D7 и Е7 - они постоянны - меньше одной строки ж не будет.


Vadym Gorokh
 
Ответить
Сообщение
Либо исправить число 30 на бОльшее/меньшее

Это я понимаю, но не годится так - каждый раз править код в зависимости от количества закупок.
Привязаться можно к строке 7 или ячейки D7 и Е7 - они постоянны - меньше одной строки ж не будет.

Автор - grh1
Дата добавления - 12.02.2017 в 18:46
Pelena Дата: Воскресенье, 12.02.2017, 18:48 | Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 19184
Репутация: 4420 ±
Замечаний: ±

Excel 365 & Mac Excel
Вам же последнюю строку надо определить, а не первую.
Например, найти строку со словом Начальник в первом столбце и вычесть 5. Это будет правильно?


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеВам же последнюю строку надо определить, а не первую.
Например, найти строку со словом Начальник в первом столбце и вычесть 5. Это будет правильно?

Автор - Pelena
Дата добавления - 12.02.2017 в 18:48
grh1 Дата: Воскресенье, 12.02.2017, 18:52 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 200
Репутация: 0 ±
Замечаний: 40% ±

2019
Вам же последнюю строку надо определить, а не первую

В этом и трудность. Я не знаю сколько завтра будет закупок - 10-15 а может 40-50.

Если 10, то надо удалять лишние строки, а если 50 , то добавлять. Какого-то условия, чтобы макрос понял что ВСЁ - нет.


Vadym Gorokh
 
Ответить
Сообщение
Вам же последнюю строку надо определить, а не первую

В этом и трудность. Я не знаю сколько завтра будет закупок - 10-15 а может 40-50.

Если 10, то надо удалять лишние строки, а если 50 , то добавлять. Какого-то условия, чтобы макрос понял что ВСЁ - нет.

Автор - grh1
Дата добавления - 12.02.2017 в 18:52
Pelena Дата: Воскресенье, 12.02.2017, 18:55 | Сообщение № 6
Группа: Админы
Ранг: Местный житель
Сообщений: 19184
Репутация: 4420 ±
Замечаний: ±

Excel 365 & Mac Excel
По слову Начальник или по последней заполненной ячейке в столбце F. Нет?


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеПо слову Начальник или по последней заполненной ячейке в столбце F. Нет?

Автор - Pelena
Дата добавления - 12.02.2017 в 18:55
grh1 Дата: Воскресенье, 12.02.2017, 18:56 | Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 200
Репутация: 0 ±
Замечаний: 40% ±

2019
можно поставить в конце таблицы (где сумма) слово "ВСЕГО:" и от него плясать? Не знаю...


Vadym Gorokh
 
Ответить
Сообщениеможно поставить в конце таблицы (где сумма) слово "ВСЕГО:" и от него плясать? Не знаю...

Автор - grh1
Дата добавления - 12.02.2017 в 18:56
grh1 Дата: Воскресенье, 12.02.2017, 18:58 | Сообщение № 8
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 200
Репутация: 0 ±
Замечаний: 40% ±

2019
по последней заполненной ячейке в столбце F

Да годится так.


Vadym Gorokh
 
Ответить
Сообщение
по последней заполненной ячейке в столбце F

Да годится так.

Автор - grh1
Дата добавления - 12.02.2017 в 18:58
Pelena Дата: Воскресенье, 12.02.2017, 18:58 | Сообщение № 9
Группа: Админы
Ранг: Местный житель
Сообщений: 19184
Репутация: 4420 ±
Замечаний: ±

Excel 365 & Mac Excel
Ну Вы определитесь, а там придумаем что-нибудь


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеНу Вы определитесь, а там придумаем что-нибудь

Автор - Pelena
Дата добавления - 12.02.2017 в 18:58
grh1 Дата: Воскресенье, 12.02.2017, 19:00 | Сообщение № 10
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 200
Репутация: 0 ±
Замечаний: 40% ±

2019
по последней заполненной наверно правильно


Vadym Gorokh
 
Ответить
Сообщениепо последней заполненной наверно правильно

Автор - grh1
Дата добавления - 12.02.2017 в 19:00
Pelena Дата: Воскресенье, 12.02.2017, 19:05 | Сообщение № 11
Группа: Админы
Ранг: Местный житель
Сообщений: 19184
Репутация: 4420 ±
Замечаний: ±

Excel 365 & Mac Excel
В том макросе, который Вы привели в первом посте есть строчка, которая определяет последнюю заполненную строку в столбце С
[vba]
Код
lr = Sheets(1).Cells(Sheets(1).Rows.Count, "C").End(xlUp).Row
[/vba]
Вопрос: что надо изменить, чтобы определить последнюю заполненную строку в столбце F?
Ну и немного теории http://www.excel-vba.ru/chto-um....rez-vba


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеВ том макросе, который Вы привели в первом посте есть строчка, которая определяет последнюю заполненную строку в столбце С
[vba]
Код
lr = Sheets(1).Cells(Sheets(1).Rows.Count, "C").End(xlUp).Row
[/vba]
Вопрос: что надо изменить, чтобы определить последнюю заполненную строку в столбце F?
Ну и немного теории http://www.excel-vba.ru/chto-um....rez-vba

Автор - Pelena
Дата добавления - 12.02.2017 в 19:05
grh1 Дата: Воскресенье, 12.02.2017, 19:36 | Сообщение № 12
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 200
Репутация: 0 ±
Замечаний: 40% ±

2019
вот код, который показывает номер 6-го столбца (F), последнюю заполненную ячейку в котором мы определяем
[vba]
Код
lLastRow = Cells(Rows.Count,6).End(xlUp).Row
[/vba]
но я не понимаю, что он мне дает этот код?


Vadym Gorokh
 
Ответить
Сообщениевот код, который показывает номер 6-го столбца (F), последнюю заполненную ячейку в котором мы определяем
[vba]
Код
lLastRow = Cells(Rows.Count,6).End(xlUp).Row
[/vba]
но я не понимаю, что он мне дает этот код?

Автор - grh1
Дата добавления - 12.02.2017 в 19:36
Wasilich Дата: Воскресенье, 12.02.2017, 19:39 | Сообщение № 13
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация: 326 ±
Замечаний: 0% ±

2003
А просто скрыть пустые строки, низззя? :)
 
Ответить
СообщениеА просто скрыть пустые строки, низззя? :)

Автор - Wasilich
Дата добавления - 12.02.2017 в 19:39
grh1 Дата: Воскресенье, 12.02.2017, 19:55 | Сообщение № 14
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 200
Репутация: 0 ±
Замечаний: 40% ±

2019
идеальный вариант был бы такой:
при заполнении ячейки F7


как это сделать, я не знаю


Vadym Gorokh

Сообщение отредактировал grh1 - Воскресенье, 12.02.2017, 20:05
 
Ответить
Сообщениеидеальный вариант был бы такой:
при заполнении ячейки F7


как это сделать, я не знаю

Автор - grh1
Дата добавления - 12.02.2017 в 19:55
Pelena Дата: Воскресенье, 12.02.2017, 20:30 | Сообщение № 15
Группа: Админы
Ранг: Местный житель
Сообщений: 19184
Репутация: 4420 ±
Замечаний: ±

Excel 365 & Mac Excel
что он мне дает этот код?
В макросе вместо 30 поставить lLastRow

идеальный вариант
может, тогда посмотреть в сторону Умных таблиц


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщение
что он мне дает этот код?
В макросе вместо 30 поставить lLastRow

идеальный вариант
может, тогда посмотреть в сторону Умных таблиц

Автор - Pelena
Дата добавления - 12.02.2017 в 20:30
Мир MS Excel » Вопросы и решения » Вопросы по VBA » увеличить/уменьшить диапазон заданный макросом (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!