VB6.0のフォーム間の関数呼び出しについて

このQ&Aのポイント
  • VB6.0でのフォーム間の関数呼び出しについて教えてください。現在、VB2005で開発をしているのですが、資産の関係上VB6.0での開発が必要になりました。
  • Form1とForm2の間でテキストボックスコントロールを利用した関数keisanを呼び出す方法を教えてください。
  • 初歩的な質問で申し訳ありませんが、実行可能な呼び出し方法についてアドバイスをいただけると幸いです。
回答を見る
  • ベストアンサー

VB6.0のフォーム間の関数呼び出しについて

VB6.0のフォーム間の関数呼び出しについて いつもお世話になっております。 これまでVB2005で開発を行ってきたのですが、 これまでの資産の関係上VB6.0での開発を行う必要が出てまいりました。 現在下記のようになっております。 フォーム1:Form1    関数:keisan フォーム2:Form2 Form1ではテキストボックスコントロールを利用した関数keisanがあります。 その関数をForm2上から呼び出すことは可能でしょうか? 以下のやり方では実行できそうでしょうか? call Form1.keisan 初歩的な質問で申し訳ございません。 なにとぞアドバイスをいただけると幸いです。

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

  • ベストアンサー
  • BellBell
  • ベストアンサー率54% (327/598)
回答No.4

Form1に書かれている関数が、 Publicで作成されているなら、 Call Form1.keisan で呼び出せますよ。 もうちょっと詳しく書くと Form1内に Public Sub keisan() End Sub と書かれてるならです。※Functionでも可 回答としては、#3の人の補足でしかないけど。

その他の回答 (3)

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.3

Public Sub keisan() End Sub とかなら呼び出せますけど

  • kuro-pon
  • ベストアンサー率0% (0/4)
回答No.2

basファイルを追加して、keisanを丸ごと持っていけば良い。 その時、public subなりpublic functionなりにすることで どちらのformからでも参照出来ます。 他にも色々やり方はあるけど、手っ取り早い方法がこれだとおもいますよ。

  • fujiponxx
  • ベストアンサー率32% (186/580)
回答No.1

回答ではありませんが・・・ Form2から呼んだら、Form1のテキストボックスを参照してしまう気がします。 簡単なのは、Form2にコードをまるごとコピってしまえばいいと思います。 変更が入ったら両方なおさなきゃいけないけどね。

関連するQ&A

  • 関数呼び出しについて

    VB6.0でSubとFunctionの使い分けに迷っています。 ・関数呼び出しの使い分けについて教えていただけますか? ・どちらもcallで呼び出せるのでしょうか? ・関数はcallを使わなければならないのでしょうか?

  • フォームの呼び出しについて

    VB.NETで メインのEXEとサブのDLLに分けて作っています。 EXEからDLL内のフォームを表示させようとする場合ですが、 VB.NETではどのように呼ぶべきなのでしょうか? VB6の頃は、EXEからDLL(ActiveX DLL? )のフォームが直接呼べなくて、 EXE側 Dim dll as new DLLClass dll.FormShow() DLLのクラス(DLLClass) Sub FormShow() DllForm.Show みたいに、DLL内のクラスのメソッドをコールし、 その中で、フォームを表示するという手順で呼び出してました。 VB.NETではFormもクラスなので、EXEからDLL(クラスライブラリDLL)内のフォームを 直接呼んでもいいように思うのですが(実際直接呼べる)、 カプセル化というのを考えたときに、フォームを直接呼ぶのではなく、 コントロールするクラスを経由して(VB6のときの方式)呼び出すべきなんじゃないかなと思うのです。 どちらがよいのでしょうか?

  • VB2010 フォームのリロード

    今までVB6.0でプログラミングをしていた者で、最近VB2010に開発環境を変えました。さっそくソフトを開発しているのですが、フォームのリロードが必要なところがあったためそこのプログラムをネットなどで参考にして書いてみたのですがどうしてもエラーがでます。 今までVB6.0ではその部分を Private Sub Command1_Click() Set Form1 = Nothing Call Unload(Me) Form1.Show End Sub と、記載していました。これをVB2010のコードに書き換えるとどのようになるのでしょうか。 ご回答よろしくお願いいたします。

  • 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 ---------------------------------------------------

  • Abs関数 プラスにならない

    アクセス2010です。 Absは、-100を100と表示させる関数ですよね? txt_テキスト1には、100、txt_テキスト2には200が入ってるとして、 フォーム上のテキストボックスのコントロールソースに =Abs([Forms]![フォーム1]!.[Form]![txt_テキスト1])-([Forms]![フォーム1]!.[Form]![txt_テキスト2]) と入れました。 100-200は、-100だけど、ABS関数で、100になるはずですが、 -100がテキストボックスに表示されます。 なぜでしょうか?

  • VBのフォームでD&Dを有効にする

    VB2013 expressです。 VBで作成したフォーム上にファイルをD&Dすることで フルパス名を取得するプログラムを書きたいのですが http://dobon.net/vb/dotnet/control/droppedfile.html このページにのように、テキストボックス上に D&Dすればうまくいくものは見つかったのですが、 フォーム全体で受け付けてくれるものが見つかりません。 どのように改良すれば良いか教えてください。

  • フォームがリサイズされた時の各コントロールの位置変更コードについて

    教えてください。 前々から疑問だったのですが、VBでフォームをリサイズした場合に それぞれのコントロールもそれに合わせて大きさが変更されたり 移動したりという状態にするには、当然Form_Resizeのコードを 書く必要があると思うのですが、VBでツールを作成される方は 皆さんひとつひとつのコントロールの位置を計算しながら毎回 コードを書いているのでしょうか? OCXなどを使うと、勝手にコントロールの位置を調整してくれるものも ありますが、やはり皆さん自分でコードを書いていらっしゃるのでしょうか? 私が分かるのは、フォームにテキストボックスのみを貼り付けて、 Private Sub Form_Resize() Form1.text1.Top = 0 Form1.text1.Left = 0 Form1.text1.Width = ScaleWidth Form1.text1.Height = ScaleHeight End Sub と書くと、リサイズに合わせてテキストボックスが画面いっぱいにサイズ変更 するというものです。 コマンドボタンとか色々貼り付けた状態ではどのように書けばいいのか いまひとつ分かりません。 皆さんはどのようにされているのでしょうか? 是非是非教えてください。

  • vbで似たようなフォームを作るとき

    ちょっと、今さらお聞きするのもはずかしいのですが、教えて下さい。 VB2010でWindowsアプリケーションを作っています。 既にあるForm1を使って別のフォームを作ろうとしているんですけど、内容はForm1と9割が同じものです。 これまでは、デザイナーですべてのコントロールをコピーペーストし、次にコードをコピーペーストしていたんですが、多分もっと別のやり方があるんだろうなあ、と思っていました。 「別名で保存」といったような機能もなく、やり方がわかりません。 どなたか教えて下さい。

  • VB.netでフォームのクローン

    VB.net2013にて、フォームアプリ作成中です。 アプリの構成としては、 Aフォーム、Bフォームの2画面があり Aフォームの呼出ボタンにより、フォームを呼び出す仕組みです。 Bフォームでは、データ編集できる 下記のような入力コントロールが多数配置されています。 ・テキストボックス ・スプレッドシート ・ラジオボタン ・ユーザコントロール各種 等々 ※Aフォームには、編集状態を保持するために Bフォームのインスタンスを保持しています。 Bフォームには、キャンセルボタンが配置してあり、 これにより編集状態を、画面を開きなおした段階まで戻したいと思っています。 Bフォームを表示する際に、 Aフォームの保持している、Bフォームのインスタンスを クローンコピーし退避しておくことで Bフォームクローンで元に戻そうと構想しています。 ◾︎案1ーーー memberwisecloneのクローンでは、 Bフォームの参照型のメンバをディープコピー出来ないようでした。 ーーーーーー ◾︎案2 ーーー 下記参考サイトより、 メモリ上に一旦シリアライズして、コピーする方法は、 基底であるFormクラスがシリアライズできないため こちらも出来ませんでした。 d.hatena.ne.jp/tekk/touch/20100131/1264913887 ーーーーーー フォーム上のコントロールをクローンする 他に良い方法はないでしょうか? 案1では、値型のメンバはmemberwisecloneでクローン出来たため 残りのコントロールをどのようにディープコピーするかで 悩んでいます。 InvokeMemberなるもので、対象のコントロールについて 別インスタンスを生成するというところは出来たのですが コントロールの編集途中までの各種プロパティ値までは 引き継がれませんでした。 やはり別インスタンスとしたところに 再度入力値を設定しなおしてあげる必要があるのでしょうか? 作業工数と、汎用性を考えると もっと他に良い方法があるのではないか とは思うのですが・・・ もしよりよい方法をご存知の方いらっしゃいましたら ご教授願います。よろしくお願いいたします。

  • VB2005で、フォームを初期化したいのですが、教えてください。

    VB2005で、フォームを初期化したいのですが、教えてください。 VB2005で、フォームにデータベース内容(ORACLE)を表示するプログラムを作っています。その際、F8キーを押すと画面内容(テキストボックスやDatagridviewの編集内容)を初期ロード状態に戻すようにしたいと思い、F8キー押下時のイベントに、以下のようにプログラムしました。 dim frm as form frm = new form1 me.close frm.show() としてみましたが、me.closeで、プログラムが終了してしまうようです。 どうするのが適切かお教えください。

専門家に質問してみよう