我是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错误。 –