Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.08.2010, 18:17   #11
Cone
Форумчанин
 
Регистрация: 05.08.2010
Сообщений: 127
По умолчанию

Цитата:
Сообщение от аналитика Посмотреть сообщение
выделяешь диапазон - правой кнопкой - сортировка - настраиваемая сортировка... - параметры - столбцы диапазона
А макросом это сделать ни как нельзя?!
Cone вне форума Ответить с цитированием
Старый 24.08.2010, 18:49   #12
Cone
Форумчанин
 
Регистрация: 05.08.2010
Сообщений: 127
По умолчанию

Цитата:
Сообщение от аналитика Посмотреть сообщение
выделяешь диапазон - правой кнопкой - сортировка - настраиваемая сортировка... - параметры - столбцы диапазона
Нет так не катит! Все сбивается !! Нужен макрос сортировщик!
Cone вне форума Ответить с цитированием
Старый 24.08.2010, 19:28   #13
Cone
Форумчанин
 
Регистрация: 05.08.2010
Сообщений: 127
По умолчанию

Цитата:
Сообщение от аналитика Посмотреть сообщение
выделяешь диапазон - правой кнопкой - сортировка - настраиваемая сортировка... - параметры - столбцы диапазона
Не так не катит! Все сбивается после такой сортировки!
Cone вне форума Ответить с цитированием
Старый 09.09.2010, 08:16   #14
Cone
Форумчанин
 
Регистрация: 05.08.2010
Сообщений: 127
По умолчанию

Ребята подскажите что тут нужно поменять чтобы макрос обратно работал, т.е. Чтобы скрывались все колонки ВНЕ выделенного диапазона, 8 колонок с данными отображались а другие данные по обеим сторонам скрывались!

With ActiveCell
If .Column < 5 Then Exit Sub
Range(.Offset(0, -4), .Offset(0, 3)).EntireColumn.Hidden = True
End With
Cone вне форума Ответить с цитированием
Старый 09.09.2010, 08:33   #15
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Например, так:
Код:
With ActiveCell
    If .Column < 5 Then Exit Sub
    On Error Resume Next
    Range([A1], .Offset(0, -5)).EntireColumn.Hidden = True
    Range(.Offset(0, 4), Cells(1, Columns.Count)).EntireColumn.Hidden = True
End With
Обратите внимание, что в данном примере умышленно не используется объединение диапазонов Union, т.к. если активная ячейка находится в столбце 5, то диапазон столбцов для скрытия, который находится до видимого диапазона будет отсутствовать. Именно для этого случая осуществляется игнорирование возможной ошибки.
Чем шире угол зрения, тем он тупее.

Последний раз редактировалось SAS888; 09.09.2010 в 08:41.
SAS888 вне форума Ответить с цитированием
Старый 09.09.2010, 09:18   #16
Cone
Форумчанин
 
Регистрация: 05.08.2010
Сообщений: 127
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
Например, так:
Код:
With ActiveCell
    If .Column < 5 Then Exit Sub
    On Error Resume Next
    Range([A1], .Offset(0, -5)).EntireColumn.Hidden = True
    Range(.Offset(0, 4), Cells(1, Columns.Count)).EntireColumn.Hidden = True
End With
Обратите внимание, что в данном примере умышленно не используется объединение диапазонов Union, т.к. если активная ячейка находится в столбце 5, то диапазон столбцов для скрытия, который находится до видимого диапазона будет отсутствовать. Именно для этого случая осуществляется игнорирование возможной ошибки.
Спасибо , все работает просто отлично!
Cone вне форума Ответить с цитированием
Старый 09.09.2010, 14:42   #17
Cone
Форумчанин
 
Регистрация: 05.08.2010
Сообщений: 127
По умолчанию

А как сделать тоже самое но со строками???

Вот так работает но что то не совсем ладно! Как то не понятно скрывает!


With ActiveCell
If .Row < 5 Then Exit Sub
On Error Resume Next
Range([A1], .Offset(0, -5)).EntireRow.Hidden = True
Range(.Offset(0, 4), Cells(1, Rows.Count)).EntireRow.Hidden = True
End With
Cone вне форума Ответить с цитированием
Старый 10.09.2010, 05:45   #18
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

В VBA Excel принято, что сначала задается номер строки, затем номер столбца. Это касается Cells, Offset, Resize и т.п. Т.е. все нужно поставить на свои места. Тогда код будет выглядеть так:
Код:
With ActiveCell
    If .Row < 5 Then Exit Sub
    On Error Resume Next
    Range([A1], .Offset(-5)).EntireRow.Hidden = True
    Range(.Offset(4), Cells(Rows.Count, 1)).EntireRow.Hidden = True
End With
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 10.09.2010, 08:07   #19
Cone
Форумчанин
 
Регистрация: 05.08.2010
Сообщений: 127
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
В VBA Excel принято, что сначала задается номер строки, затем номер столбца. Это касается Cells, Offset, Resize и т.п. Т.е. все нужно поставить на свои места. Тогда код будет выглядеть так:
Код:
With ActiveCell
    If .Row < 5 Then Exit Sub
    On Error Resume Next
    Range([A1], .Offset(-5)).EntireRow.Hidden = True
    Range(.Offset(4), Cells(Rows.Count, 1)).EntireRow.Hidden = True
End With
Этих тонкостей я не знал потому как не так давно заинтересовался макросами! Можете посоветуете что можно почитать по VBA в Excel для ПОЛНЫХ ЧАЙНИКОВ ???!
Cone вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нахождение 2 колонок и умножение HospodySave Microsoft Office Excel 5 06.07.2010 18:40
Удаление Колонок HospodySave Microsoft Office Excel 4 30.06.2010 18:24
Создание колонок Golovastik Microsoft Office Word 1 01.06.2010 09:18
BDgrid сортировка колонок пауэрлифтинг Общие вопросы Delphi 1 13.03.2010 01:03
Синхронизация колонок eImage Microsoft Office Excel 4 13.03.2009 20:42