Excel VBA: Цвет салона - PullRequest
       78

Excel VBA: Цвет салона

0 голосов
/ 21 апреля 2020

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

Sub Test()

'Set columns width
With Worksheets(ActiveSheet.Name)
    .Range("A:A,F:F").ColumnWidth = 16.5
    .Range("C:C").ColumnWidth = 41
    .Range("B:B,D:D,E:E").ColumnWidth = 25
    .Range("G:G,H:H").ColumnWidth = 26.5
    .Range("I:I,J:J,K:K").ColumnWidth = 10
End With

'Format Content (First line only)
Dim Header As Range
Set Header = ActiveSheet.Range(Range("A1"), Range("A1").End(xlToRight))
With Header
    .Interior.Color = RGB(112, 48, 160)
    .Font.Bold = True
    .Font.Color = RGB(255, 255, 255)
    .RowHeight = .RowHeight * 2
    .HorizontalAlignment = xlHAlignLeft
    .VerticalAlignment = xlTop
    .Borders.Color = vblack
    .Borders.LineStyle = xlContinuous
    .Borders.Weight = xlThin
    .Borders.Color = RGB(112, 48, 160)
    .WrapText = True
    .Rows.AutoFit
    End With

'Format Content (Below first line)
Dim Content As Range
Set Content = ActiveSheet.UsedRange.Offset(1).Resize(ActiveSheet.UsedRange.Rows.Count - 1)
With Content
    .HorizontalAlignment = xlHAlignLeft
    .VerticalAlignment = xlTop
    .Borders.Color = vblack
    .Borders.LineStyle = xlContinuous
    .Borders.Weight = xlThin
    .WrapText = True
    .Rows.AutoFit
    End With

'Format Page Setup
With Worksheets(ActiveSheet.Name).PageSetup
    .Orientation = xlLandscape
    .CenterHorizontally = True
    .PrintArea = ActiveSheet.UsedRange.Address
    .Zoom = False
    .FitToPagesWide = 1
    .FitToPagesTall = False
    .PrintGridlines = False
    .LeftMargin = Application.CentimetersToPoints(1.5)
    .RightMargin = Application.CentimetersToPoints(1.5)
    .BottomMargin = Application.CentimetersToPoints(1.5)
    .TopMargin = Application.CentimetersToPoints(1.5)
    .FooterMargin = Application.InchesToPoints(0.5)
    .HeaderMargin = Application.InchesToPoints(0.5)
    .CenterFooter = "My Footer"
    .RightFooter = "Page " + "&P / &N"
    ActiveSheet.PageSetup.PrintTitleRows = ActiveSheet.Rows("1:3").Address
    End With

End Sub

Здесь как это получается при печати: - с добавленными границами для первой строки с рамкой

-и без рамки без рамки

Мысли или идеи?

...