Как скрыть столбцы с выводом формулы 0 без изменения формулы на значение - PullRequest
0 голосов
/ 11 мая 2019

Я новичок в этом, и я пытаюсь показать все столбцы, а затем скрыть столбцы, которые содержат в одной строке число «0», проблема в том, что число является результатом формулы.

Вот что я пробовал:

Sub main()
Rows("1:1").EntireColumn.Hidden = False
Dim Col As Range
For Each Col In Columns("E:EX")
    For Each Row In Rows("9:9")
        Col.Hidden = Col.Find("0", , xlFormulas, xlWhole, , , False) Is Nothing
    Next
Next
End Sub

В результате выполнения кода выше все эти столбцы (E: Ex) скрыты.

1 Ответ

1 голос
/ 11 мая 2019

Вы на правильном пути, но нужно сделать несколько деталей / улучшений

Private Sub hide_zeroes()

  Dim ws as Worksheet: Set ws = Sheets("Your sheet name") '<- edit me
  Dim lc as Long: lc = ws.Cells(9, Columns.Count).End(xlToLeft).Column 'last active Column
  Dim i as Long

  For i = 1 to lc 'from first till last colummn
     If ws.Cells(9, i) = "0" Then 'if 9th row of Column [i] is 0 Then
         ws.Columns(i).EntireColumn.Hidden = True 'hide entire column
     End If
  Next i

End Sub
  1. Хорошей практикой является завершение ваших циклов For переменной, которую вы 'повторяю петлю.Помогает сохранить читабельность кода и позволяет избежать ненужных ошибок во вложенных циклах

    For i = 1 to 99
       'some code
    Next i 'note the i <- 
    
  2. Вам не нужно проверять, является ли это формулой, просто проверьте, находится ли значение внутри ячейки

  3. Рекомендуется объявлять имена переменных для каждой используемой переменной или, что еще лучше, использовать Option Explicit (первая строка вашего кода) , чтобы включитьчто-то похожее на "строгий режим"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...