Страницы: 1
RSS
Макрос: скрытие/отображение строк и столбцов
 
Существует некая таблица, в которую периодически вносятся числовые данные. Перед выводом на печать необходимо скрыть неиспользованные в отчет строки и столбцы. А в последствие отобразить их для внесения новых данных.  
В прилагаемом файле столбец М и строки 11-13 не содержат данных, и их требуется скрыть (для наглядности выделены цветом).  
На листе1 макрос работает: при нажатии кнопки скрывает обозначенные вручную произвольным знаком (пусть будет "х") столбцы и строки. Отображение так же работает.  
На листе2 символ "х" является результатом расчета функции ЕСЛИ: если столбец или строка содержат числовые значения, то пусто, если нет, то "х". При запуске макрос в этом случае возникает ошибка 400.  
Помогите исправить код для лист2!!
 
Так можно:  
 
Sub Hide()  
Dim c As Range  
Application.ScreenUpdating = False  
For Each c In ActiveSheet.UsedRange.Rows(1).Cells  
   If c = "х" Then c.EntireColumn.Hidden = True  
Next  
For Each c In ActiveSheet.UsedRange.Columns(1).Cells  
   If c = "х" Then c.EntireRow.Hidden = True  
Next  
Application.ScreenUpdating = True  
End Sub  
   
Sub Show()  
Columns.Hidden = False  
Rows.Hidden = False  
End Sub  
 
Будет работать и с формулой, и с ручным вводом. Можете поместить эти процедуры в общий модуль и назначить кнопкам на всех листах, а модули листов очистить.
 
у вас же не константы теперь, формулы..
Живи и дай жить..
 
а можно совсем отказаться от формул( и "загрязнения" листа)
Живи и дай жить..
 
> а можно совсем отказаться от формул( и "загрязнения" листа)  
 
Если в строке/столбце нет чисел, а только текст, то строке/столбец скроется!
 
да, :) ничто не идеально..  
 
но так как первоначально для строк/столбцов применялась функция сумм, то я посчитал, что данные численные..
 
{quote}{login=Казанский}{date=03.02.2011 03:48}{thema=}{post}> а можно совсем отказаться от формул( и "загрязнения" листа)  
 
Если в строке/столбце нет чисел, а только текст, то строке/столбец скроется!{/post}{/quote}  
Вариант макроса, реагирующего только на пустые ячейки:
 
Казанский, С.М., спасибо, очень выручили:)
 
а как вам такой код? :)  (Екатерине, конечно, все равно - в первую очередь это к Казанскому и С.М.)
Живи и дай жить..
 
Да, свойство Range.Text - мощная штука! Жаль, плохо описано в справке. В 2000, насколько я помню, было упомянуто о том, что оно возвращает Null, если текст в ячейках разный. В 2007 только приводится различие между .Text и .Value.
 
да.  именно так. null , если текст разный, если одинаковый, то сам текст..  
 
только медленновато..  
 
поэтому я сначала на поискпоз и оперся..
Живи и дай жить..
 
Text Property  
See AlsoApplies ToExampleSpecificsReturns or sets the text for the specified object. Read-only String for the Range object, read/write String for all other objects.  
Remarks  
For the Phonetic object, this property returns or sets its phonetic text. You cannot set this property to Null.  
Перевод Яндекса:  
"Текстовая Собственность  
См. AlsoApplies ToExampleSpecificsReturns, или устанавливает текст для указанного объекта. Последовательность Только для чтения для объекта Диапазона, Последовательность чтения - записи для всех других объектов.  
Замечания  
Для Фонетического объекта эта собственность возвращает или устанавливает свой фонетический текст. Вы не можете установить эту собственность в Пустой указатель."  
:-)  злые они [MS] :-)
 
propety - свойство. в контексте vba - это подпрограмма, которая может возвращать свойство объекта(или устанавливать его)  
 
это свойство(text) можно и читать и устанавливать.. кроме значения null. null установить нельзя, такое значение может быть только в результате вычисления свойства составного объекта(например, range, состоящий из нескольких ячеек)
Живи и дай жить..
 
слэн, я это к тому , что в справке не упоминается, что свойство .Text диапазона из нескольких ячеек возвращает    
{quote}{login=слэн}{date=04.02.2011 11:02}{thema=}{post}null , если текст разный, если одинаковый, то сам текст..  
{/post}{/quote}  
(повторил, сказанное Вами и Казанским)
 
я не против, поправил лишь перевод яндекса :)
Живи и дай жить..
Страницы: 1
Читают тему
Наверх