powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Отсортировать таблицу на не активном листе
13 сообщений из 13, страница 1 из 1
Отсортировать таблицу на не активном листе
    #38526844
Фотография lopuxi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Любой записываемый макрос требует активировать лист и далее производить на нем манипуляции.
Мне бы хотелось по возможности обойти данное ограничение (если это возможно) и провести простейшую сортировку в таблице, по убыванию.

Такая вот упрощенная строчка, не работает. Она собрана из созданного автоматического макроса.
Код: vbnet
1.
WS2.Range(Cells(2, 1), Cells(Sheet2_iRow, 8)).Sort.Orientation = xlTopToBottom
...
Рейтинг: 0 / 0
Отсортировать таблицу на не активном листе
    #38526857
qwerty112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
lopuxiЛюбой записываемый макрос требует активировать лист и далее производить на нем манипуляции.
Мне бы хотелось по возможности обойти данное ограничение (если это возможно) и провести простейшую сортировку в таблице, по убыванию.

Такая вот упрощенная строчка, не работает. Она собрана из созданного автоматического макроса.
Код: vbnet
1.
WS2.Range(Cells(2, 1), Cells(Sheet2_iRow, 8)).Sort.Orientation = xlTopToBottom



а что такое это ваше WS2 ?
и почему для Range - вы его указали, а для Cells - нет ?

воопщем, читать до полного просветления - 12381775
...
Рейтинг: 0 / 0
Отсортировать таблицу на не активном листе
    #38526937
Фотография lopuxi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwerty112,
Думаю не сложно догадаться что если работа с экселем то значит там работа с листами. В данном случаи им присвоены такие вот сокращенные WS и номер 1,2,3.

Код: vbnet
1.
2.
3.
Set WS1 = Excel.Worksheets("Лист1")
Set WS2 = Excel.Worksheets("ЛИСТ2")
Set WS3 = Excel.Worksheets("ЛИСТ3")
...
Рейтинг: 0 / 0
Отсортировать таблицу на не активном листе
    #38526965
qwerty112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
lopuxiqwerty112,
Думаю не сложно догадаться что если работа с экселем то значит там работа с листами. В данном случаи им присвоены такие вот сокращенные WS и номер 1,2,3.

Код: vbnet
1.
2.
3.
Set WS1 = Excel.Worksheets("Лист1")
Set WS2 = Excel.Worksheets("ЛИСТ2")
Set WS3 = Excel.Worksheets("ЛИСТ3")


даа, "догадался", разумееться,
почему про Cells и спросил далее ...
...
Рейтинг: 0 / 0
Отсортировать таблицу на не активном листе
    #38527020
Фотография lopuxi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwerty112,

А что с Cells ? Есть отдельный счетчик который считает строки, тем самым получая диапазону, выделяет его.
Я что-то не уловлю, что тебя смущает?
...
Рейтинг: 0 / 0
Отсортировать таблицу на не активном листе
    #38527146
qwerty112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторА что с Cells ?
это Cells какой страницы ?
...
Рейтинг: 0 / 0
Отсортировать таблицу на не активном листе
    #38527176
iMrTidy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lopuxi,

Код: vbnet
1.
WS2.Range(WS2.Cells(2, 1), WS2.Cells(Sheet2_iRow, 8)).Sort.Orientation = xlTopToBottom
...
Рейтинг: 0 / 0
Отсортировать таблицу на не активном листе
    #38527297
Фотография lopuxi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iMrTidy,

я не понимаю что это мне дает.
Зачем мне присваивать каждому Cells, лист? Когда он обозначен в начале строки, с каким листом мы работаем.

Данная строчка ....

Код: vbnet
1.
WS2.Range(WS2.Cells(2, 1), WS2.Cells(Sheet2_iRow, 8)).Sort.Orientation = xlTopToBottom



Как и моя первоначальная, не верна, она выдает ошибку(код ошибки на картинке). Просто потому что надо писать как то по другому.
...
Рейтинг: 0 / 0
Отсортировать таблицу на не активном листе
    #38527354
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lopuxiЗачем мне присваивать каждому Cells, лист? Когда он обозначен в начале строкиЗатем, что к каждому используемому объекту по большому счету надо прописывать путь
Код: vbnet
1.
Application.Workbooks(1).Worksheets(1).Range(Application.Workbooks(1).Worksheets(1).Cells(2, 1), Application.Workbooks(1).Worksheets(1).Cells(Sheet2_iRow, 8)).Sort.Orientation = xlTopToBottom


Если что-то пропускаешь, значит используются какие-то умолчания, если ты не квалифицируешь Cells, то используется активный лист, если у тебя Range при этом к другому листу - возникнет ошибка

для сокращения записи используются объектные переменные или With
...
Рейтинг: 0 / 0
Отсортировать таблицу на не активном листе
    #38527356
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lopuxiКак и моя первоначальная, не верна, она выдает ошибку(код ошибки на картинке). Просто потому что надо писать как то по другому.может, наконец, выложишь файл с макросом для теста?
...
Рейтинг: 0 / 0
Отсортировать таблицу на не активном листе
    #38527647
iMrTidy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lopuxiiMrTidy,

я не понимаю что это мне дает.
Зачем мне присваивать каждому Cells, лист? Когда он обозначен в начале строки, с каким листом мы работаем.

Данная строчка ....

Код: vbnet
1.
WS2.Range(WS2.Cells(2, 1), WS2.Cells(Sheet2_iRow, 8)).Sort.Orientation = xlTopToBottom



Как и моя первоначальная, не верна, она выдает ошибку(код ошибки на картинке). Просто потому что надо писать как то по другому.

Sort это метод, а используется как свойство, поэтому и ошибка.

Правильно, например, так (сортировка по первой колонке):

Код: vbnet
1.
WS2.Range(WS2.Cells(2, 1), WS2.Cells(Sheet2_iRow, 8)).Sort Key1:=WS2.Range(WS2.Cells(2, 1), WS2.Cells(2, 1)), Order1:=xlDescending, Header:=xlYes



Конкретный пример в приложении.
...
Рейтинг: 0 / 0
Отсортировать таблицу на не активном листе
    #38529811
Фотография alex77755
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насколько частоя сталкивался с такими конструкциями, то вот для Range как раз и не обязательно указывать лист.
А для Cells обязательно если работа не с активным листом:
Код: vbnet
1.
Range(WS2.Cells(2, 1), WS2.Cells(Sheet2_iRow, 8)) '  ........ и далее по тексту
...
Рейтинг: 0 / 0
Отсортировать таблицу на не активном листе
    #38529821
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в любом случае есть Application.Range
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Отсортировать таблицу на не активном листе
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]