Как отформатировать лист в виде строк и столбцов в Excel для Mac ver.16,24 - PullRequest
0 голосов
/ 22 апреля 2019

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

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

Проблема 1: Если импортированный лист пуст, возникнет ошибка, поскольку я не знаю, как создать переход к следующему листу. Я должен не забыть удалить лист, чтобы код работал без ошибок.

Проблема 2: Когда я запускаю код «FormatAllSheets», он расширяется только до ограниченной области, поскольку записывается с имеющимися у меня данными. В случае данных за следующий месяц, он не будет форматировать их, так как есть ограничение. с записи.

Ниже приведен пошаговый код, который я сейчас использую в настоящее время на основе только существующих данных, и его необходимо использовать и для будущих данных.

Sub FormatSheet()
    Cells.Select
    Selection.AutoFilter
    Cells.EntireColumn.AutoFit
    Range("A1").Select
    Range(Selection, Selection.End(xlToRight)).Select
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorAccent6
        .TintAndShade = 0.599993896298105
        .PatternTintAndShade = 0
    End With
    Selection.Font.Size = 14
    Selection.Font.Bold = True
    Range("A2").Select
End Sub
Sub FormatAllSheets()
    Dim i As Integer
    i = 2
    Do While i <= Worksheets.Count
        Worksheets(i).Select 
        FormatSheet 
        i = i + 1 
        Loop
End Sub

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

Вся помощь будет очень ценится. Я все еще новичок в этом, так что извините за то, что задал слишком много глупых вопросов. Спасибо.

1 Ответ

0 голосов
/ 22 апреля 2019

Ваша первая проблема нуждается в проверке, чтобы увидеть, есть ли какие-либо данные в ячейке, а затем пропустить, если нет. Ваша вторая проблема, вам нужно найти последний использованный столбец, а затем вы можете использовать диапазон и номер столбца для форматирования. Обратите внимание, что нет необходимости использовать выделение или выделение, поскольку это снижает производительность. Я думаю, что будет лучше использовать .UsedRange и просто форматировать только те ячейки, в которых есть данные.

 Sub FormatSheet()
    Dim lrow as long
    Dim ws as ActiveSheet

    Cells.Select
    Selection.AutoFilter
    Cells.EntireColumn.AutoFit
    Set ws = ActiveSheet
    With ws
        lrow = .Range("A" & .Columns.Count).End(xlToRight).Column
    End With

    With Range("A" & lrow).Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorAccent6
        .TintAndShade = 0.599993896298105
        .PatternTintAndShade = 0
    End With
    Selection.Font.Size = 14
    Selection.Font.Bold = True
End Sub

    Sub FormatAllSheets()
        Dim i As Integer
        i = 2
        Do While i <= Worksheets.Count
            Worksheets(i).Select
            if Len(Trim(.Range("A1").value)) > 0 then '->change range where data is
               FormatSheet 
               i = i + 1
            else
               i = i + 1
            Loop
    End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...