在Excel中自动格式化

时间:2014-11-26 00:46:08

标签: excel vba excel-vba

我想自动格式化具有特定条件的电子表格。在进程完成时,工作表行应自动格式化(即备用行具有相同的单元格背景颜色)和标题行(通常为行1),颜色和字体颜色不同。

注意:这需要由VBA代码完成。

另请注意,需要对包含数据的“n”行进行格式化,其余行留空。

我的页面布局代码,

Public Function SetPageLayout(pworksheet)
'Set the page layout of the worksheet to be landscape and format to fit1 page

With Sheets(pworksheet).PageSetup
    .PaperSize = xlPaperA4
    .Orientation = xlLandscape
    .Zoom = False
    .FitToPagesWide = 1
    .FitToPagesTall = False
    .LeftMargin = Application.CentimetersToPoints(1)
    .RightMargin = Application.CentimetersToPoints(1)
    .TopMargin = Application.CentimetersToPoints(1)
    .BottomMargin = Application.CentimetersToPoints(1)
End With

End Function

1 个答案:

答案 0 :(得分:2)

记录 Alt + O,A 。哪个给你

 Selection.AutoFormat Format:=xlRangeAutoFormatList1, Number:=True, Font:= _
    True, Alignment:=True, Border:=True, Pattern:=True, Width:=True

记录excel宏录制器中的步骤。你必须重写一下,因为它使用了一种vbs没有的语法。

这在vba中适用(我没有medium9)xlRangeAutoFormatAccounting4。

Selection.AutoFormat Format:=xlRangeAutoFormatAccounting4, Number:=True, _
    Font:=True, Alignment:=True, Border:=True, Pattern:=True, Width:=True

首先在vba的对象浏览器中查找常量。 xlRangeAutoFormatAccounting4 = 17

然后在对象浏览器中查看该函数,并查看函数定义的底部。

Function AutoFormat([Format As XlRangeAutoFormat = xlRangeAutoFormatClassic1], [Number], [Font], [Alignment], [Border], [Pattern], [Width])

所以vba变成vbs(和vbs在vba中工作)(正如你所看到的,你可以通过正确的方式计算出来,而不需要通常查看函数)

Selection.AutoFormat 17, True, True, True,True, True, True

所以你的代码变成了

objXLWs.Range("A3").CurrentRegion.Select.AutoFormat 17, True, True, True,True, True, True

您正在使用Excel,您可以将其记录在Excel中并让Excel编写您的代码。

Alt + T,M,R

然后 主页键,然后向上箭头。停止录音。

看看Excel写的是什么

Selection.End(xlUp).Select

或者您是否有录制的“转到”对话框

Application.Goto Reference:="R1C1"

或者您已录制了Ctrl + Home

Range("A1").Select