Задать диапазон форматов для указания c валюты форматировать все листы - PullRequest
0 голосов
/ 11 марта 2020

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

Невозможно установить свойство numberformat класса диапазона

Sub UnProtect()

    Dim cell_to_format As Range

      ' Loop through all sheets in the workbook

      For i = 1 To Sheets.Count

         Sheets(i).UnProtect "T1T3NPM"

         With ActiveSheet

       Range("L8:L99999").Cells.NumberFormat = "£#,##0.00"

        Range("O8:O99999").NumberFormat = "£#,##0.00"

        Range("R8:R99999").NumberFormat = "£#,##0.00"

        Range("U8:U99999").NumberFormat = "£#,##0.00"

        Range("X8:X99999").NumberFormat = "£#,##0.00"

        Range("AA8:AA99999").NumberFormat = "£#,##0.00"

        Range("AD8:AD99999").NumberFormat = "£#,##0.00"

    .Protect Password:="T1T3NPM", AllowFiltering:=True
    .EnableSelection = xlUnlockedCells
End With

      Next i

End Sub

заранее спасибо

Ответы [ 2 ]

2 голосов
/ 11 марта 2020

With ActiveSheet должно быть With Sheets(i).

Вы снимаете защиту Sheets(i), но работаете с Activesheet, который может или не может быть Sheets(i)

Также вам нужно использовать Worksheets вместо Sheets, иначе вы будете Вы получите ошибку, если есть листы диаграммы.

Поэтому измените Sheets(i) на Worksheets(i)

Вам также необходимо будет полностью определить объект диапазона, иначе он будет работать с Activesheet и не с Worksheets(i)

With Worksheets(i)
    '~~> Notice the DOT before Range
    .Range("L8:L99999").Cells.NumberFormat = "£#,##0.00"
End With
0 голосов
/ 11 марта 2020

Вы можете попробовать:

Sub UnProtect()

    Dim ws As Worksheet
    Dim i As Long

    For Each ws In ThisWorkbook.Worksheets

      With ws

          .UnProtect "T1T3NPM"

          For i = 12 To 30 Step 3

              .Range(.Cells(8, i), .Cells(99999, i)).NumberFormat = "£#,##0.00"

          Next i

          .Protect Password:="T1T3NPM", AllowFiltering:=True
          .EnableSelection = xlUnlockedCells

      End With

    Next ws

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