
失礼いたします、コンボボックスを連動させるプログラムを書いているのですがうまく連動しません、よろしければお知恵をお貸しくださいませ
コードを書くにあたりの条件は、開発は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のを見ても上手くいかなかったのと、解説が良く分からなかったので、分かりやすく解説をお願いします
No.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が優先
を利用してます
一応参考まで
>Select Case strdata(i) を使うなら、Case "●●" ですね
>case 0 で判定したい場合は、Select Case i です
>また、
>回答にあった Case conbobox1.text("●●") としたければ
>Select Case conbobox1.text("●●") です
上記2点を応用して記載したところ無事動きました
>一致したCase以外実行されない
>先に一致したCaseが優先
今回これが起きてしまうとデモ版とはいえ提出できないのですが、上記のもので何とか以上の点を克服できました
ご回答ありがとうございました
No.1
- 回答日時:
select case strdata(i)
の意味がおわかりでしょうか?
strdataには{"●●","●●","●●"}をセットしていますよね?
ということは
case 0やcase 1にはマッチすることはあり得ないので連動しないのだと思います。
これがcase "●●"のように書いている場合は式が評価され動作すると思います。
早速ありがとうございます
seclect case strdataはstrdataの中身のどれかが選ばれ
それで最初の●●が選ばれたら、1番目のcaseを実行させるということでよいでしょうか
caseに書くということですが、その際conbobox1.text("●●")のように書かなくていいのでしょうか?
case 0ではなくじかにcase "●●"と記載してしまってよいのでしょうか?
これがコンボボックス3個になって3個とも連動させるときも同様にして書けばよいのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ドラゴン曲線を再帰で書く
-
VBA public変数はどのようなこ...
-
エクセルVBAでテキストボッ...
-
VBAでcallで呼び出したsubを終...
-
ClickとChangeイベントの違いは...
-
SavePictureで保存できない
-
C言語で32Bit*32Bitの演算は出...
-
texで図と表を並べたい
-
他のフォームから別のフォーム...
-
【VB6.0】 あるフォームから他...
-
アクセスできない保護レベルエ...
-
String型の値にスラッシュをつ...
-
C#のループでtextboxに値を入れ...
-
定数を構造体で・・・
-
Excel VBAでsub,dimは何の略?
-
VB6でForm_Load中にイベントを...
-
[Excel2000]auto_closeを止めさ...
-
vb.net 文字コードから漢字へ変換
-
チェックボックスを操作できな...
-
音が鳴らないようにしたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
二点の座標から距離や角度を求...
-
C#を勉強していて、指定したフ...
-
エクセルのVBAでの7×7の魔方陣...
-
IsNumeric 配列条件
-
VB.NET)コンボボックスの連動に...
-
VC++ (byte)(col & 0xFF) の意味
-
2次元配列を返す関数について
-
ドラゴン曲線を再帰で書く
-
エクセル・VBAでテキストボック...
-
このプログラムがうまく作動し...
-
教えてください。マクロでの罫...
-
エクセル ユーザーフォーム ...
-
カラーの16進表記の足し算
-
検索結果の指定列をリストボッ...
-
C#のaxWebBrowsrでエンコードを...
-
VBAにおけるニュートン法
-
線の太さ
-
テキストファイルの読み込みと...
-
for文の質問です。
-
エクセルVBAでテキストボッ...
おすすめ情報