dポイントプレゼントキャンペーン実施中!

先日コンボボックス連動についての質問をしたものです
今回も金曜夕方完成まででどうしても分からない部分がありお知恵をお借りしたく質問させていただきます(聞ける方はいるのですがどうしても直接見てもらえる状況でなく口頭になってしまうので上手く聞けず説明できず理解できずの状態です)
前回同様条件は、VB.NET(言語:VB)でAccessは利用なら最低限
Access中心の開発やマクロ、Excel等は使用しないということでお願いします

private sub form4_load(bybal~)handle form4_load
dim strdata() as string = {"年会費","月会費"}
listbox2.items.addrange(strdata)
listbox3.items.addrange(strdata)

select case form2.combobox1.text
case "東北"
label9.text = "東北"(関東とコンボボックス1で出たら関東がラベルに表示できるようしたいのです)
end select

上記はリストボックスに格納するために記載、listbox2と3は1と4にそれぞれボタンクリックがあればデータを写す作業をします

問題は下で、Form4にLabel9があるのですが別のForm2のコンボボックス
で選ばれたデータをLavel9に反映させたいのです
同様Form2のコンボボックス2(1で選ばれたものの中でさらに選択するという設定になっています)で選ばれたデータをLavel10に反映させたいのですが上手くいきません
ここはこうしたほうがいい、こう書いたらどうか?みたいなのがありましたらよろしくお願いいたします
VBはあまり経験が無く分からないことばかりなので、分かりやすくお願いできますでしょうか?

A 回答 (3件)

Form2とForm4の実体(インスタンス)の関係がどのようになっているのでしょう



Class Form2
End Class

Class Form4
End Class
といった宣言の場合 Form2のインスタンスから Form4のインスタンスは参照する術がありません

Form4から Form2が参照出来ればいいなら
Class Form4
  Public frm2 as Form2
  Private objFrm2 as Form2
  Public WriteOnly Property myForm2() as Form2
    Set( ByVal value as Form2)
      objFrm2 = value
    End Set
  End Property
End Class
といった具合に Form4側で Form2を参照出来る仕組みを作ります

Form4を作成する際に
dim frm4 As New Form4
frm4.Form2 = frm2
または
frm4.myFrm2 = frm2
といった具合に設定します ... この場合 frm2がForm2のインスタンスです

こうしておけば Form4側では
frm2.ComboBox1.Text または objFrm2.ComboBox1.Text などと参照出来ます

インスタンスとクラス名の区別をしましょう

この回答への補足

インスタンスは
class form2
end class
とForm2もForm4も同じようになっておりました
また最初の宣言でPrivateになっていたところをPublicにし、説明を参考にし一度配列をdim~で宣言してListから配列に、配列からTextにしたところ上手くいきました
まだ複数リストで選ばれた時テキストボックスに結果をリストで選ばれた個数返す(改行無しで)ことが出来てないのですが、for文(For~Next?)で選ばれた個数分ループさせるのですが、Nextは条件の処理が1回終わったらそのまま外に出てしまうという処理なのでしょうか?それとも条件の処理が全て終わるまで外に出ないのでしょうか?
後者の場合、現在複数個選んでも処理1回終わるとFor文の外にでて作業終了してしまい上手く出ないのです…2個選んだら結果2個返すというようにしたいのですがどのようにしたら良いのでしょうか?

補足日時:2008/05/23 20:15
    • good
    • 0

UserForm1.Label1.Caption = UserForm1.ComboBox1.Value


コンボボックスの値とラベルの表示はこんな感じで設定します
一々UserFormから書くのが、間違えないコツです
ComboBox1の選択に従ってComboBox2に表示するリストを切り替えるのは、ComboBox1_SelectedIndexChangedのイベントにSelectcaseで読み込むデータを選択するようにする

  Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
    Select Case (ComboBox1.ValueMember)
      Case "関東"
        ComboBox2.DataSource = hogehoge
      Case "東北"
        ComboBox2.DataSource = higehige
    End Select
  End Sub

でいかがでしょう?


あと、言っても詮無い事だけど、誰も判りにくく答えてるつもりはないんじゃないかな?
そんなつもりじゃないんだろうけど、ちょっと鼻に衝くセリフだったんで一応

明日までだね
がんばれ!

この回答への補足

ありがとうございます、参考にさせていただき少し変更を交え何とか表示が出来るようになりました

分かりにくく答えてるつもりは無いと思っております
私自身、常駐先でVBできる方に電話で聞いていたのですが口頭説明(文章だけ~言葉だけなど)では理解できなかったので分かりやすくと記載させていただきました
不快にさせてしまったのならば申し訳ありませんでした

補足日時:2008/05/23 20:12
    • good
    • 0

form4 からみて、form2 のインスタンスはどういう風に宣言されていますか?


プロジェクトの構成がよくわからないのですが、
form2 はどこで show されますか?

この回答への補足

会社いたので今まで返信できずすみませんでした
Form2はForm1(今回は作業せず)とForm4でshowされる場面がありました
Formは全部で6つあるのですがTOPの画面であるForm1とForm2のデータを入力・選択するための画面であるForm4とつながっているので、以上の2つでshowという形です

補足日時:2008/05/23 20:10
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!