出现运行时错误“ 424”:必需对象

时间:2019-10-07 18:39:24

标签: excel vba

无论“ DonotPrint-设置”表上的单元格“ H13”是否为空,我都编写了代码以为每个特定的表添加自定义标题。如果发现为空,它将仅添加默认文本。如果不为空,它将复制“ H13”值并将其添加到标题中。

注意:此代码写在“ DonotPrint-Setup”表中

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim headerSheets As Variant, sh
    Dim Filename As String
    headerSheets = Array("COVER", "SCOPE", "SUMMARY", "Updated Hours EST", "RATES")

    If IsEmpty(Me.Range("H13").value) Then
    Filename = "Proposal Template"
    headerSheets.PageSetup.CenterHeader = "&B &12 PROPOSAL" & Chr(10) & Chr(10) & " &08 " & Filename
    Else
    Filename = .Range("H13")
    headerSheets.PageSetup.CenterHeader = "&B &12 PROPOSAL" & Chr(10) & Chr(10) & " &08 " & Filename
    End If
End Sub

但是我遇到运行时错误'424':这样做时需要对象,并突出显示“ Else”之后的第二行代码。

1 个答案:

答案 0 :(得分:2)

headerSheets变量被定义为一个变体,包含一个字符串数组。因此,它不是可以在其上调用方法的对象。

您要迭代工作表名称的数组,并为每个工作表名称获取具有该名称的Worksheet对象。

Dim i As Long
For i = LBound(headerSheets) To UBound(headerSheets)
    Dim ws As Worksheet
    Set ws = ActiveWorkbook.Worksheets(headerSheets(i))

    'now you have a Worksheet object to make member calls against:
    ws.PageSetup.CenterHeader = "..."
    '...
Next
相关问题