VB6です。
Me.ActiveControl.Name で、このコントロールが配列かどうかを調べるためには
どのような方法で判別できるのでしょうか?
調べていると、TypeName(Me.ActiveControl.Name)で判別できるとわかったので
やってみましたが、わからないことがあったので質問です。
Me.ActiveControl.Name の行でブレークポイントをおいてイベントでこの場所にきたときにコードが止まります。
このとき、イミディエイトウィンドウで ?Me.ActiveControl.Name とやると現在アクティブなコントロールの名前が出ます。ちなみにこのコントロールは配列です。
しかし、?TypeName(Me.ActiveControl.Name) とやると String がかえってきます。なので、?Me.ActiveControl.Name でだしたコントロール名で ?TypeName(Me.コントロール名) とやると、Object とちゃんとかえってきます。
なぜでしょうか?
判別するなら、こんな感じかな。
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
> 調べていると、TypeName(Me.ActiveControl.Name)で判別できるとわかったので
そのコードだと、"String" という文字列しか得られないでしょうね。(^_^;)
できれば、その情報をどこで調べたのか、教えていただけますでしょうか。
(書籍なのか、Webサイトなのか、newsgroupなのか……)
それによって、mさんが内容を読み間違えたのか、情報自体が
間違っていたのかを、指摘できるかと思いますので。
>できれば、その情報をどこで調べたのか、教えていただけますでしょうか。
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
です。
でも、内容の読み違いでした。
ありがとうございました。
ツイート | ![]() |