我是VBA初學者,所以下面可能是我錯過的基本步驟。運行時錯誤424 - 範圍對象中的文本屬性
當您嘗試編輯Range方法的Text屬性,我不斷收到
運行時錯誤424,所需的對象。
例如,對於以下代碼:
Range("A1").Text = "ABC"
這是設置範圍的情況嗎?
我是VBA初學者,所以下面可能是我錯過的基本步驟。運行時錯誤424 - 範圍對象中的文本屬性
當您嘗試編輯Range方法的Text屬性,我不斷收到
運行時錯誤424,所需的對象。
例如,對於以下代碼:
Range("A1").Text = "ABC"
這是設置範圍的情況嗎?
運行時錯誤「424對象要求」是可以解釋的,並且相信與否,實際上是有道理的。
Range.Text
是隻讀的,所以你不能指定它;按理說應該有一個編譯時錯誤抱怨分配的嘗試,如:
使用無效的財產
或者
無法分配給只讀屬性
但是,因爲Range.Text
返回Variant
而不是String
,並且該屬性是隻讀的,VBA假定該分配是合法的,並且該屬性將返回Variant/Object
,其中Object
具有默認屬性,即可以可以被分配。
所以在分配Sheet1
的代碼隱藏這個屬性:
Public Property Get Foo() As String
Foo = "FOO"
End Property
是一個編譯時間無法分配給只讀屬性錯誤。
但這:
Public Property Get Foo() As Variant
Foo = "FOO"
End Property
是運行時間對象所需錯誤 - 因爲轉讓是合法的,該Property Get
功能預計返回一個對象。而當它沒有,那麼對象所需的總是有意義的。
考慮一下:
Public Property Get Foo() As Range
Set Foo = ActiveCell
End Property
此屬性是一樣只讀任何上述的:你不能合法地重新分配基準Foo
正在恢復。
但是,這是完全合法的:
Sheet1.Foo = 42
而且,事實上,隱碼本:
Sheet1.Foo().Value = 42
所以分配分配到的可寫入,默認屬性返回的對象引用。
而這個參考分配:
Set Sheet1.Foo = ActiveCell
是一個編譯時間無效使用的財產,因爲Foo
不公開Set
訪問。
對於初學者來說,這確實很讓人困惑。具有諷刺意味的是,VB6/VBA暴露默認屬性應該爲初學者「變得更容易」。
文本是隻讀屬性,使用'.Value'而不是'.Text'。 –
無法寫入只讀屬性。 https://msdn.microsoft.com/VBA/Excel-VBA/articles/range-text-property-excel但是,這可能應該引發1004錯誤,而不是424所需的對象。 –
@DavidZemens剛剛嘗試過它作爲一個單行的子,它返回了424錯誤。我也會假設1004錯誤。 –