OCX内のコントロール名の取得方法

このQ&Aのポイント
  • VB6でOCX内のコントロール名を取得する方法について教えてください
  • VB6のコードでOCX内のコントロール名を取得する方法を教えてください
  • OCX内のコントロール名を取得できない場合、文字列をオブジェクト名に変換する方法を教えてください
回答を見る
  • ベストアンサー

OCX内のコントロール名の取得方法

VB6で下記の記述で実行しようと思ったのですが OCX内のコントロール名を取得できませんでした。 Dim strBtnName as String Dim objBtnName as Object For Each objBtnName In me.controls if me.Name = strBtnName then objBtnName.Enable = True End If Next objBtnName コントロール名を取得できない時は 文字列をオブジェクト名へ変換してしたいと 思ってるのですが変換方法がわかりません。 もしそういうのAPIなどがあれば教えてください。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Goroxo
  • ベストアンサー率48% (14/29)
回答No.2

#1です。 あとは、Tagプロパティを利用するとか、 そのコントロールは自作ならば、相当するようなプロパティを追加するとか…? ちなみに、 Dim strBtnName as String Dim objBtnName as Object For Each objBtnName In me.controls If objBtnName.Name = strBtnName then objBtnName.Enable = True End If Next objBtnName ですよね(^^;

その他の回答 (1)

  • Goroxo
  • ベストアンサー率48% (14/29)
回答No.1

今手元にVBが無いので確認できませんが、文字列からオブジェクトを参照することは出来たと思います。 Me.Controls("Text1").Text …という感じだったかと。

takuyachiko
質問者

補足

ありがとうございました。 でもAvctiveXコントロールではエラーになってしまいました。 ほかに何かいい方法がありましたら教えてください。

関連するQ&A

  • ユーザーコントロール(OCX)のオブジェクト名

    2点わからない点がありますのでよろしくお願いします。 (1)ユーザーコントロールのオブジェクト名を引数として使用したいのですが エラーが発生し困っています。どのようにしたらいいのでしょうか? ユーザ-コントロールのオブジェクト名:UserControl1 ☆でエラーが発生する「オブジェクトはこのプロパティまたはメソッドをサポートしていません。」 ※関数aはDLLとなっておりどうしてもオブジェクト型で渡さなければなりません。 Private Sub Command1_Click() Call a(Me) End Sub ===DLL関数:a=== オブジェクト名とボタン名をINIファイルに書き込む処理 =========== Private Sub a(prmObj As Object) Dim strMsg As String strMsg = prmObj.Name ・・・☆ : : : End Sub (2)String型からObject型に変換するのは可能でしょうか? INIファイルから"UserControl1.Command.Enable = False"というString型のデータを読込み、 ボタンを有効・無効設定するという事が処理がしたいのですが何かいい方法がありましたら教えてください。 Private Sub UserControl_Initialize() Dim a As Object Dim b as String 'INIファイルから取得 Dim c as String       'INIファイルから取得 b = "UserControl1.Command1" c = "False"   Set a = Me.Controls(b) If c = "False" then a.Enable = False else a.Enable = True End If End Sub

  • VB.Netのコントロール名の操作について

    VB.Netのコントロール名の操作について教えて下さい。 変数Aに代入されている値(コントロール名)から、そのコントロールがフォーム上に存在するかどうか判断し、存在すればそのコントロールに入力されている値を取得したいのですが、ロジックがよくわかりません。 下記のように作りましたがエラーがでます。 どなたか教えて下さいm(_ _)m Dim CntWk As Control Dim objwk As Object Dim 変数A As String For Each CntWk In objwk If cntKoumoku.Name = 変数A Then    MsgBox(cntKoumoku.Visible)  End If Next ちなみにエラーは、  「オフジェクト参照がオフジェクトインスタンスに設定されていません」と出ます。 これはロジックの問題外かと思いますが、.Netに不慣れなためよくわかりません。

  • フォーム上の全てのコントロールを取得したい

    フォーム上の全てのコントロールを取得したいです。 (サブフォームも含め) 自分なりにVBAで考えてみたのがこれです。 Sub test() Dim 数 As Long For Each 数 In Form_フォーム1.Controls.Count ’Debug.Print ? End If Next End Sub でもこれだけでもデバックしてみると 「コンハ゜イルエラー for Eachは、コレクション オブジェクトまたは配列でのみ繰り返しを実行します。」 となります。 答えを教えてください! よろしくお願いします。 (アクセス2003です)

  • コントロールが配列かどうかを知るには?

    Visual Basic6.0(SP5)で伺いたいことがあります。 フォーム上の全てのオブジェクトを For Each文で取得しています。以下の様にです。 Dim Control As Object For Each Control In Form1.Controls If TypeOf Control Is Text Then End If Next Control このとき個々のControlがコントロール配列かどうかを知りたいのですが、どうすればよろしいでしょうか?フォーム上にはコントロール配列のオブジェクトも、コントロール配列ではないオブジェクトもあります。 Control.Indexの値を参照しようとしても、コントロール配列でない場合は 「配列ではないオブジェクトです」とエラーになります。 IsArray関数でもFalseになってしまいます。 何を行いたいかというと、そのControlがコントロール配列(Text1(0)とかText1(1)とか)かどうかを調べて、そのIndexをある関数の引数にしたいのです。全てコントロール配列だったら、Control.Indexで値を取得できるのですが。 よろしくお願いします。

  • システムにインストールされているフォント名の取得

    VB.NETですが、システムにインストールされているフォント名を取得するために下記のコードを書きました。 Private Sub GetSystemFonts(ByRef SysFontString As String) Dim SystemFont As New System.Drawing.Text.InstalledFontCollection SysFontString = "" For Each sf As System.Drawing.FontFamily In SystemFont.Families If SysFontString = "" Then SysFontString = sf.Name Else SysFontString = SysFontString & "," & sf.Name End If Next End Sub しかし、このコードだとTrueTypeFontしか取れないようで、OutLineFontなどは取得できないようです。 フォントの種類に関わらず、インストールされている全てのフォント名を取得する方法はないでしょうか? よろしくお願いします。

  • 変数名の取得

    Dim Hensu(5) AS String とあった場合、 この変数名の "Hensu" を取得することは できないものでしょうか? よろしくお願いします。

  • postgreSQLとVB2005接続でのデータ取得方法

    postgreSQL8.2.3(linux)とVB2005 expressを接続しようとしているのですがエラーが表示されうまくデータを取得できず困っております。どのようにVBをプログラムすればよいのか教えていただけるとうれしいです。。。。 現在のVBにいれているプログラムですが Dim strConnect As String Dim adoConnection As Object Dim ans As Object strConnect = "DSN=*****; UID=*****; PWD=*****" adoConnection = CreateObject("ADODB.Connection") adoConnection.Open(strConnect) ans=adoConnection.execute("select name from table;") Do While Not ans.EOF Debug.Print(ans.fields("name")) ans.MoveNext() 実行するとdebug.print実行時にエラー表示され 型 'Field' から型 'String' への変換は無効です。 となります。postgresはpgadminにて接続動作確認できています。 ご回答のほどよろしくお願いします。

  • コントロールタイプを絞ってループしたい

    アクセスのフォーム上のコントロールをループする際に テキストボックスだけ絞ってループしたいのですが Sub Sample() Dim myFormName As String Dim ctl As Control myFormName = "フォーム1" For Each ctl In Forms(myFormName).Controls If ctl.ControlType = acTextBox Then End If Next ctl End Sub これだとテキストボックスの量が多くて、2秒くらいかかるのですが For Each ctl In Forms(myFormName).Controls この時点で、テキストボックスだけ絞る方法はありますか? For Each ctl In Forms(myFormName).ControlType(acTextBox) こうするとエラーになりました。 ご教授よろしくお願いします。

  • ページに乗っているコントロールの一覧を取得するコー

    タブコントロールのページに乗っているコントロールの一覧を取得するコードを教えてください。 あくせすです。 1ページ目には、コマンドボタン、テキストボックスが乗っています。 それを取得したいです。 2ページ目には違うコントロールが乗っています。 2ページ目のコントロールは取得したくないです。 http://hpcgi1.nifty.com/MADIA/VBBBS/wwwlng.cgi?print+200911/09110001.txt を参考に、 Sub test() For Each tabctl As TabPage In TabControl1.TabPages For Each ctl As Object In tabctl.Controls If ctl.Name.toString.IndexOf("TextBox") > -1 Then Dim tb As TextBox tb = DirectCast(ctl, TextBox) End If Next Next End Sub にしましたが構文エラーになってしまいました。 VB.NETのコードだからですよね。 VBAのコードをご教授いただけますか。よろしくお願いします。

  • コマンドバーのコントロールって全部で何個あるの?

    全部一覧にして書き出してみたいのですが エラーを無視してる為、最高いくつあるのかわかりません。 Sub tes() Dim myBar As CommandBar Dim myCmd As String Dim blYes As Boolean Dim i As Long myCmd = "test" For Each myBar In CommandBars If myBar.NameLocal = myCmd Then blYes = True '既にmyCmdがあるのなら削除する Application.CommandBars("test").Delete Exit For End If Next Set myBar = CommandBars.Add(Name:="test") On Error Resume Next For i = 1 To 2000 myBar.Controls.Add ID:=i Next i myBar.Visible = True Set myBar = Nothing End Sub

専門家に質問してみよう