Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


66775 / 76734 ←次へ | 前へ→

【14518】Re:コンボボックスの初期セット他
回答  ichinose  - 04/5/31(月) 18:01 -

引用なし
パスワード
   ▼佐藤123 さん、Asakiさん、こんばんは。
コンボボックスでの例です。

コンボボックスの選択肢データは、Sheet2にあるのでしたね?

Sheet2
   A   B    C   D    E    F   G   H   I
 1
 2 1   ご飯    1   1   こしひかり  1    1   1  電気釜    
 3 2   パン    1   2   あきたこまち 1    1   2  しゃもじ    
 4 3   麺     2   1   食パン    1    2   1  ガス釜    
 5          2    2   ロールパン  1    2   2  高級しゃもじ    
 6          2    3   あんぱん   3    1   1  塩    
 7          3    1   ラーメン   3    1   2  味噌    
 8          3    2   焼きそば   3    1   3  醤油
 9          3    3   そうめん                    
こんなイメージでよろしいですか?

コードは、標準モジュールに
'==================================================================
Sub auto_open()
  With Worksheets("sheet2")
   Set rng = .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp))
   End With
  With Worksheets("sheet1").CBox1
   .Clear
   If rng.Row > 1 Then
     .List() = rng.Offset(0, 1).Value
     .ListIndex = -1
     End If
   End With
End Sub


コンボボックスがあるSheet1のモジュールに
'==================================================================
Private Sub CBox1_Change()
  With Worksheets("sheet2")
   Set rng = .Range(.Cells(2, 3), .Cells(.Rows.Count, 3).End(xlUp))
   add1 = rng.Address(, , , True)
   add2 = rng.Offset(0, 2).Address(, , , True)
   End With
  With CBox2
   .Clear
   If rng.Row > 1 Then
     .List() = Filter(Application.Evaluate( _
          "=transpose(if((" & add1 & "=" & _
          CBox1.ListIndex + 1 & ")*1=1," & _
          add2 & ",""0""))"), "0", False)
     End If
   End With
End Sub
'======================================================================
Private Sub CBox2_Change()
  With Worksheets("sheet2")
   Set rng = .Range(.Cells(2, 6), .Cells(.Rows.Count, 6).End(xlUp))
   add1 = rng.Address(, , , True)
   add2 = rng.Offset(0, 1).Address(, , , True)
   add3 = rng.Offset(0, 3).Address(, , , True)
   End With
  With CBox3
   .Clear
   If rng.Row > 1 Then
     .List() = Filter(Application.Evaluate( _
          "=transpose(if((" & add1 & "=" & _
          CBox1.ListIndex + 1 & ")*(" & _
          add2 & "=" & CBox2.ListIndex + 1 & ")=1," _
          & add3 & ",""0""))"), "0", False)
     End If
   End With
End Sub

私の方で確認したところ以上で動いていますが、
試してみて下さい。
2 hits

【14506】コンボボックスの初期セット他 佐藤123 04/5/31(月) 12:05 質問
【14508】Re:コンボボックスの初期セット他 Asaki 04/5/31(月) 15:11 回答
【14510】Re:コンボボックスの初期セット他 佐藤123 04/5/31(月) 16:11 質問
【14511】Re:コンボボックスの初期セット他 Asaki 04/5/31(月) 16:37 回答
【14519】Re:コンボボックスの初期セット他 佐藤123 04/5/31(月) 18:43 お礼
【14518】Re:コンボボックスの初期セット他 ichinose 04/5/31(月) 18:01 回答
【14520】Re:コンボボックスの初期セット他 佐藤123 04/5/31(月) 18:47 お礼

66775 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free