Как написать код vba, чтобы скрыть некоторые ячейки в excel

Я написал следующий сценарий в системе автоматизации предприятия, который используется для скрытия некоторых ячеек в файле Excel. Но это показывает

Activex bad index

Код выглядит следующим образом

Sub Main

    Windows("InTransitReport - WELLFOAKL.xls").Activate
   Application.ActiveWorkbook.Sheets("Shipments").Select
    Range("Q5").Select
  Selection.EntireColumn.Hidden = True
   Range("R5").Select
  Selection.EntireColumn.Hidden = True
    Range("T5").Select
   Selection.EntireColumn.Hidden = True
    Range("U5").Select
   Selection.EntireColumn.Hidden = True
  Range("V5").Select
   Selection.EntireColumn.Hidden = True
   Range("W5").Select
 Selection.EntireColumn.Hidden = True
     Range("X5").Select
   Selection.EntireColumn.Hidden = True
    Range("Y5").Select
   Selection.EntireColumn.Hidden = True
   Range("AA5").Select
  Selection.EntireColumn.Hidden = True
    Range("AB5").Select
   Selection.EntireColumn.Hidden = True`enter code here`
  Range("AC5").Select
   Selection.EntireColumn.Hidden = True
    Range("A6").Select
   Application.ActiveWorkbook.Sheets("POs").Select
    Range("A6").Select
End Sub

Ты это написал или записал? Если вы это написали, то вам следует прочитать, как избегать использования .Select. Обновлено: Да, я вижу, что это было написано из-за используемой методологии отступов. Обязательно прочитайте, как избегать использования .Select, так как правильно управлять им не только медленно, но и кошмарно.

K.Dᴀᴠɪs 26.10.2018 05:41

Итак, изменятся ли когда-нибудь эти диапазоны - или это всегда одни и те же диапазоны, которые нужно скрыть?

K.Dᴀᴠɪs 26.10.2018 05:46

Игнорируя ошибку "плохой индекс", это можно было бы записать как: Workbooks("InTransitReport - WELLFOAKL.xls").Sheets("Shipments").Range("Q1:R1,T1:Y1,AA1:A‌​C1").EntireColumn.Hi‌​dden = True

Tim Williams 26.10.2018 05:56
0
3
29
2

Ответы 2

Просто быстро пролистайте эти столбцы и скройте их.

Sub Main()

    Dim wb As Workbook, ws As Worksheet
    Set wb = Workbooks("InTransitReport - WELLFOAKL.xls")
    Set ws = wb.Worksheets("Shipments")

    Dim i As Long
    For i = 17 To 29
        Select Case i
        Case 19, 26 'These weren't listed as a column to hide
        Case Else
            ws.Columns(i).Hidden = True
        End Select
    Next

    wb.Worksheets("POs").columns(6).Hidden = True

End Sub

Игнорируя ошибку "плохой индекс", это можно записать как:

Workbooks("InTransitReport - WELLFOAKL.xls").Sheets("Shipments"). _
      Range("Q1:R1,T1:Y1,AA1:AC1").EntireColumn.Hidden = True

Если вы получаете сообщение «индекс вне допустимого диапазона», то имя вашей книги или рабочего листа (или и то, и другое) может быть написано неправильно.

Другие вопросы по теме