Изменение размера динамической таблицы макросом.
AwdBor
Дата: Четверг, 09.07.2015, 03:50 |
Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 37
Репутация:
0
±
Замечаний:
20% ±
Excel 2013
Искал в на форуме и вообще в инете, но не нашёл. Вопрос к профессионалам. Есть ли в Excel 2013 возможность изменять размер динамической таблицы по вертикали при помощи макроса?
Искал в на форуме и вообще в инете, но не нашёл. Вопрос к профессионалам. Есть ли в Excel 2013 возможность изменять размер динамической таблицы по вертикали при помощи макроса? AwdBor
Ответить
Сообщение Искал в на форуме и вообще в инете, но не нашёл. Вопрос к профессионалам. Есть ли в Excel 2013 возможность изменять размер динамической таблицы по вертикали при помощи макроса? Автор - AwdBor Дата добавления - 09.07.2015 в 03:50
_Boroda_
Дата: Четверг, 09.07.2015, 07:43 |
Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 16718
Репутация:
6505
±
Замечаний:
±
2003; 2007; 2010; 2013 RUS
Вы про это? [vba]Код
ActiveSheet.ListObjects("Таблица1").Resize Range("$A$1:$B$4")
[/vba]
Вы про это? [vba]Код
ActiveSheet.ListObjects("Таблица1").Resize Range("$A$1:$B$4")
[/vba] _Boroda_
Скажи мне, кудесник, любимец ба’гов... Платная помощь: Boroda_Excel@mail.ru Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
Ответить
Сообщение Вы про это? [vba]Код
ActiveSheet.ListObjects("Таблица1").Resize Range("$A$1:$B$4")
[/vba] Автор - _Boroda_ Дата добавления - 09.07.2015 в 07:43
AwdBor
Дата: Четверг, 09.07.2015, 08:28 |
Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 37
Репутация:
0
±
Замечаний:
20% ±
Excel 2013
_Boroda_, про это да не совсем. Чтобы этот вопрос решался рекордером - я бы не спрашивал) Допустим, таблица содержит 500 строк. И периодически появляется необходимость передвинуть нижнюю границу таблицы, к примеру, в начало. На строку номер 20. А потом опять вниз передвинуть, на строку 150 и т.д. В примере на Лист1 таблица, в которой данные зависят от размера таблицы на Лист2. На Лист1 вверху кнопки. Щелк мышкой по "5 вниз" - и нижняя граница таблицы на Лист2 на 5 строк вниз опустилась (независимо от того, какого размера была изначально). Еще раз щёлкнуть - и нижняя граница таблицы уже в итоге на 10 строк ниже стала. Щёлк мышкой по "1 вверх" - и нижняя граница таблицы на Лист2 поднялась вверх на одну строку и т.д. Т.е. на фактически для такой задачи нужны четыре макроса. Если я правильно понимаю, надо объявлять переменные вместо $A$1:$B$4 , а то еще и циклы использовать? Или проще будет убрать так называемую умную таблицу и колдовать при помощи СМЕЩ, СУММЕСЛИ и т.п.?
_Boroda_, про это да не совсем. Чтобы этот вопрос решался рекордером - я бы не спрашивал) Допустим, таблица содержит 500 строк. И периодически появляется необходимость передвинуть нижнюю границу таблицы, к примеру, в начало. На строку номер 20. А потом опять вниз передвинуть, на строку 150 и т.д. В примере на Лист1 таблица, в которой данные зависят от размера таблицы на Лист2. На Лист1 вверху кнопки. Щелк мышкой по "5 вниз" - и нижняя граница таблицы на Лист2 на 5 строк вниз опустилась (независимо от того, какого размера была изначально). Еще раз щёлкнуть - и нижняя граница таблицы уже в итоге на 10 строк ниже стала. Щёлк мышкой по "1 вверх" - и нижняя граница таблицы на Лист2 поднялась вверх на одну строку и т.д. Т.е. на фактически для такой задачи нужны четыре макроса. Если я правильно понимаю, надо объявлять переменные вместо $A$1:$B$4 , а то еще и циклы использовать? Или проще будет убрать так называемую умную таблицу и колдовать при помощи СМЕЩ, СУММЕСЛИ и т.п.? AwdBor
Сообщение отредактировал AwdBor - Четверг, 09.07.2015, 08:37
Ответить
Сообщение _Boroda_, про это да не совсем. Чтобы этот вопрос решался рекордером - я бы не спрашивал) Допустим, таблица содержит 500 строк. И периодически появляется необходимость передвинуть нижнюю границу таблицы, к примеру, в начало. На строку номер 20. А потом опять вниз передвинуть, на строку 150 и т.д. В примере на Лист1 таблица, в которой данные зависят от размера таблицы на Лист2. На Лист1 вверху кнопки. Щелк мышкой по "5 вниз" - и нижняя граница таблицы на Лист2 на 5 строк вниз опустилась (независимо от того, какого размера была изначально). Еще раз щёлкнуть - и нижняя граница таблицы уже в итоге на 10 строк ниже стала. Щёлк мышкой по "1 вверх" - и нижняя граница таблицы на Лист2 поднялась вверх на одну строку и т.д. Т.е. на фактически для такой задачи нужны четыре макроса. Если я правильно понимаю, надо объявлять переменные вместо $A$1:$B$4 , а то еще и циклы использовать? Или проще будет убрать так называемую умную таблицу и колдовать при помощи СМЕЩ, СУММЕСЛИ и т.п.? Автор - AwdBor Дата добавления - 09.07.2015 в 08:28
ikki
Дата: Четверг, 09.07.2015, 08:57 |
Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация:
504
±
Замечаний:
0% ±
Excel 2003, 2010
а зачем?
помощь по Excel и VBA ikki@fxmail.ru, icq 592842413, skype alex.ikki
Ответить
Сообщение а зачем? Автор - ikki Дата добавления - 09.07.2015 в 08:57
AwdBor
Дата: Четверг, 09.07.2015, 09:21 |
Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 37
Репутация:
0
±
Замечаний:
20% ±
Excel 2013
ikki, с какой целью интересуетесь? для лучшего восприятия информации, ага) а то пока "врукопашную" перейдешь на Лист2, сдвинешь таблицу и вернешься на Лист1 - вся наглядность улетучилась. только лишняя нагрузка на глаза осталась.
ikki, с какой целью интересуетесь? для лучшего восприятия информации, ага) а то пока "врукопашную" перейдешь на Лист2, сдвинешь таблицу и вернешься на Лист1 - вся наглядность улетучилась. только лишняя нагрузка на глаза осталась. AwdBor
Ответить
Сообщение ikki, с какой целью интересуетесь? для лучшего восприятия информации, ага) а то пока "врукопашную" перейдешь на Лист2, сдвинешь таблицу и вернешься на Лист1 - вся наглядность улетучилась. только лишняя нагрузка на глаза осталась. Автор - AwdBor Дата добавления - 09.07.2015 в 09:21
_Boroda_
Дата: Четверг, 09.07.2015, 09:29 |
Сообщение № 6
Группа: Админы
Ранг: Местный житель
Сообщений: 16718
Репутация:
6505
±
Замечаний:
±
2003; 2007; 2010; 2013 RUS
Чтобы этот вопрос решался рекордером - я бы не спрашивал)
Дык, откуда ж я знал-то, Вы ж не написали. ну тогда так [vba]Код
Sub Pl_5() n_ = 5 ad0_ = Лист2.ListObjects("Таблица1").Range.Address h0_ = Range(ad0_).Rows.Count ad1_ = Range(ad0_).Resize(h0_ + n_).Address Лист2.ListObjects("Таблица1").Resize Range(ad1_) End Sub
[/vba] Правда, я тоже не совсем понимаю тайного смысла всего этого, ну да дело Ваше - спрашиваете, значит, нужно.
Чтобы этот вопрос решался рекордером - я бы не спрашивал)
Дык, откуда ж я знал-то, Вы ж не написали. ну тогда так [vba]Код
Sub Pl_5() n_ = 5 ad0_ = Лист2.ListObjects("Таблица1").Range.Address h0_ = Range(ad0_).Rows.Count ad1_ = Range(ad0_).Resize(h0_ + n_).Address Лист2.ListObjects("Таблица1").Resize Range(ad1_) End Sub
[/vba] Правда, я тоже не совсем понимаю тайного смысла всего этого, ну да дело Ваше - спрашиваете, значит, нужно._Boroda_
Скажи мне, кудесник, любимец ба’гов... Платная помощь: Boroda_Excel@mail.ru Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
Ответить
Сообщение Чтобы этот вопрос решался рекордером - я бы не спрашивал)
Дык, откуда ж я знал-то, Вы ж не написали. ну тогда так [vba]Код
Sub Pl_5() n_ = 5 ad0_ = Лист2.ListObjects("Таблица1").Range.Address h0_ = Range(ad0_).Rows.Count ad1_ = Range(ad0_).Resize(h0_ + n_).Address Лист2.ListObjects("Таблица1").Resize Range(ad1_) End Sub
[/vba] Правда, я тоже не совсем понимаю тайного смысла всего этого, ну да дело Ваше - спрашиваете, значит, нужно.Автор - _Boroda_ Дата добавления - 09.07.2015 в 09:29
AwdBor
Дата: Четверг, 09.07.2015, 09:35 |
Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 37
Репутация:
0
±
Замечаний:
20% ±
Excel 2013
Сообщение отредактировал AwdBor - Четверг, 09.07.2015, 09:39
Ответить
AwdBor
Дата: Четверг, 09.07.2015, 15:53 |
Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 37
Репутация:
0
±
Замечаний:
20% ±
Excel 2013
_Boroda_ , Вам почёт и уважение. Все шикарно получилось и всё отлично работает.
_Boroda_ , Вам почёт и уважение. Все шикарно получилось и всё отлично работает.AwdBor
Ответить
Сообщение _Boroda_ , Вам почёт и уважение. Все шикарно получилось и всё отлично работает.Автор - AwdBor Дата добавления - 09.07.2015 в 15:53
AwdBor
Дата: Суббота, 11.07.2015, 19:21 |
Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 37
Репутация:
0
±
Замечаний:
20% ±
Excel 2013
_Boroda_ , оказывается, если переименовать лист, то макрос выдаёт ошибку. Таблицу переименовывать можно. А лист нет. [vba]Код
Sub Вниз5() n_ = 5 [color=red]ad0_ = Сумма.ListObjects("Общее").Range.Address[/color] h0_ = Range(ad0_).Rows.Count ad1_ = Range(ad0_).Resize(h0_ + n_).Address Сумма.ListObjects("Общее").Resize Range(ad1_) End Sub
[/vba] [moder]Оформляйте коды кнопкой # [/moder]
_Boroda_ , оказывается, если переименовать лист, то макрос выдаёт ошибку. Таблицу переименовывать можно. А лист нет. [vba]Код
Sub Вниз5() n_ = 5 [color=red]ad0_ = Сумма.ListObjects("Общее").Range.Address[/color] h0_ = Range(ad0_).Rows.Count ad1_ = Range(ad0_).Resize(h0_ + n_).Address Сумма.ListObjects("Общее").Resize Range(ad1_) End Sub
[/vba] [moder]Оформляйте коды кнопкой # [/moder]AwdBor
Сообщение отредактировал Manyasha - Суббота, 11.07.2015, 19:25
Ответить
Сообщение _Boroda_ , оказывается, если переименовать лист, то макрос выдаёт ошибку. Таблицу переименовывать можно. А лист нет. [vba]Код
Sub Вниз5() n_ = 5 [color=red]ad0_ = Сумма.ListObjects("Общее").Range.Address[/color] h0_ = Range(ad0_).Rows.Count ad1_ = Range(ad0_).Resize(h0_ + n_).Address Сумма.ListObjects("Общее").Resize Range(ad1_) End Sub
[/vba] [moder]Оформляйте коды кнопкой # [/moder]Автор - AwdBor Дата добавления - 11.07.2015 в 19:21
AwdBor
Дата: Суббота, 11.07.2015, 19:28 |
Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 37
Репутация:
0
±
Замечаний:
20% ±
Excel 2013
[vba]Код
ad0_ = Сумма.ListObjects("Общее").Range.Address
[/vba] Вот эту строку подсвечивает, в общем. А то с [color=red] так ясное дело, что ошибка будет, угу
[vba]Код
ad0_ = Сумма.ListObjects("Общее").Range.Address
[/vba] Вот эту строку подсвечивает, в общем. А то с [color=red] так ясное дело, что ошибка будет, угу AwdBor
Ответить
Сообщение [vba]Код
ad0_ = Сумма.ListObjects("Общее").Range.Address
[/vba] Вот эту строку подсвечивает, в общем. А то с [color=red] так ясное дело, что ошибка будет, угу Автор - AwdBor Дата добавления - 11.07.2015 в 19:28
RAN
Дата: Суббота, 11.07.2015, 19:32 |
Сообщение № 11
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
А вы всерьез полагаете, что "Лист2" или "Сумма" это имя листа? Смею вас разочаровать, это кодовое имя ("CodeName")
А вы всерьез полагаете, что "Лист2" или "Сумма" это имя листа? Смею вас разочаровать, это кодовое имя ("CodeName") RAN
Быть или не быть, вот в чем загвоздка!
Ответить
Сообщение А вы всерьез полагаете, что "Лист2" или "Сумма" это имя листа? Смею вас разочаровать, это кодовое имя ("CodeName") Автор - RAN Дата добавления - 11.07.2015 в 19:32
AwdBor
Дата: Суббота, 11.07.2015, 19:42 |
Сообщение № 12
Группа: Пользователи
Ранг: Новичок
Сообщений: 37
Репутация:
0
±
Замечаний:
20% ±
Excel 2013
RAN, попробуйте переименовать Лист2 в Лист3, например. Надо копать глубже? И как задать любое имя листа в таком случае?
RAN, попробуйте переименовать Лист2 в Лист3, например. Надо копать глубже? И как задать любое имя листа в таком случае? AwdBor
Сообщение отредактировал AwdBor - Суббота, 11.07.2015, 19:43
Ответить
Сообщение RAN, попробуйте переименовать Лист2 в Лист3, например. Надо копать глубже? И как задать любое имя листа в таком случае? Автор - AwdBor Дата добавления - 11.07.2015 в 19:42
RAN
Дата: Суббота, 11.07.2015, 19:44 |
Сообщение № 13
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Я это сделаю без проблем. Я буду менять не имя, а кодовое имя. Если привязываться к имени листа [vba][/vba]
Я это сделаю без проблем. Я буду менять не имя, а кодовое имя. Если привязываться к имени листа [vba][/vba] RAN
Быть или не быть, вот в чем загвоздка!
Сообщение отредактировал RAN - Суббота, 11.07.2015, 19:46
Ответить
Сообщение Я это сделаю без проблем. Я буду менять не имя, а кодовое имя. Если привязываться к имени листа [vba][/vba] Автор - RAN Дата добавления - 11.07.2015 в 19:44
AwdBor
Дата: Суббота, 11.07.2015, 19:55 |
Сообщение № 14
Группа: Пользователи
Ранг: Новичок
Сообщений: 37
Репутация:
0
±
Замечаний:
20% ±
Excel 2013
RAN, так уже и я тогда без проблем так сделаю Же ву ремерси за пояснение - как говорят у нас в селе))
RAN, так уже и я тогда без проблем так сделаю Же ву ремерси за пояснение - как говорят у нас в селе)) AwdBor
Ответить
Сообщение RAN, так уже и я тогда без проблем так сделаю Же ву ремерси за пояснение - как говорят у нас в селе)) Автор - AwdBor Дата добавления - 11.07.2015 в 19:55
_Boroda_
Дата: Суббота, 11.07.2015, 19:59 |
Сообщение № 15
Группа: Админы
Ранг: Местный житель
Сообщений: 16718
Репутация:
6505
±
Замечаний:
±
2003; 2007; 2010; 2013 RUS
Скажи мне, кудесник, любимец ба’гов... Платная помощь: Boroda_Excel@mail.ru Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
Ответить
RAN
Дата: Суббота, 11.07.2015, 20:09 |
Сообщение № 16
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
А у меня все последние макросы сполош напиханы [vba]Код
with shИмячко.ListObjects(1)
[/vba] Притомился...
А у меня все последние макросы сполош напиханы [vba]Код
with shИмячко.ListObjects(1)
[/vba] Притомился... RAN
Быть или не быть, вот в чем загвоздка!
Сообщение отредактировал RAN - Суббота, 11.07.2015, 20:09
Ответить
Сообщение А у меня все последние макросы сполош напиханы [vba]Код
with shИмячко.ListObjects(1)
[/vba] Притомился... Автор - RAN Дата добавления - 11.07.2015 в 20:09
OIU
Дата: Понедельник, 14.03.2016, 19:58 |
Сообщение № 17
Группа: Пользователи
Ранг: Новичок
Сообщений: 48
Репутация:
3
±
Замечаний:
0% ±
Excel 2013
[vba]Код
Public Function Name_list(NameTabl As String) As String Dim lst As ListObject ' Переменная как лист-объект Dim wsh As Worksheet ' Переменная как рабочий лист Dim wshs As Sheets ' Переменная как листы Set wshs = ThisWorkbook.Worksheets For Each wsh In wshs For Each lst In wsh.ListObjects If lst.Name = NameTabl Then Name_list = wsh.Name: Exit Function Next Next End Function
[/vba] В модуль можно вставить данную функцию и там где потребуется получить имя листа для конкретной таблицы, нужно написать: [vba]Код
Set rngTable = Sheets(Name_list("ИмяТаблицы")).ListObjects("ИмяТаблицы")
[/vba] В итоге - можно менять названия листов и изменять порядок листов не зависимо .
[vba]Код
Public Function Name_list(NameTabl As String) As String Dim lst As ListObject ' Переменная как лист-объект Dim wsh As Worksheet ' Переменная как рабочий лист Dim wshs As Sheets ' Переменная как листы Set wshs = ThisWorkbook.Worksheets For Each wsh In wshs For Each lst In wsh.ListObjects If lst.Name = NameTabl Then Name_list = wsh.Name: Exit Function Next Next End Function
[/vba] В модуль можно вставить данную функцию и там где потребуется получить имя листа для конкретной таблицы, нужно написать: [vba]Код
Set rngTable = Sheets(Name_list("ИмяТаблицы")).ListObjects("ИмяТаблицы")
[/vba] В итоге - можно менять названия листов и изменять порядок листов не зависимо . OIU
С уважением Евгений Ковель
Ответить
Сообщение [vba]Код
Public Function Name_list(NameTabl As String) As String Dim lst As ListObject ' Переменная как лист-объект Dim wsh As Worksheet ' Переменная как рабочий лист Dim wshs As Sheets ' Переменная как листы Set wshs = ThisWorkbook.Worksheets For Each wsh In wshs For Each lst In wsh.ListObjects If lst.Name = NameTabl Then Name_list = wsh.Name: Exit Function Next Next End Function
[/vba] В модуль можно вставить данную функцию и там где потребуется получить имя листа для конкретной таблицы, нужно написать: [vba]Код
Set rngTable = Sheets(Name_list("ИмяТаблицы")).ListObjects("ИмяТаблицы")
[/vba] В итоге - можно менять названия листов и изменять порядок листов не зависимо . Автор - OIU Дата добавления - 14.03.2016 в 19:58
RAN
Дата: Понедельник, 14.03.2016, 20:18 |
Сообщение № 18
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
[vba]Код
Function Name_list(NameTabl As String) As String Name_list = Range(NameTabl).Parent.Name End Function
[/vba]
[vba]Код
Function Name_list(NameTabl As String) As String Name_list = Range(NameTabl).Parent.Name End Function
[/vba] RAN
Быть или не быть, вот в чем загвоздка!
Сообщение отредактировал RAN - Понедельник, 14.03.2016, 20:20
Ответить
Сообщение [vba]Код
Function Name_list(NameTabl As String) As String Name_list = Range(NameTabl).Parent.Name End Function
[/vba] Автор - RAN Дата добавления - 14.03.2016 в 20:18
OIU
Дата: Понедельник, 14.03.2016, 20:34 |
Сообщение № 19
Группа: Пользователи
Ранг: Новичок
Сообщений: 48
Репутация:
3
±
Замечаний:
0% ±
Excel 2013
Function Name_list(NameTabl As String) As String Name_list = Range(NameTabl).Parent.Name End Function
Ну и чудеса... "Век живи - век учись!"
Function Name_list(NameTabl As String) As String Name_list = Range(NameTabl).Parent.Name End Function
Ну и чудеса... "Век живи - век учись!"OIU
С уважением Евгений Ковель
Ответить
Сообщение Function Name_list(NameTabl As String) As String Name_list = Range(NameTabl).Parent.Name End Function
Ну и чудеса... "Век живи - век учись!"Автор - OIU Дата добавления - 14.03.2016 в 20:34
OIU
Дата: Четверг, 14.07.2016, 18:00 |
Сообщение № 20
Группа: Пользователи
Ранг: Новичок
Сообщений: 48
Репутация:
3
±
Замечаний:
0% ±
Excel 2013
RAN , данный код просит небольшого дополнения) [vba]Код
Function Name_list(NameTabl As String) As String ThisWorkbook.Activate Name_list = Range(NameTabl).Parent.Name End Function
[/vba] Иначе выдаёт ошибку если открыто несколько книг. По крайней мере у меня так было. Может есть и другой вариант)
RAN , данный код просит небольшого дополнения) [vba]Код
Function Name_list(NameTabl As String) As String ThisWorkbook.Activate Name_list = Range(NameTabl).Parent.Name End Function
[/vba] Иначе выдаёт ошибку если открыто несколько книг. По крайней мере у меня так было. Может есть и другой вариант)OIU
С уважением Евгений Ковель
Ответить
Сообщение RAN , данный код просит небольшого дополнения) [vba]Код
Function Name_list(NameTabl As String) As String ThisWorkbook.Activate Name_list = Range(NameTabl).Parent.Name End Function
[/vba] Иначе выдаёт ошибку если открыто несколько книг. По крайней мере у меня так было. Может есть и другой вариант)Автор - OIU Дата добавления - 14.07.2016 в 18:00