VBA не распознает заголовки из перечисленных объектов - PullRequest
0 голосов
/ 02 мая 2019

Я не могу понять, почему Excel прекратил распознавать заголовки перечисленных объектов;в частности, эту строку Range("Offer_Table[[#Headers], [LOC]").Select Я хотел бы изменить формат определенного заголовка, и я сначала смог сделать это, используя следующий код.

Range("Offer_Table[[#Headers], [LOC]").Select
    With Selection.Font
        .Name = "Calibri"
        .FontStyle = "Bold"
        .Size = 11
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ThemeColor = xlThemeColorAccent2
        .TintAndShade = -0.249977111
        .ThemeFont = xlThemeFontMinor
    End With
    With Selection.Interior
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorAccent4
        .TintAndShade = 0.799981688894314
        .PatternTintAndShade = 0
    End With

однако код перестал работать после закрытия всех активных листов.запустить первый полный тест на новом листе.Я не понимаю, почему, но заголовки теперь больше не распознаются Excel.Либо, если я создаю новый LO из VBA, или я делаю это вручную, устанавливая новую таблицу.

Ниже приведен пример кода

'Referring to the Table
    Dim Offer_table As ListObject
    CntCol = Range(Cells(1, 1), Cells(1, 1).End(xlToRight)).Count
    CntRow = Range(Cells(1, 2), Cells(1, 2).End(xlDown)).Count


MsgBox CntCol
MsgBox CntRow
    Set Offer_table = ActiveSheet.ListObjects.Add(xlSrcRange, Range(Cells(1, 1), Cells(CntRow, CntCol)), , xlYes)
    Offer_table.Name = "Offer_Table"
    Offer_table.TableStyle = "TableStyleLight2"


'Highlight headers
        Range("Offer_Table[[#Headers], [Order Creation]").Select
    With Selection.Font
        .Name = "Calibri"
        .FontStyle = "Bold"
        .Size = 11
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ThemeColor = xlThemeColorAccent2
        .TintAndShade = -0.249977111
        .ThemeFont = xlThemeFontMinor
    End With
    With Selection.Interior
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorAccent4
        .TintAndShade = 0.799981688894314
        .PatternTintAndShade = 0
    End With

         Range("Offer_Table[[#Headers],[SEGMENT]").Select
    With Selection.Font
        .Name = "Calibri"
        .FontStyle = "Bold"
        .Size = 11
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ThemeColor = xlThemeColorAccent2
        .TintAndShade = -0.249977111
        .ThemeFont = xlThemeFontMinor
    End With
    With Selection.Interior
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorAccent4
        .TintAndShade = 0.799981688894314
        .PatternTintAndShade = 0
    End With

1 Ответ

0 голосов
/ 02 мая 2019

Я думаю, что ваша ошибка вызвана тем, что вы не указали явно, где находится ваша таблица.Вы также объявляете это как ListObject, а затем не используете его, обращаясь к нему позже.Посмотрите на следующее.Обязательно обновите With Activesheet до явной ссылки на лист с таблицей, в противном случае, как только вы перейдете на другой лист, вы снова столкнетесь с проблемами

'Referring to the Table
Dim Offer_table As ListObject
Dim CntCol As Long, CntRow As Long

' Update with reference to your sheet
With ActiveSheet
    CntCol = Range(.Cells(1, 1), .Cells(1, 1).End(xlToRight)).Count
    CntRow = Range(.Cells(1, 2), .Cells(1, 2).End(xlDown)).Count

    MsgBox CntCol & vbNewLine & CntRow

    Set Offer_table = ActiveSheet.ListObjects.Add(xlSrcRange, Range(Cells(1, 1), Cells(CntRow, CntCol)), , xlYes)
    Offer_table.Name = "Offer_Table"
    Offer_table.TableStyle = "TableStyleLight2"
End With

'Highlight headers
' Range("Offer_Table[[#Headers], [Order Creation]").Select
With Offer_table
    With .HeaderRowRange(.ListColumns("Order Creation").Range.Column)
        With .Font
            .Name = "Calibri"
            .FontStyle = "Bold"
            .Size = 11
            .Strikethrough = False
            .Superscript = False
            .Subscript = False
            .OutlineFont = False
            .Shadow = False
            .Underline = xlUnderlineStyleNone
            .ThemeColor = xlThemeColorAccent2
            .TintAndShade = -0.249977111
            .ThemeFont = xlThemeFontMinor
        End With
        With .Interior
            .PatternColorIndex = xlAutomatic
            .ThemeColor = xlThemeColorAccent4
            .TintAndShade = 0.799981688894314
            .PatternTintAndShade = 0
        End With
    End With

    ' Range("Offer_Table[[#Headers],[SEGMENT]").Select
    With Offer_table.HeaderRowRange(.ListColumns("SEGMENT").Range.Column)
        With .Font
            .Name = "Calibri"
            .FontStyle = "Bold"
            .Size = 11
            .Strikethrough = False
            .Superscript = False
            .Subscript = False
            .OutlineFont = False
            .Shadow = False
            .Underline = xlUnderlineStyleNone
            .ThemeColor = xlThemeColorAccent2
            .TintAndShade = -0.249977111
            .ThemeFont = xlThemeFontMinor
        End With
        With .Interior
            .PatternColorIndex = xlAutomatic
            .ThemeColor = xlThemeColorAccent4
            .TintAndShade = 0.799981688894314
            .PatternTintAndShade = 0
        End With
    End With
End With
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...