■No16369 (samurai さん) に返信
> 他のコミュニティでも、同様な問題が発生しているようです。
そこに、答えが書かれていますよね。
> 以下のコード実行時に、実行時エラー459が発生します。
その TextBox が、「コントロール配列」になっていない事を確認してください。
コントロール配列にした場合、WithEvents は利用できません。
コントロール配列にした場合は、イベントを管理しているのは、「Text1(0)」ではなく、
コントロール配列そのものである「Text1」となります。
Debug.Print TypeName(Text1(0)) '…… これは TextBox 型
Debug.Print TypeName(Text1) '…… これは Object 型
個々のコントロールである「Text1(0)」は、確かに TextBox を継承していますが、
それ自体はイベントを持っていないため、TextBox 型の WithEvents 変数への代入は拒否され、
エラー459『オブジェクトまたはクラスがこのイベントセットをサポートしていません」となります。
なお、コントロール配列にしているのが、(TextBox等の)「標準コントロール」ではなく、
(RichTextBox等の)「ActiveX コントロール」であるならば、WithEvents 変数を
VBControlExtender 型にする事で、この問題を回避する事ができます。
|