プロが教える店舗&オフィスのセキュリティ対策術

失礼いたします、コンボボックスを連動させるプログラムを書いているのですがうまく連動しません、よろしければお知恵をお貸しくださいませ
コードを書くにあたりの条件は、開発は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のを見ても上手くいかなかったのと、解説が良く分からなかったので、分かりやすく解説をお願いします

A 回答 (2件)

これは、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が優先
を利用してます
一応参考まで
    • good
    • 0
この回答へのお礼

>Select Case strdata(i) を使うなら、Case "●●" ですね
>case 0 で判定したい場合は、Select Case i です
>また、
>回答にあった Case conbobox1.text("●●") としたければ
>Select Case conbobox1.text("●●") です

上記2点を応用して記載したところ無事動きました

>一致したCase以外実行されない
>先に一致したCaseが優先
今回これが起きてしまうとデモ版とはいえ提出できないのですが、上記のもので何とか以上の点を克服できました
ご回答ありがとうございました

お礼日時:2008/05/22 20:14

select case strdata(i)


の意味がおわかりでしょうか?

strdataには{"●●","●●","●●"}をセットしていますよね?
ということは
case 0やcase 1にはマッチすることはあり得ないので連動しないのだと思います。
これがcase "●●"のように書いている場合は式が評価され動作すると思います。
    • good
    • 0
この回答へのお礼

早速ありがとうございます
seclect case strdataはstrdataの中身のどれかが選ばれ
それで最初の●●が選ばれたら、1番目のcaseを実行させるということでよいでしょうか


caseに書くということですが、その際conbobox1.text("●●")のように書かなくていいのでしょうか?
case 0ではなくじかにcase "●●"と記載してしまってよいのでしょうか?

これがコンボボックス3個になって3個とも連動させるときも同様にして書けばよいのでしょうか?

お礼日時:2008/05/22 00:14

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

このQ&Aを見た人はこんなQ&Aも見ています