簡體   English   中英

VBA 運行時錯誤 1004“應用程序定義的或對象定義的錯誤”嘗試為變量賦值時

[英]VBA Runtime Error 1004 “Application-defined or Object-defined error” when trying to assign value to a variable

第一個我解釋我正在嘗試做的事情。 我有一個包含許多工作表的工作簿,每個工作簿都有許多命名范圍。 我想遍歷特定工作表上的命名范圍,然后隱藏/取消隱藏它們(如果它具有特定名稱)。 一開始我想隔離工作表,但我遇到了問題。 我正在嘗試獲取工作表的名稱,范圍已打開並將該名稱分配給變量。 這是代碼的一部分,我遇到了問題:

Dim rng as Name
Dim shP as String
for each rng in ThisWorkbook.Names
shp = rng.RefersToRange.Parent.Name 'here i get the error
... rest of the code ...

如果我只是Debug.Print rng.RefersToRange.Parent.Name而不是在該行中,我會立即在 window 中打印出工作表名稱。 我也嘗試將Dim shP as Variant進行調暗,但沒有幫助。

預先感謝您的回答。

您可能在工作簿中有一個與單元格塊不對應的名稱。 在這里,我將 Name when分配給公式=now()

在此處輸入圖像描述

如果我運行:

Sub WhatsInaName()
    Dim nm As Name, s As String

    For Each nm In ThisWorkbook.Names
        MsgBox nm.RefersToRange.Parent.Name
    Next nm

End Sub

我也得到一個1004

您應該首先運行:

Sub listum()

    With ActiveWorkbook
        If .Names.Count > 0 Then
            For i = 1 To .Names.Count
                MsgBox (i & "  " & .Names(i).Name)
            Next
        End If
    End With
End Sub

驗證每個Name是一個單元塊。

如果您要獲取工作表,則需要使用Worksheet object。

Option Explicit
Sub Test()

    Dim rng As Name
    Dim shP As Worksheet
    For Each rng In ThisWorkbook.Names
        Set shP = rng.RefersToRange.Parent 'here i get the error
    '... rest of the code ...
    Next rng

End Sub

然后您可以像使用工作表一樣使用shP

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM