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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.12.2021, 15:14   #1
Genchik24864
Новичок
Джуниор
 
Регистрация: 23.12.2021
Сообщений: 4
По умолчанию Формула для скрытия строк

Здравствуйте уважаемые программисты. Помогите , пожалуйста переделать VBA макрос, который подходит для EXCEL в аналогичный макрос для LibreOffice Calc. Макрос скрывает строки , если в ячейках столбца "H" нулевые значения. Макрос такой:

Sub Макрос1()

Dim i As Long

'1. Двигаемся по строкам с 3 по 89.
For i = 3 To 89

' Если в ячейке пусто или ноль.
If (Cells(i, "H").Value = "") Or (Cells(i, "H").Value = 0) Then
' Скрытие строки.
Rows(i).Hidden = True
' Если в ячейке не пусто и не ноль.
Else
' Отображение строки.
Rows(i).Hidden = False
End If
Next i


Заранее благодарен.
Вложения
Тип файла: rar Файл.rar (115.4 Кб, 4 просмотров)
Genchik24864 вне форума Ответить с цитированием
Старый 23.12.2021, 15:23   #2
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Лет 5 не писал на sbasic, но в общих фразах, макрос такой
Код:
Sub MyDoLoop
Dim oCell as Object, oSheet as Variant, oSheets as Variant, oString as String, iRow as Integer
oSheets = ThisComponent.getSheets(0)
oSheet = oSheets.getByIndex(0)
oRows = oSheet.Rows

For iRow = 3 to 89
oCell = oSheet.GetCellByPosition(8, iRow)
oString = oCell.getString()
oRow = oRows.GetByIndex(iRow)
If (oString = "") or (oString = 0) Then
  oRow.IsVisible = False
Else
  oRow.IsVisible = True
End If
Next iRow
End Sub
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 23.12.2021, 16:03   #3
Genchik24864
Новичок
Джуниор
 
Регистрация: 23.12.2021
Сообщений: 4
По умолчанию

Благодарю. Не думал, что такой сложный макрос. Он "не ругается" при компеляции, но ничего не делает. Не вижу результата удаления строк, где в столбце "H" нулевые значения.
Genchik24864 вне форума Ответить с цитированием
Старый 23.12.2021, 16:18   #4
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Нету scalc под рукой, не протестирую

проверялся на листе "2_нед"
Код:
Sub MyDoLoop
Dim oCell as Object, oSheet as Variant, oSheets as Variant, oString as String, iRow as Integer
	oSheets = ThisComponent
	oSheet = oSheets.Sheets.getByName("2_нед")
	oRows = oSheet.Rows
For iRow = 3 to 89
	oCell = oSheet.getCellRangeByName("H" & iRow)
	oString = oCell.getString()
	oRows.GetByIndex(iRow-1).IsVisible = not ( (oString = "") or (oString = 0))
Next iRow
End Sub
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.

Последний раз редактировалось Aleksandr H.; 23.12.2021 в 23:46.
Aleksandr H. вне форума Ответить с цитированием
Старый 25.12.2021, 16:56   #5
Genchik24864
Новичок
Джуниор
 
Регистрация: 23.12.2021
Сообщений: 4
По умолчанию

Благодарю за помощь, но и этот макрос не заработал. Вот некоторые товарищи подсказали такой макрос:
Sub Main
Dim Doc As Object 'Переменная для документа
Dim oSheet As Object 'Перменная для текущей страницы, обычно это Sheet1 или Лист1
Dim Cell As Object 'Переменная для текущей ячейки
Doc = ThisComponent 'Получение документа
oSheet = Doc.Sheets(0) 'Получение первой страницы документа

For i=3 To 89
Cell =oSheet.getCellByPosition(7, i) 'Получение ячейки с номером(H - это 7) H'i'
range = oSheet.getCellRangeByPosition(0,i,7 ,i) ' Получение диапозона, то есть аналог Rows(i)
'Сравниваем тип ячейки на пустой тип и также сраванием значение
if Cell.Type = com.sun.star.table.CellContentType. EMPTY Or Cell.Value = 0 Or Cell.String = "" Then
range.Rows.isVisible = False
Else
range.Rows.isVisible = True
End if
Next i
End Sub

Макрос работает только для первого листа, а мне надо чтоб он работал поочерёдно (не сразу на всех) на 4,5, 6, 6,8 и 9 листах и если можно сделать к макросу сочетание клавиш. Как только заполнится 4 лист (пятый по порядку), чтоб сочетанием клавиш применить форматирование. И так далее. Заранее благодарен за помощь. Отправленный файл урезан, так как настоящий со всеми неделями не отправлялся.
Genchik24864 вне форума Ответить с цитированием
Старый 25.12.2021, 22:12   #6
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

и для порядка:
формулы в Excel не умеют скрывать строки (никакие формулы не умеют скрывать никакие строки)

а вот о макросе можно поговорить, осталось только выяснить, что реально он должен делать? (осталось коротко и понятно описать решаемую задачу)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 25.12.2021, 23:03   #7
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Цитата:
Сообщение от Genchik24864 Посмотреть сообщение
Благодарю за помощь, но и этот макрос не заработал.
работает он так как и описано: на листе 2_нед скрывает строки в которых в столбце Н 0 или пусто.
https://youtu.be/itwptzjIMH0
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 26.12.2021, 06:41   #8
Genchik24864
Новичок
Джуниор
 
Регистрация: 23.12.2021
Сообщений: 4
По умолчанию

Благодарю за помощь, макрос работает. Только я исправил "2_нед" на "2 нед". Но макрос удаляет строки только на листе "2 нед", а как сделать, чтоб по мере необходимости (не всех сразу) удалял строки на листах "1 нед", "2нед","3 нед", ....."6 нед"?
Genchik24864 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Формула для переноса строк Dulaqs Помощь студентам 0 11.03.2018 10:29
Макрос Скрытия строк в листе Zzema Microsoft Office Excel 20 13.06.2014 12:39
кнопка скрытия и восстановления строк по условию CooLEO Microsoft Office Excel 16 06.08.2013 14:10
макрос для скрытия и показа строк в выбранном диапазоне шрк Microsoft Office Excel 2 04.11.2011 11:30
JS для скрытия части кода lukoie JavaScript, Ajax 3 29.01.2010 09:34