私はVBAの初心者ですので、以下は私が逃した基本的なステップになる可能性があります。 RangeメソッドのTextプロパティを編集しようとするとランタイムエラー424 - Rangeオブジェクトのテキストプロパティ
、私は、実行時エラー424、必要なオブジェクト
得続けます。
次のコードの場合:
Range("A1").Text = "ABC"
これは範囲を設定する場合ですか?
私はVBAの初心者ですので、以下は私が逃した基本的なステップになる可能性があります。 RangeメソッドのTextプロパティを編集しようとするとランタイムエラー424 - Rangeオブジェクトのテキストプロパティ
、私は、実行時エラー424、必要なオブジェクト
得続けます。
次のコードの場合:
Range("A1").Text = "ABC"
これは範囲を設定する場合ですか?
実行時エラー "424 Object Required"は説明可能であり、実際には理にかなっていると考えられます。
Range.Text
は読み取り専用なので、割り当てできません。プロパティ
それとも
の不正使用は読み取り専用プロパティを割り当てることができません
:間違いなくそこのような、譲渡の試み文句コンパイル時エラーでなければなりませんしかし、
Range.Text
はVariant
なくを返すため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
だから、割り当てが書き込み可能に代入され、デフォルトプロパティの戻り値のオブジェクト参照
この基準の割り当て:
Foo
はSet
アクセサを公開していないため、Set Sheet1.Foo = ActiveCell
は、財産のコンパイル時無効使用です。
これは初心者にとっては本当に混乱しています。皮肉なことに、VB6/VBAの公開のデフォルトプロパティは、初心者の方にとって「簡単に」できると考えられていました。
テキストはreadonlyプロパティで、 '.Text'の代わりに' .Value'を使用します。 –
読み取り専用プロパティに書き込むことはできません。 https://msdn.microsoft.com/VBA/Excel-VBA/articles/range-text-property-excelただし、これは恐らく1004エラーを発生させるはずであり、424オブジェクトが必要ではありません。 –
@DavidZemensただ1行のサブとして試してみましたが、424エラーを返しました。私も1004エラーを想定していました。 –