• 締切済み

vb.netでオブジェクトの種類を知りたい

こんばんわ vb.netでオブジェクトの種類を知る方法はないでしょうか? 例 form上にtextbox1を配置した上で 'メインルーチン public sub main() dim ret = test(textbox1) msgbox("textbox1は" & ret & "です") endsub 'サブルーチン public function test(obj) dim ret as string 'ここでobjがtextboxかcheckboxか判別したい return ret end function このようなことが可能でしょうか? 可能なようでしたらどうすればよいかご教授お願いします。

みんなの回答

  • wormhole
  • ベストアンサー率28% (1619/5653)
回答No.1

関連するQ&A

  • vb.net変数に入れた文字列でメソッドを実行する

    こんにちわ!! Vb.netで文字列を格納した変数を使ってメソッドを呼び出したいのですが、可能でしょうか? サンプル 'メインルーチン public sub test() Dim aaa as string ="testfunction" Dim num as integer=0 '↓の様にメソッドを呼び出したい Dim bbb = aaa(num) Msgbox(bbb ,vbinformation) aaa="testfunction2" bbb=aaa(num) Msgbox(bbb,vbinformation) Endsub 'メソッド1 Private function testfunction1(num) Return num+1 End function 'メソッド2 Private function testfunction2(num) Return num+2 End function 上記はあくまでサンプルです。 実際はメソッド数が多く、aaaにいれる名前も別で取得するので、stringになります。 ですので、bbb=aaaはforで回します。 このようなことは可能でしょうか? やりかたもしくは解決方法があればお願いします。

  • VB.netでパスワード変更

    下記のようなパスワードを変更するフォームをVB.netで作成したのですが、 実行すると、いつも異なるretValの値がかえってきて変更できません。 retValの値もよくわからない大きな数値がかえってくるのでどのようなエラーかも 判断つかず。 どこが間違っているかお分かりになる方いらっしゃいますでしょうか。 Public Class Form1 Private Declare Function NetUserChangePassword Lib "netapi32.dll" (ByVal Domain As String, ByVal User As String, ByVal OldPass As String, ByVal NewPass As String) As Long Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim retVal As Long Dim sDomain As String Dim sUser As String Dim sOldPass As String Dim sNewPass As String sDomain = "xxxxxxx" ←ここはサーバのIPアドレス sUser = TextBox1.Text sOldPass = TextBox2.Text sNewPass = TextBox3.Text retVal = NetUserChangePassword(sDomain, sUser, sOldPass, sNewPass) MsgBox(retVal) End Sub End Class

  • VB6-オブジェクトを配列にセット

    質問用に、本来作りたいものではなく、機能に絞った質問をします。 ちなみにNo.2567628とは違います。 テキストボックスが10個あり、Text1、Text2、…Text10というオブジェクト名となります(説明の便宜上以上の名前になっているが実際はtxt○○で、○○の規則は無い)。仕様の都合上、text(1)、text(2)…の配列は使用できません。(配列のタイプはNo.2567628) 上記の仕様で、全てのテキストボックスをvbnullstringに割り当てたいのですが、 Private Sub Form_Load() Dim i As Integer Dim obj(9) As Object Set obj(0) = Text1 Set obj(1) = Text2 Set obj(2) = Text3 Set obj(3) = Text4     … Set obj(9) = Text10 For i = 0 To 10 obj(i).text = vbnullstring Doevents Next i End Sub で、本来出来るのですが、 Set obj(0) = Text1 の右辺がStringで定義したい場合ができません。 つまり Set obj(0) = "Text1" という感じです。 (本来のシステムなら"Text1"にあたる所が"strData"とかになる) Private Sub Form_Load() Dim i As Integer Dim obj(9) As Object Set obj(0) = "Text1"  'ここでエラー Set obj(1) = "Text2" Set obj(2) = "Text3" Set obj(3) = "Text4" Set obj(4) = "Text5" Set obj(5) = "Text6" Set obj(6) = "Text7" Set obj(7) = "Text8" Set obj(8) = "Text9" Set obj(9) = "Text10" For i = 0 To 9 obj(i).Text = vbNullString DoEvents Next i End Sub ちなみにエラーは「型が一致しません」です。 どこを直したらいいか教えてください。

  • オブジェクトの消滅と関数の戻り値オブジェクト

    public sub test1() { dim hoge as classX = tes2() test2.getHogehoge() } public Function test2() as classX { dim ret As New classX("初期化") return ret } 大変簡略化してますが上記2つの関数があった場合 関数test1でclassX型のアドレスhogeに、test2()が返す classX型オブジェクトの参照を代入しています。 でこの実体というかインスタンスretはtest2()の中の スコープで消滅する自動変数として生成されています。 んで実際関数test2を抜けるときretのインスタンスは 破棄されるのにtest1ではそれをhogeアドレスに代入して 使用していいのでしょうか?

  • VB2008 Formを関数の引数にする

    お世話になります VB2008で開発をしています Formを2つ作成し どちらも同じ名称のテキストBOX(TextBox1)コントロールを貼り付けています Publicの関数でそれぞれのFormに値をセットしたいのですが 「'TextBox1' は 'System.Windows.Forms.Form' のメンバではありません。」 とエラーが発生してしまいます 初歩的な質問で申し訳ありませんが ご助言頂けると助かります 宜しくお願い致します ソース: --------------------------------------------------- Module Module1 Public Sub Main() Dim Form1 As New Form1 Dim Form2 As New Form2 SetValue(Form1) SetValue(form2) End Sub Private Sub SetValue(ByVal obj As Form) obj.TextBox1 = "TEST" End Sub End Module ---------------------------------------------------

  • Form オブジェクトの戻り値の設定

    はじめまして。Porome です。 Excel 2003 の VBA を使ってプログラミングをしています。 Form オブジェクトの戻り値の設定方法/受取方法について教えてください。 実装したいプログラムの概要は、以下の通りです。 標準モジュールに記載したサブルーチンから Form オブジェクトを 生成し、Form オブジェクトで入力されたデータを標準モジュール側 で取得する…というものです。 書きたいソースコードのイメージは以下の通りです。 Sub MySub1() dim i_Form As New MyForm1 dim i_Name As String dim i_Age As String dim i_Ret As Integer 'MyForm1OK, MyForm1Cancel が戻ってくるまで、じっと待つ i_Ret = i_Form.Show, vbModal Select Case i_Ret 'MyForm1 で OK ボタンが押された Case MyForm1OK: i_Name = i_Form1.txtName.Value i_Age = i_Form1.txtAge.Value MsgBox(i_Name & " さんの年齢は " & i_Age & " 歳です") 'MyForm1 で Cancel ボタンが押された Case MyForm1Cancel: MsgBox("処理はキャンセルされました") 'MyForm1 では、MyForm1 では、MyForm1OK, MyForm1Cancel 以外は '戻さない仕様とします。 Case Else '何もしない(ここには来てはいけない) End Select End Sub こういったことを実現するためには ・MyForm1 では、 OK ボタンを押したら、MyForm1OK を Show メソッドの戻り値として セットし、処理を MySub1 に戻す Cancel ボタンを押したら、MyForm1Cancel を Show メソッドの戻り値としてセットし、処理を MySub1 に戻す OK ボタン、Cancel ボタン Click 以外の Form イベントでは、MyForm1 での処理が継続され、MySub1 は MyForm1 の戻り値(MyForm1OK/MyForm1Cancel)を、じっと待つ といったことが必要になってくるかと思います。 こういった処理を実装するには、呼び出し元 (MySub1)、呼び出し先 (MyForm1) では、それぞれどのようなコードを記載すればよろしいでしょうか? 説明が下手で申し訳ありませんが、アドバイスをお願いいたします

  • C#で使えるオブジェクトを作成するには

    VisualC++のMFCを利用して、C#でも簡単に使えるオブジェクトを作成したいです。 MFCのオートメーションをサポートするDLLを作成しまして、 メソッドは echo とします。 VBSでは、 dim obj set obj = CreateObject("mytest.test") MsgBox obj.echo("hello") で簡単にオブジェクトを利用することができますが、 WEBで探したら、C#は結構面倒です。 MFCでどうやってオブジェクトを作ったら、 C#でもVBSのように簡単に使えるでしょうか。 ひとつ案として、ActiveXコントローラーを作ったら、 C#のフォームに貼り付けて、それならば、簡単にメソッドを呼び出すことができます。でも、GUIが必要になっちゃいます。 できればC#でこんな風に、  Mytest.test obj = new Mytest.testClass(); MessageBox.Show(obj.echo("hello")); 見たいなことをしたいです。 MFCでどうやってこのような Mytest.test を作れるでしょうか。 よろしくお願いします。

  • VBのクラスの利用

    VBの初心者ですが、FormにTextBoxとコマンドボタンを配置して、ボタンクリックでTextBoxに"ABC"と表示させるものをクラスを使ってやろうと思っています。WriteAクラスを作り、その中にkakikomiメソッドを作り、引数を(TextA AS TextBox)とし、メソッド内部でTextA.Text="ABC"としました。 コマンドボタンクリックメソッド内部で、  Dim obj As WriteA  Set obj=New WriteA  obj.kakikomi(Text1)//Text1はTextBoxのオブジェクト名 とすると、[引数の型が違う]でコンパイル出来ません。どうしたら良いのでしょうか?

  • Excel VBA でExecuteExcel4Macro("GET.OBJECT(48,

    エクセル2000です。 以前、ワークシートに配置したフォームツールのラベルの参照元を取得するマクロをご教示いただき、以下のTest01は問題なく作動しています。 Sub test01() Dim obj As Object Dim i As Integer Dim obj_n As String 'オブジェクトの名前 With ActiveSheet For Each obj In .Labels i = i + 1 .Cells(i, 2) = obj.Name: obj_n = obj.Name .Cells(i, 3) = obj.TopLeftCell.Address 'GET.OBJECT で、リンクがないものを取ると、False になる .Cells(i, 5) = ExecuteExcel4Macro("GET.OBJECT(48,""" & obj_n & """)") .Cells(i, 6) = obj.OnAction Next End With End Sub 今回、同一シートではなく別シートに表示させようと以下のTest02を書いたのですが、やってみると .Cells(i, 5) はすべて#VALUE!エラーになってしまいました。 ExecuteExcel4Macro("GET.OBJECT(48~がどのようなものかわからずやっているので応用がききません。(そもそも48って?) どのようになおしたらよいのかご教示いただければ幸いです。 Sub test02() Dim obj As Object Dim i As Integer Dim obj_n As String Dim ws As Worksheet, ns As Worksheet Set ws = ActiveSheet Set ns = Worksheets.Add With ns For Each obj In ws.Labels i = i + 1 .Cells(i, 2) = obj.Name: obj_n = obj.Name .Cells(i, 3) = obj.TopLeftCell.Address .Cells(i, 5) = ExecuteExcel4Macro("GET.OBJECT(48,""" & obj_n & """)") .Cells(i, 6) = obj.OnAction Next End With End Sub

  • VBのパスワードに関して

    VBのパスワードについて質問です。 今ソースに書いたパスワードを認証させて、Form2に移動させようと思っています。 Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If TextBox1.Text = "1234" Then MsgBox("パスワードが正しく入力さました") Dim frm2 As New Form2 frm2.Show() Else MsgBox("パスワードが正しくありません") Me.close() End If End Sub End Class 上記で質問があります。 まずForm1には TextBox1 .. 5 まで設置しています。 上記のソースだと"TextBox1"の"指定文字"が正しければ、 MsgBox("パスワードが正しく入力さました")と表示しますが、 これを増設したいのです。 例えば [TextBox1] - [TextBox2] - [TextBox3] - [TextBox4] - [TextBox5] [Button1] にしたいのですが、ソースコードはどの様になりますか? 順番としては1から5の小さい値でOKであれば認証する。 あと何処かで見たのですが、 これに起動の回数制限を設けたいと思っています。 その方法も教えて頂ければありがたいです。 また外部者から逆コンパされない様に暗号化方法も教えて欲しい! 私は一切、Web系の認証はしないので・

専門家に質問してみよう