Excel VBA質問箱 IV

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

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


1257 / 13644 ツリー ←次へ | 前へ→

【75377】コンボボックスのRowSourceを使ったフォームでの選択 Domingo 14/3/14(金) 17:04 質問[未読]
【75378】Re:コンボボックスのRowSourceを使ったフォ... kanabun 14/3/14(金) 20:09 発言[未読]

【75377】コンボボックスのRowSourceを使ったフォ...
質問  Domingo  - 14/3/14(金) 17:04 -

引用なし
パスワード
   初めて投稿します。Excel VBAで以下のことを行いたいと考えています。

データ参照用のシートに、世界の大陸と所属する国のデータを用意します。
縦方向に大陸が、横方向に各大陸の国が記載されています。

各大陸から1つの大陸を選択し、その大陸の中から1つの国を選択します。
その結果をExcelの別のシートに書き出すというものです。
これを行うため、ComboBoxのRowSource機能を用いて、データ参照用のシート上で
大陸の範囲を縦方向に特定し、その後国の範囲を横方向に特定する方法で行います。

問題は、最初に大陸を選択する時にドロップダウンボタンを押すと、縦方向にデータが表示され正常に選択もできるのですが、国で行うと横方向のため、横表示となり、選択すると常に一番左の国名しか選択できません。

どのようにすれば、国名も縦方向に表示され、国が1つだけ選択することができるでしょうか?お知恵を拝借したいと存じます。なお、以下にソースの一部を掲載します。また、Transpose関数を使って何かできないか考えましたが、良い考えが浮かびませんでした…

(大陸の選択に関する記述)
With Selection
  column = .Rows.Count       '同上領域の列数を取得する
  area = .Cells(1, 1).Address & ":" & .Cells(column, 1).Address '同上領域のアドレスを変数に
End With
  
ComboBox1.RowSource = sht_name & "!" & area 'コンボボックスのリストのソースを設定する

(国の選択に関する記述)
With Selection
  row = .Columns.Count       '同上領域の列数を取得する
  area2 = .Cells(column, 2).Address & ":" & .Cells(column, row).Address '同上領域のアドレスを変数に
End With
  
ComboBox2.RowSource = sht_name & "!" & area2 'コンボボックスのリストのソースを設定する

【75378】Re:コンボボックスのRowSourceを使ったフ...
発言  kanabun  - 14/3/14(金) 20:09 -

引用なし
パスワード
   ▼Domingo さん:

ComboBox2のリストは ComboBox1で選択があったら、
Columnプロパティで横方向リストをセットするようにしたらいかが?

------------------------------------------------
Option Explicit

Private Sub UserForm_Initialize()
  ComboBox1.RowSource = "Sheet1!A2:A6"  '適宜修正
  
End Sub

Private Sub ComboBox1_Change()
  Dim nRow&
  Dim r As Range
  nRow = ComboBox1.ListIndex + 1
  Set r = Range(ComboBox1.RowSource).Item(nRow)
  ComboBox2.Column = Range(r.Offset(, 1), r.End(xlToRight)).Value
End Sub

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