コントロールが配列かどうかを判別するには?

解決


m  2005-08-10 01:42:02  No: 91409

VB6です。

Me.ActiveControl.Name で、このコントロールが配列かどうかを調べるためには
どのような方法で判別できるのでしょうか?


m  2005-08-10 01:52:20  No: 91410

調べていると、TypeName(Me.ActiveControl.Name)で判別できるとわかったので
やってみましたが、わからないことがあったので質問です。

Me.ActiveControl.Name  の行でブレークポイントをおいてイベントでこの場所にきたときにコードが止まります。
このとき、イミディエイトウィンドウで ?Me.ActiveControl.Name とやると現在アクティブなコントロールの名前が出ます。ちなみにこのコントロールは配列です。
しかし、?TypeName(Me.ActiveControl.Name) とやると String がかえってきます。なので、?Me.ActiveControl.Name でだしたコントロール名で ?TypeName(Me.コントロール名) とやると、Object とちゃんとかえってきます。

なぜでしょうか?


魔界の仮面弁士  2005-08-10 03:17:55  No: 91411

判別するなら、こんな感じかな。

Private Sub Command1_Click()
    'Text1 …コントロール配列
    'Text2 …通常のコントロール
    Debug.Print IsControlArray(Text1(0))
    Debug.Print IsControlArray(Text2)
End Sub

Public Function IsControlArray(ByVal Ctrl As VB.Control) As Boolean
    IsControlArray = Not TypeOf Ctrl.Parent.Controls(Ctrl.Name) Is VB.Control
End Function


魔界の仮面弁士  2005-08-10 03:22:34  No: 91412

> 調べていると、TypeName(Me.ActiveControl.Name)で判別できるとわかったので
そのコードだと、"String" という文字列しか得られないでしょうね。(^_^;)

できれば、その情報をどこで調べたのか、教えていただけますでしょうか。
(書籍なのか、Webサイトなのか、newsgroupなのか……)

それによって、mさんが内容を読み間違えたのか、情報自体が
間違っていたのかを、指摘できるかと思いますので。


m  2005-08-10 18:23:58  No: 91413

>できれば、その情報をどこで調べたのか、教えていただけますでしょうか。
http://64.233.167.104/search?q=cache:Vj_m2oR7MaUJ:homepage1.nifty.com/MADIA/vb/vb_bbs/200408_04080083.html+%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AD%E3%83%BC%E3%83%AB%E9%85%8D%E5%88%97%E3%81%8B%E3%81%A9%E3%81%86%E3%81%8B&hl=ja
です。
でも、内容の読み違いでした。
ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加