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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.05.2012, 03:31   #1
Trimbl
Форумчанин
 
Регистрация: 11.08.2009
Сообщений: 135
По умолчанию Ориентация текста в ячейке при условии

Здравствуйте, ВСЕ!
Есть объедененная ячейка в которой текст ориентирован горизонтально, необходимо изменить ориентацию текста на вертикальную при условии, когда число видимых объедененных ячеек становиться меньше 3(в результате скрытия столбцов). Наивно пологал, что приведенный ниже код справится с задачей, но он видит скрытые столбцы. А, что делать не знаю.
Вырезать, вставлять, поворачивать, возвращать назад вырезанное -громоздко, а может быть есть другое решение? Спасибо за внимание.

With ActiveCell
If .MergeArea.Columns.Count < 3 Then
.Orientation = 90
.Interior.Color = RGB(255, 255, 0)
Else
.Interior.Color = RGB(135, 135, 137)
End If
End With
Trimbl вне форума Ответить с цитированием
Старый 31.05.2012, 06:55   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

1. В выбранном диапазоне, методом SpecialCells, нужно указать "видимые" ячейки.
2. При подсчете столбцов, будет посчитано количество столбцов ТОЛЬКО в непрерывном диапазоне, в котором находится активная ячейка. Так, например, если объединены 5 ячеек в строке и при этом скрыт 2-й столбец, то результат Columns.Count будет равен 1. Поэтому, считать нужно не столбцы, а ячейки.
3. Простой подсчет ячеек объединенного диапазона даст правильный результат только в том случае, если объединенные ячейки находятся в 1-ой строке. Если объединенная область содержит более 1-ой строки, то, естественно, количество ячеек нужно поделить на количество строк.
Т.е. Вам нужно строку
Код:
If .MergeArea.Columns.Count < 3 Then
заменить на
Код:
If .MergeArea.SpecialCells(xlCellTypeVisible).Cells.Count / .MergeArea.Rows.Count < 3 Then
И еще, для предотвращения возможных недоразумений, лучше предварительно проверять, принадлежит ли ячейка к объединенной области. Например, так:
Код:
If ActiveCell.MergeCells Then
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как создать 4 условии в одной ячейке? Асясяся Помощь студентам 6 11.10.2011 12:59
Ориентация страницы при выводе на печать Botanik1987 Microsoft Office Access 4 17.01.2011 22:28
Ориентация текста в Edit MyLastHit Общие вопросы Delphi 6 07.12.2010 23:06
Ориентация текста в ячейке Kserks777 Microsoft Office Excel 3 25.07.2010 23:28
Вывод ошибки при условии.... Arinka Помощь студентам 8 05.06.2010 14:54