Доброе время суток!
Существует "База" на листе 2.
Задача очистить эту базу от всех красот. и преобразовать ее в "Умную таблицу" для последующей обработки. (База фильтруется по полю Подразделение, и затем рассылается по подразделениям, каждому свой кусок таблицы, но это уже реализовано)
Пример во вложении справляется с задачей очистки таблицы, с одним но: Типы данных ячеек тоже очищаются, и , как следствие, дата преобразуется в число, и конечный пользователь уже видит не то, что хотелось бы.
Проблема усугубляется тем, что столбцов в таблице может быть сколько угодно, и любые столбцы могут быть датой. О таблице я знаю только номер столбца, который содержит номер Подразделения, все остальное произвольно.
Подскажите, пожалуйста, как правильно очистить форматы таблицы Excel с сохранением типов данных столбцов?
Скрытый текст |
---|
Код |
---|
Sub Кнопка1_Щелчок()
Dim iLastRow As Long
Dim iLastCol As Long
Dim BaseRange As Range
Dim wsList2 As Worksheet
Dim obj As ListObject
Dim s As String
'Dim iStyle As Style
Application.ScreenUpdating = False
Set wsList2 = ThisWorkbook.Sheets("Лист2")
' Преобразуем все "умные таблицы на листе "Базе" в обычный диапазон
On Error Resume Next
For Each obj In wsList2.ListObjects
obj.Unlist '
Next obj
On Error GoTo 0
' Определяем размер таблицы
iLastCol = wsList2.Cells(1, Columns.Count).End(xlToLeft).Column
iLastRow = wsList2.Cells(Rows.Count, 1).End(xlUp).Row
Set BaseRange = wsList2.Range(wsList2.Cells(1, 1), wsList2.Cells(iLastRow, iLastCol))
' очищаем старые форматы
BaseRange.ClearFormats 'очистить все форматы
' Преобразуем диапазон в "Умную таблицу"
On Error Resume Next
wsList2.ListObjects.Add(xlSrcRange, BaseRange, , xlYes).Name = "База"
wsList2.ListObjects("База").TableStyle = "TableStyleLight9"
On Error GoTo 0
Application.ScreenUpdating = True
End Sub |
|