Excel VBA質問箱 IV

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

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


62002 / 76738 ←次へ | 前へ→

【19346】Re:2577がらみの追加質問 その2
質問  ととりん  - 04/10/28(木) 18:36 -

引用なし
パスワード
   ichinoseさまに教えていただいたところまでは、理解できたので、
次に進んでいるのですが、
さらに、悩むところが出てきましたので質問させてください。

前の表に追加事項を加え、次の表に変更しました。
  A      B         C  
1 東京都    渋谷区     1丁目
2 東京都    世田谷区    2丁目
3 東京都    新宿区     3丁目
4 東京都            4丁目
5 東京都            5丁目
6 東京都            6丁目
7 茨城県    つくば市    1丁目
8 茨城県    水戸市     2丁目
9 茨城県    ひたちなか市    
  .        .       .
  .        .       .
  .        .       .

そして、フォームにコンボボックス3を配置して
C列のデータを表示させ、コマンドボタンをクリックすると
シート2にデータを書き込むみます。

そのコードは次のとおりです。

Sub set_combo_item(cmb As MSForms.ComboBox, func_str As String)
'input: cmb データをセットするコンボボックス
'input: func_str データ抽出のための関数式
  Dim rng As Range
  Dim rng2 As Range
  Dim rng3 As Range
  With ThisWorkbook.Worksheets(1)
   Set rng = .Range("a1", .Range("a65536").End(xlUp))
   End With
  rng.Offset(0, 3).Formula = func_str
  rng.Offset(0, 3) = rng.Offset(0, 3).Value
  Set rng2 = rng.Offset(0, 3).SpecialCells(xlCellTypeConstants)
  cmb.Clear
  For Each rng3 In rng2
   cmb.AddItem rng3.Value
   Next
  cmb.ListIndex = 0
  rng2.Value = ""
  Set rng = Nothing
  Set rng2 = Nothing
  Set rng3 = Nothing
End Sub

Private Sub ComboBox1_Change()
  Dim func_str As String
  func_str = "=if(a1=""" & ComboBox1.Text & """,b1,"""")"
  Call set_combo_item(ComboBox2, func_str)
  func_str = "=if(a1=""" & ComboBox1.Text & """,c1,"""")"
  Call set_combo_item(ComboBox3, func_str)
End Sub

Private Sub UserForm_Initialize()
  Dim func_str As String
  func_str = "=if(countif($a$1:a1,a1)>1,"""",a1)"
  Call set_combo_item(ComboBox1, func_str)
  func_str = "=if(a1=""" & ComboBox1.Text & """,b1,"""")"
  Call set_combo_item(ComboBox2, func_str)
  func_str = "=if(a1=""" & ComboBox1.Text & """,c1,"""")"
  Call set_combo_item(ComboBox3, func_str)
End Sub

Private Sub InputBtn_Click()
  '変数の宣言
  Dim CelPos As Integer
  Dim CelNo As String
 
  Set WS = Worksheets(2)

  Do
    CelPos = CelPos + 1
    CelNo = "A" & CelPos
    Rtn = WS.Range(CelNo).Value
  Loop While Rtn <> ""
 
  CelNo = "A" & CelPos
  WS.Range(CelNo) = UserForm1.ComboBox1.Text
  CelNo = "B" & CelPos
  WS.Range(CelNo) = UserForm1.ComboBox2.Text
  CelNo = "C" & CelPos
  WS.Range(CelNo) = UserForm1.ComboBox3.Text
  ComboBox1.ListIndex = 0
End Sub

上記のコードで、動作は問題ないのですが....
ただ、コンボボックス1で東京都を選択すると、コンボボックス2には
新宿区の下に0が3行(空白セル分)表示されてしまいます。
また、コンボボックス1で茨城県を選択すると、コンボボックスには
2丁目の下に0が1行表示されます。
この0を削除して空白にするにはどうすればいいのでしょうか?

またまた、長い文章で申し訳ありません。
よろしくお願いします。
0 hits

【19312】2577がらみの追加質問 ととりん 04/10/28(木) 4:58 質問
【19314】Re:2577がらみの追加質問 ichinose 04/10/28(木) 8:12 発言
【19336】Re:2577がらみの追加質問 ととりん 04/10/28(木) 15:24 お礼
【19346】Re:2577がらみの追加質問 その2 ととりん 04/10/28(木) 18:36 質問
【19353】Re:2577がらみの追加質問 その2 ichinose 04/10/28(木) 22:24 発言
【19354】Re:2577がらみの追加質問 その2 追伸 ichinose 04/10/28(木) 22:31 発言
【19357】Re:2577がらみの追加質問 その2 追伸 ととりん 04/10/28(木) 23:26 お礼
【19387】Re:2577がらみの追加質問 その3 ととりん 04/10/29(金) 23:52 質問
【19395】Re:2577がらみの追加質問 その3 ichinose 04/10/30(土) 16:11 発言
【19401】Re:2577がらみの追加質問 その3 ととりん 04/10/31(日) 11:12 お礼

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