Вот мой первый макрос, так что, возможно, он не самый эффективный, но он выполняет почти все, что мне нужно - он форматирует некоторый текст на основе некоторых требований. Существует только одна проблема с выводом, когда документ печатается - в первой строке, между фоновой заливкой и границей, кажется, есть разрыв, и я не могу понять, почему.
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
Здесь как это получается при печати: - с добавленными границами для первой строки с рамкой
-и без рамки без рамки
Мысли или идеи?