- 締切済み
VB.NET)コンボボックスの連動について
失礼いたします、コンボボックスを連動させるプログラムを書いているのですがうまく連動しません、よろしければお知恵をお貸しくださいませ コードを書くにあたりの条件は、開発はVisual Basic 2005のVisual Basic データベースから呼び出す場合ならAccess 2003を使用(今現在は使用しないで開発しています) Access内でコンボボックスを、Excelでコンボボックスをなどはしません…今回はVBでコンボボックスを連動させたい 今回ちょっと公に出来ない箇所があり記号で伏せさせていただきますが、記号は日本語が入ります Form1でload(ロードってこれであってましたっけ?)部分に以下を記載 dim strdata as string = {"●●","●●","●●"} (すみません、あと一文あったのですがちょっと思い出せないので) それで連動するcomobox2には以下を記載 dim strdata as string = {"●●","●●"} dim i as integer select case strdata(i) case 0 combobox2.item.addrange("●△ ×") combobox2.item.addrange("●△ ×") combobox2.item.addrange("●△ ×") case 1 combobox2.item.addrange("●△ ×") combobox2.item.addrange("●△ ×") combobox2.item.addrange("●△ ×") となり、combobox1で最初の●●が選ばれればcombobox2のcase0を表示させるようにしたいと思っていますが上手く表示が出ません 今週中に仕上げなければいけないので昨日今日と色々調べてみたのですが、VBAやAccess・Excel関係が殆どでVBのが見つからずAccessやExcelのを見ても上手くいかなかったのと、解説が良く分からなかったので、分かりやすく解説をお願いします
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- pulsa
- ベストアンサー率57% (34/59)
これは、Select Case の使い方自体の問題ですね コンボボックスの連動はそのあとの話です 普通しませんが例として Select Case "B" Case "A" MsgBox "Aです" Case "B" MsgBox "Bです" Case Else MsgBox "どちらでもありません" End Select つまり、Select Caseで指定した内容と一致したCaseに書かれた処理を行います Select Caseは Select Case Ifの左側 Case Ifの右側 と思えば良いんです 示されたコードの場合 Select Case strdata(i) を使うなら、Case "●●" ですね case 0 で判定したい場合は、Select Case i です また、 回答にあった Case conbobox1.text("●●") としたければ Select Case conbobox1.text("●●") です 応用技として Select Case True Case strdata(i) = "●●" MsgBox "Aです" Case strdata(i) = "△△" MsgBox "Bです" Case Else MsgBox "どちらでもありません" End Select とやって「複数のIf文の中から一つの条件に一致すれば他は不要で優先順位がある場合」と言う書き方もできます これは 一致したCase以外実行されない 先に一致したCaseが優先 を利用してます 一応参考まで
- HIROs-NET
- ベストアンサー率78% (15/19)
select case strdata(i) の意味がおわかりでしょうか? strdataには{"●●","●●","●●"}をセットしていますよね? ということは case 0やcase 1にはマッチすることはあり得ないので連動しないのだと思います。 これがcase "●●"のように書いている場合は式が評価され動作すると思います。
お礼
早速ありがとうございます seclect case strdataはstrdataの中身のどれかが選ばれ それで最初の●●が選ばれたら、1番目のcaseを実行させるということでよいでしょうか caseに書くということですが、その際conbobox1.text("●●")のように書かなくていいのでしょうか? case 0ではなくじかにcase "●●"と記載してしまってよいのでしょうか? これがコンボボックス3個になって3個とも連動させるときも同様にして書けばよいのでしょうか?
お礼
>Select Case strdata(i) を使うなら、Case "●●" ですね >case 0 で判定したい場合は、Select Case i です >また、 >回答にあった Case conbobox1.text("●●") としたければ >Select Case conbobox1.text("●●") です 上記2点を応用して記載したところ無事動きました >一致したCase以外実行されない >先に一致したCaseが優先 今回これが起きてしまうとデモ版とはいえ提出できないのですが、上記のもので何とか以上の点を克服できました ご回答ありがとうございました