Таблица VBA ClearFormat, кроме NumberFormat - PullRequest
0 голосов
/ 18 октября 2019

В настоящее время я создаю таблицу в VBA и настраиваю TableStyle, которая работает хорошо. Однако иногда ячейки в таблице имеют форматирование ячейки или столбца до ее создания, что портит стиль таблицы. Когда я создаю таблицу, я хочу сначала очистить форматирование, КРОМЕ NumberFormat, который я хочу сохранить.

Я нашел этот ответ для захвата NumberFormat, а затем повторно применить к диапазону после использования ClearFormats,но, похоже, не работает в моем случае. Мой код:

Sub CreateTable(ws As Worksheet, rng As Range, tblname As String)
    On Error Resume Next
        ws.ListObjects(tblname).Unlist
    On Error GoTo 0

    Dim tbl As ListObject
    Set tbl = ws.ListObjects.Add(xlSrcRange, rng, , xlYes)
    Dim numfmt
    numfmt = tbl.Range.NumberFormat
    tbl.Range.ClearFormats  'works
    tbl.Range.NumberFormat = numfmt  ' doesn't work
    'tbl.Range.NumberFormat = "0.00%"  'works
    'Range("AE8:AE10").NumberFormat = "0.00%"  ' works
    tbl.TableStyle = "TableStyleMedium15"
    tbl.Name = tblname

End Sub

Private Sub Workbook_Open()
    Dim ws As Worksheet
    Set ws = Worksheets("sheetname")

    ' Inject Main Table
    Dim rng As Range
    Set rng = ws.Range(ws.Range("A7"), ws.Range("A7").SpecialCells(xlLastCell))
    Dim tblname As String
    tblname = "MyTable"
    Call CreateTable(ws, rng, tblname)
    ...
End Sub

Как сохранить форматы номеров ячеек / столбцов, не допуская другие форматы, которые могут конфликтовать с моей таблицей?


Обновление # 1

Основываясь на комментариях, я попробовал следующее, но мой синтаксис явно не совсем правильный, и цикл также невероятно медленный.

Dim numfmt
numfmt = tbl.Range.NumberFormat
tbl.Range.ClearFormats
For Each cell In tbl.Range
     cell.NumberFormat = numfmt
Next cell

Я также нашел этот ответ: https://stackoverflow.com/a/3857225/7619676, которыйПохоже, что можно установить NumberFormat из массива, но с этим решением также борется с синтаксисом для двумерного диапазона.

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