如何零基础学习VBA—HasDefaultProperties和HeaderFooter对象

HasDefaultProperties

HasDefaultProperties对象在Excel VBA中表示一个对象是否具有默认属性。例如,Worksheet对象具有默认属性Name,因此当您使用Worksheets.Add方法添加工作表时,该工作表将自动被命名为“SheetX”,其中X为新表的序号。

使用HasDefaultProperty属性,您可以检查对象是否具有默认属性,并决定是否要更改它。这对于创建自定义模板和控制Excel的自动行为非常有用。

以下是3个Excel VBA代码示例,涉及到HasDefaultProperties对象:

1、检查并更改新工作表的名称

Sub AddNewSheet()
    Dim newSheet As Worksheet
    Set newSheet = ThisWorkbook.Worksheets.Add

    If newSheet.HasDefaultName Then
        newSheet.Name = "My New Sheet"
    End If
End Sub

2、检查工作表是否具有默认列宽

Sub CheckColumnWidth()
    Dim sheet As Worksheet
    Set sheet = ActiveSheet

    If sheet.Columns(1).HasDefaultWidth Then
        MsgBox "Column A has default width."
    Else
        MsgBox "Column A has custom width."
    End If
End Sub

3、禁用工作表自动筛选

Sub DisableAutoFilter()
    Dim sheet As Worksheet
    Set sheet = ActiveSheet

    sheet.AutoFilterMode = False
    sheet.EnableAutoFilter = False
    sheet.EnableSelection = xlNoRestrictions
    sheet.ShowAllData
    sheet.AutoFilterMode = False
    sheet.ListObjects(1).AutoFilter.ShowAllData
    
    If Not sheet.AutoFilter Is Nothing Then
        MsgBox "AutoFilter cannot be removed."
    End If
End Sub

HeaderFooter

在Excel VBA中,HeaderFooter对象代表工作表或工作簿的页眉和页脚。

HeaderFooter对象有多个属性,可以设置或返回页面上显示的文本、图像和格式。例如,LeftHeader属性可以用于设置或获取页眉左侧的文本,CenterFooter属性可以用于设置或获取页脚中央的文本。

下面是一个示例代码,演示如何使用HeaderFooter对象:

Sub SetHeaderFooter()
    Dim ws As Worksheet
    Set ws = ActiveSheet

    With ws.PageSetup
        .LeftHeader = "&D" '日期(例如 2019年8月20日)
        .CenterHeader = "Page &P of &N" '页码和总页数
        .RightHeader = "&B" '工作簿名称
        .LeftFooter = "Confidential" '页脚左侧文本
        .RightFooterPicture.FileName = "C:\logo.png" '页脚右侧图片路径
        .RightFooterPicture.Height = 30 '页脚右侧图片高度
        .RightFooterPicture.Width = 75 '页脚右侧图片宽度
    End With
End Sub

此代码将在工作表页眉和页脚中设置日期、页码、工作簿名称、机密文本和图片。请注意,要更改工作簿或具体工作表的页眉和页脚,请选择“页面布局”选项卡并单击“页眉和页脚”按钮。

以下是3个HeaderFooter对象的示例:

1、修改工作表页眉

ActiveSheet.PageSetup.LeftHeader = "My Company Name, Inc."
ActiveSheet.PageSetup.CenterHeader = "Sales Report"
ActiveSheet.PageSetup.RightHeader = "&D"

这个示例将当前活动工作表的左侧页眉设置为“My Company Name, Inc.”,中间页眉设置为“Sales Report”,右侧页眉设置为当前日期。

2、设置工作表页脚的字体大小和颜色

With ActiveSheet.PageSetup
    .LeftFooter = "Page &P of &N"
    .CenterFooter = "Confidential"
    .RightFooter = "Updated on &D"
    .FooterMargin = 0
    .FooterFont.Name = "Arial"
    .FooterFont.Size = 9
    .FooterFont.ColorIndex = xlAutomatic
End With

这个示例将当前活动工作表的左侧页脚设置为“Page x of y”(其中x是当前页码,y是总页数),中间页脚设置为“Confidential”,右侧页脚设置为“Updated on xx/xx/xxxx”(其中xx/xx/xxxx是当前日期),并将页脚字体设置为Arial、字号为9、颜色为自动。

3、隐藏工作表页眉

ActiveSheet.PageSetup.DifferentFirstPageHeaderFooter = False
ActiveSheet.PageSetup.OddAndEvenPagesHeaderFooter = False
ActiveSheet.PageSetup.HeaderMargin = 0.5
ActiveSheet.PageSetup.FooterMargin = 0.5
ActiveSheet.PageSetup.CenterHeaderPicture.Filename = ""

这个示例将当前活动工作表的页眉隐藏掉,其中不显示 DifferentFirstPageHeaderFooter、OddAndEvenPagesHeaderFooter 属性,页眉和页脚离上边框和下边框的距离均为0.5英寸,CenterHeaderPicture.Filename设置为空字符串来清空中心页眉的图片。

使用HasDefaultProperties和HeaderFooter对象,需要注意以下几点:

1、HasDefaultProperties属性是只读属性,不能手动设置或更改。如果该属性返回True,则表示对象已经设置了默认属性,否则表示对象还没有设置默认属性。

2、HeaderFooter对象可以用于设置工作表的页眉和页脚。注意,页眉和页脚需要预先设计好,并保存在工作簿的页模板中。如果页模板已经包含页眉和页脚,则可以使用HeaderFooter对象对它们进行修改或者删除。

3、如果当前工作表没有页眉或页脚,则需要使用PageSetup对象的CenterHeader、LeftHeader、RightHeader、CenterFooter、LeftFooter和RightFooter属性创建。

4、为了避免与默认设置冲突,应该在设置页眉和页脚时首先使用HasDefaultProperties属性判断是否已经存在默认设置。

5、要设置具有复杂布局的页眉和页脚,并且包含多个单元格或文本框等对象,则需要使用Shapes对象。例如,可以使用Shapes对象添加图像、形状和文本框到页眉和页脚中。

总之,要使用HasDefaultProperties和HeaderFooter对象,在编写代码之前必须仔细了解其属性和方法,确保正确地设置和修改页眉和页脚,并避免与默认设置冲突。

如何零基础学习VBA—HasDefaultProperties和HeaderFooter对象