• ベストアンサー

【VB6.0】 あるフォームから他のフォームへ値を受け渡したい

タイトルの通り、あるフォームから他のフォームに値の受け渡しを行いたいのですが、どのようにしたらよいのでしょうか?? 以下のようなコードできんのかなぁ~~って、やったみだけど、 むりでした。。サンプルコード内でいうParamsのような値を 受け渡しさせたいのですが・・・。ご存知の方、申し訳ないですが 教えて頂けると非常にありがたいです。それと、、私はVB初心者です。 ---FormA--- Public Params as new Params Private sub Command1_Click() Call Me.Hide FormB.Show vbModeless, Me End sub ---FormB--- Private Sub Form_Load() 'Owner.Paramsのような形で参照できるかと思ったができませんでした。 End sub

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

  • ベストアンサー
  • akina_line
  • ベストアンサー率34% (1124/3287)
回答No.1

こんにちは。  下記サイトをご参照下さい。   http://www005.upp.so-net.ne.jp/h-masuda/vb6/vb6first/forms040.html    簡単に渡すには、グローバル変数を使えばよいと思います。    別な方法では、FprmAにPrrams変数を参照するためのPublic関数を作り、FormBからその関数を呼び出して参照することも出来ると思います。 では。

その他の回答 (2)

回答No.3

呼び出し元formにプロパティを 実装すれば簡単にできます。 (呼び出し元) Option Explicit Public eX As String  ← 呼び出し元のプロパテイになります。 Private Sub Command1_Click() eX = Text1.Text 'form2にform1のプロパティ「eX」を表示する With Form2 .Text1.Text = Me.eX .Show End With End Sub とするか 'form2にform1のプロパティ「eX」を表示する With Form2 .Text1.Text = Me.eX .Show End With ↓ form2.Show だけにして 呼び出し先で なにかのイベントで ex) Private Sub Form_Load() Text1.Text = Form1.Ex End Sub とか・・・

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

FormA.Params で取得できると思いますが出来ませんか?

関連するQ&A

  • VB2005 DataGrid1初期化について

    はじめまして。 VB2005 DataGrid1の初期化について質問があります。 下記処理を実行すると、 一度目のFormBを表示ではDataGridに正しく表示されます。 FormBにてボタンEndを押し、再度FormBを表示すると DataGridの表示が化けてしまいます。 (縦・横のスクロールバーが表示されなくなり、  列・行の幅も小さくなっている) DataGrid自体は何も設定していなく、 表示内容に対して自動でDataGridを調整してくれる ものだと思っておりました。 何か初期化(Me.DataGrid1.Refresh)などが問題なので しょうか? 長文になりましたが、何か少しでも解決策をお願いします。 Private Sub Form_Load 'FormBを表示  FormB.ShowDialog  '再度FormBを表示  FormB.ShowDialog Exit Sub Private Sub FormB_Load  Dim Aclone As New ADODB.Recordset  'Aclone設定  If Aclone .State = ADODB.ObjectStateEnum.adStateOpen Then   Aclone .Close()  End If  'DataGrid初期化  Me.DataGrid1.Refresh()  'XXXX(接続・テーブル情報)の内容をAcloneにセット)  Aclone = XXXX.clone  'AcloneをDataGridにセット  Me.DataGrid1.DataSource = Aclone Exit Sub Private Sub FormB_Btn_End  Me.Hide Exit Sub

  • DataGridViewの再描画。

    度々スイマセン。 VB2005、SQLServer2005環境です。 FormA、FormBの2つのフォームがあり、FormAはデータを表示、 FormBはそれに対してデータを追加するというプログラムを 作っています。 FormBでデータを登録し、FormBを閉じたタイミングで、 FormAのDataGridViewを再描画して、最新のデータの状態に したいのですが、うまくいきません。 ---FormAで記述しているコード--- Public Sub Form_Closed(ByVal sender As Object, ByVal e _ As System.Windows.Forms.FormClosedEventArgs) '登録終了時に、グリッドを再表示 '再表示 Me.TestTableAdapter.Fill(Me.DataSet1.Test) End Sub ---FormBで記述しているCD--- Private Sub FormB_Load(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles Me.Load AddHandler Me.FormClosed, AddressOf FormA.Form_Closed End Sub 上記のように、FormBが閉じた時に、イベントで、 Me.TestTableAdapter.Fill(これの中身は、該当テーブルをアスタで すべて取得してます)を呼んでいます。 FormAには削除処理もあって、その時は、Deleteが流れた後に Me.TestTableAdapter.Fillを呼んだらデータが最新の状態になった ので、これで出来るかと思ったのですが…。 Fillの後にDatagridView.Refreshも追加してみましたが、 ダメでした。 どうすれば再描画できるでしょうか? ご教授ください。

  • Access2007で、呼び出し元フォームをアクティブにしない。

    Access 2007 WindowsXP 上記の環境なのですが、 フォームを開いたとき、呼び出し元のフォームをアクティブにしない、 ということが可能でしょうか。 例えば、VBであれば、以下のようなイメージです。  呼び出し元:FormA  呼び出されるフォーム:FormB  FormB.Show vbModeless, FormA 実現したいことは、 呼び出されたフォームは常に全面に表示しつつ、 呼び出し元のフォームのテキストボックスを編集したいです。 よろしくお願いいたします。

  • VB6.0で、フォームの表示位置を画面左上にしたいのですが。

    VB6.0で、フォームの表示位置を画面左上にしたいのですが、以下コードの「StartUpPosition」でエラーがでます。 コードが対応していないのでしょうか? ご存知の方教えてください。よろしくおねがいします。 Private Sub Form_Load() Me.Picture2.BackColor = vbWhite \'グラフ背景色 Me.StartUpPosition = 3 \'フォームを左上に表示 End Sub

  • vbaで帳票フォームで開きたい アクセス

    vbaでフォームを開くときに 既定のビューを指定してるのですが 指定したとおりになりません。 Private Sub Form_Load() Me.DefaultView = 1 '帳票フォーム End Sub としてもデータシートビューで開かれてしまいます。 Private Sub Form_Load() Me.DefaultView = 1 '帳票フォーム MsgBox Me.DefaultView End Sub とすると、1が返るのに やっぱりデータシートビューになってしまいます。 なぜでしょうか? エラーにもなりません。

  • ユーザーフォームにての記述を教えて下さい

    エクセル2010で「値のみコピー」だけでなく「値と文字色のみコピー」のユーザーフォームにての記述を教えて下さい。 ちなみに「値のみコピー」のユーザーフォームにての記述は次のとおりです。 これをどう加工したらいいでしょうか。 Private Sub CommandButton1_Click() Selection.PasteSpecial Paste:=xlPasteValues UserForm1.Hide End Sub Private Sub CommandButton2_Click() UserForm1.Hide End Sub

  • 複数のユーザーフォームをコマンドボタンにて表示・非表示させるには

    VBA勉強中のものです。 複数のユーザーフォームをコマンドボタンを使用して画面への表示切替を考えております。 例)ユーザーフォーム1,ユーザーフォーム2,ユーザーフォーム3のそれぞれにコマンドボタン1,コマンドボタン2,コマンドボタン3を作成し、   コマンドボタン1→ユーザーフォーム1を表示   コマンドボタン2→ユーザーフォーム2を表示   コマンドボタン3→ユーザーフォーム3を表示 とするようなことを考えおります。  そこで、下記のようにコードを作成したのでですが,一度表示させたユーザーフォームを再度表示させようとコマンドボタンをクリックしたら、「フォームはすでに表示させているのでモーダル表示はできません」とエラーがでてしまいます。   どなたか、どのようにしたらいいかご教授ねがいます。 サンプルコード) --------------------------------------------------- 'UserForm1のコード Private Sub CommandButton2_Click() Call UserForm2_show UserForm1.Hide End Sub Private Sub CommandButton3_Click() Call UserForm3_show UserForm1.Hide End Sub ---------------------------------------------------- 'UserForm2のコード Private Sub CommandButton1_Click() Call UserForm1_show UserForm2.Hide End Sub Private Sub CommandButton3_Click() Call UserForm3_show UserForm2.Hide End Sub ------------------------------------------------------- 'UserForm3のコード Private Sub CommandButton1_Click() Call UserForm1_show UserForm3.Hide End Sub Private Sub CommandButton2_Click() Call UserForm2_show UserForm3.Hide End Sub ------------------------------------------------------------ '標準モジュール コード Sub UserForm1_show() UserForm1.Show End Sub Sub UserForm2_show() UserForm2.Show End Sub Sub UserForm3_show() UserForm3.Show End Sub

  • #008000が&H8000に変化する

    vbaで色設定したいのですが、勝手に色コード(?)が変化します。 テストとして、フォームを開いた時にフォームの色を変えようと思うのですが Private Sub Form_Load() Me.詳細.BackColor = &H008000 End Sub これにしてエンターを押すと Private Sub Form_Load() Me.詳細.BackColor = &H8000 End Sub になってしまいます。 もともと#008000は緑なのですが、&H8000に変化すると黒になります。 #008000のコードは使えないのでしょうか?

  • フォームが表示されない

    vb.net使用です。 メニュー画面(メイン) 待ち画面(テキストボックスとボタンがあります。) 実行画面 の3つのフォームがあります。 メイン画面から待ち画面を表示し、待ち画面から実行画面に移ります。 待ち画面でテキストにデータが入るまでループさせていて、 テキストにデータが入ってから実行画面を表示させるプログラムを作っているのですが、 待ち画面のループのプログラムで実行画面を表示させているのですが、(この時は表示している) プログラムが終了すると実行画面が消えてしまいます。 ループのプログラムをやめて、ボタンから行うと実行できます。 INVOKEも使用してみても状況がかわりません。 実行画面が使用できるようにするにはどうしたらよいか教えていただけないでしょうか。 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ Private Sub 待ち画面_Load(sender As Object, e As System.EventArgs) Handles Me.Load Psmachi End sub Private Sub  Psmachi() Do Until txttxt.text <> “”     実行画面.show Me.hide Loop End sub Private sub bottan_click     実行画面.show Me.hide End sub

  • VBA ユーザーフォーム

    エクセルVBAのユーザーフォームのInitializeでnに値を代入し Private Sub UserForm_Initialize() Dim n As Long n = 19 ・・・・・ End Sub 同じユーザーフォームのボタンコマンドが押されたら Private Sub CommandButton2_Click() MsgBox n Worksheets("AAA").Cells(n, 3).Value = Me.テキストボックスの値.Text n = n + 1 End Sub nの値を用いてセルにテキストボックスの値を入れるというプログラムです。 値をいれたら、nをひとつ増やして次に備えるようにしたいのですが。 そもそも最初にnの値が受け渡しできません。 ボタンコマンドの最初の行でメッセージボックスにnの値を表示して確認しても何も数字が表示されません。 nの値の受け渡しを方法を教えてください。