Excel VBA質問箱 IV

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

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


3861 / 13645 ツリー ←次へ | 前へ→

【59766】コンボボックスの絞込みについて たつ 09/1/7(水) 17:22 質問[未読]
【59768】Re:コンボボックスの絞込みについて kanabun 09/1/7(水) 17:48 発言[未読]
【59779】Re:コンボボックスの絞込みについて 難VBA 09/1/8(木) 10:51 質問[未読]
【59770】Re:コンボボックスの絞込みについて kanabun 09/1/7(水) 18:50 発言[未読]
【59780】Re:コンボボックスの絞込みについて たつ 09/1/8(木) 10:55 発言[未読]
【59783】Re:コンボボックスの絞込みについて SS 09/1/8(木) 11:38 発言[未読]
【59786】Re:コンボボックスの絞込みについて たつ 09/1/8(木) 14:48 質問[未読]
【59787】Re:コンボボックスの絞込みについて たつ 09/1/8(木) 15:03 質問[未読]
【59789】Re:コンボボックスの絞込みについて SS 09/1/8(木) 15:49 発言[未読]
【59790】Re:コンボボックスの絞込みについて SS 09/1/8(木) 16:06 発言[未読]
【59808】Re:コンボボックスの絞込みについて たつ 09/1/9(金) 15:01 お礼[未読]

【59766】コンボボックスの絞込みについて
質問  たつ  - 09/1/7(水) 17:22 -

引用なし
パスワード
   コンボボックス1とコンボボックス2があり、
コンボボックス1に「Sheet1のA1:A15」のリストが表示され、
その、表示内容によって、コンボボックス2の表示が変わるというように作成したいのですが、どうしたら、よいのでしょうか?

例えば、コンボボックス1に「都道府県」リストが表示され、コンボボックス2にコンボボックス1で選んだ県の「市町村」が表示される・・・といった感じなのですが・・・

入力規則を使ってやろうとしたのですが、名前を付ける際に、数字を入れるとエラーになってしまい、うまくいきません。(どうしても、名前に数字を入れたいのです)

例えば、「170メートル」と名前をつけようとしても、だめでした

初心者ですが、どうかアドバイスを下さい

よろしくお願いします

【59768】Re:コンボボックスの絞込みについて
発言  kanabun  - 09/1/7(水) 17:48 -

引用なし
パスワード
   ▼たつ さん:
こんにちは。

回答ではないのですが、

>コンボボックス1とコンボボックス2があり、

それはシートのComboBoxですか、
それともUserForm上のComboBox ですか

【59770】Re:コンボボックスの絞込みについて
発言  kanabun  - 09/1/7(水) 18:50 -

引用なし
パスワード
   ▼たつ さん:
もひとつ、質問、すみません。

>「Sheet1のA1:A15」
に、「都道府県」データがあるとして、それらは重複があるのでしょうか?

また、
> 選んだ県の「市町村」
のデータはどこにあるのでしょうか?

Sheet1のデータレイアウトを具体例で示されたほうが
レスがつきやすいと思います。

【59779】Re:コンボボックスの絞込みについて
質問  難VBA  - 09/1/8(木) 10:51 -

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

すみません。説明不足で…
>
>それはシートのComboBoxですか、
>それともUserForm上のComboBox ですか

Userfom上のコンボボックスの話です。
シート上のほうが、やりやすいのであれば、シート上でも、かまわないです。

質問上では、わかりやすい例として、都道府県の例を出しましたが、実際は下記のような感じです

そして、シート1のA1からD1のように、横にコンボボックス1で選択する為のリストが入力されてます
A2から横にそれぞれの列の1行目に関連したリストが入力してあります
コンボボックス1で、「100M」を選択したら、コンボボックス2では「A,B,C]のリストが表示されてほしいのです。

例)シート1
| A  | B  | C  | D  |
-|-----------------------------------
1| 100M | 200M | 300M | 400M |
-|-----------------------------------  
2| A  | D  | G  | J  | 
3| B  | E  | H  | K  |
4| C  | F  | I  | L  |

なかなかうまくいきません。
どうか、アドバイスを頂きたいのですが…
よろしくおねがいします

【59780】Re:コンボボックスの絞込みについて
発言  たつ  - 09/1/8(木) 10:55 -

引用なし
パスワード
   なんかうまく投稿できなかったので、再度送信します
重複してたら、すみません・・・

▼kanabun さん:

すみません。説明不足で…
>
>それはシートのComboBoxですか、
>それともUserForm上のComboBox ですか

Userfom上のコンボボックスの話です。
シート上のほうが、やりやすいのであれば、シート上でも、かまわないです。

質問上では、わかりやすい例として、都道府県の例を出しましたが、実際は下記のような感じです

そして、シート1のA1からD1のように、横にコンボボックス1で選択する為のリストが入力されてます
A2から横にそれぞれの列の1行目に関連したリストが入力してあります
コンボボックス1で、「100M」を選択したら、コンボボックス2では「A,B,C]のリストが表示されてほしいのです。

例)シート1
| A  | B  | C  | D  |
-|-----------------------------------
1| 100M | 200M | 300M | 400M |
-|-----------------------------------  
2| A  | D  | G  | J  | 
3| B  | E  | H  | K  |
4| C  | F  | I  | L  |

なかなかうまくいきません。
どうか、アドバイスを頂きたいのですが…
よろしくおねがいします

【59783】Re:コンボボックスの絞込みについて
発言  SS  - 09/1/8(木) 11:38 -

引用なし
パスワード
   ▼たつ さん:
ヨコから失礼します。
練習でこんなの作ってみました。
試してみて下さい。

Private Sub ComboBox1_Change()
  Dim CBC As Long, i As Long, j As Long
  
  With Worksheets("Sheet1")
    CBC = ComboBox1.ListIndex + 1
    j = .Cells(2, CBC).End(xlDown).Row
    If j = 65536 Then Exit Sub
    ComboBox2.Clear
    For i = 2 To j
      ComboBox2.AddItem .Cells(i, CBC).Value
    Next i
    ComboBox2.ListIndex = 0
  End With
End Sub

Private Sub UserForm_Initialize()
  Dim i As Long
  
  With Worksheets("Sheet1")
    For i = 1 To 4
      ComboBox1.AddItem .Cells(1, i).Value
    Next i
    ComboBox1.ListIndex = 0
  End With
End Sub


>なんかうまく投稿できなかったので、再度送信します
>重複してたら、すみません・・・
>
>▼kanabun さん:
>
>すみません。説明不足で…
>>
>>それはシートのComboBoxですか、
>>それともUserForm上のComboBox ですか
>
>Userfom上のコンボボックスの話です。
>シート上のほうが、やりやすいのであれば、シート上でも、かまわないです。
>
>質問上では、わかりやすい例として、都道府県の例を出しましたが、実際は下記のような感じです
>
>そして、シート1のA1からD1のように、横にコンボボックス1で選択する為のリストが入力されてます
>A2から横にそれぞれの列の1行目に関連したリストが入力してあります
>コンボボックス1で、「100M」を選択したら、コンボボックス2では「A,B,C]のリストが表示されてほしいのです。
>
>例)シート1
>| A  | B  | C  | D  |
>-|-----------------------------------
>1| 100M | 200M | 300M | 400M |
>-|-----------------------------------  
>2| A  | D  | G  | J  | 
>3| B  | E  | H  | K  |
>4| C  | F  | I  | L  |
>
>なかなかうまくいきません。
>どうか、アドバイスを頂きたいのですが…
>よろしくおねがいします

【59786】Re:コンボボックスの絞込みについて
質問  たつ  - 09/1/8(木) 14:48 -

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

ありがとうございます
早速、試してみたところ、

はじめのユーザーフォームの初期設定のところでエラーがでてしまいます
>Private Sub UserForm_Initialize()
>  Dim i As Long
>  
>  With Worksheets("Sheet1")
>    For i = 1 To 4
>      ComboBox1.AddItem .Cells(1, i).Value
             ↑ここの部分でエラーが発生します
エラー内容は、「コンパイルエラー:Functionまたは変数が必要です」
と表示されてしまい、前へ進めません。
どうしたら、回避できるのでしょうか?

教えて下さい
よろしくお願いします

【59787】Re:コンボボックスの絞込みについて
質問  たつ  - 09/1/8(木) 15:03 -

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

先ほどの悩みは、今、解決しました
↓AddItemの後ろの「.(ドット)」を外してみました。
ComboBox1.AddItem .Cells(1, i).Value
ドットを外してみたところ、うまくいきましたが、コンボボックス1で選択しても、
コンボボックス2は空白のままで、選択するリストが出てきません。

なんか、問題でもあるのでしょうか?

CBC=ComboBox1.ListIndex + 1 のコードの +1の意味がいまいち理解できてません。
申し訳ありませんが、初心者の私に教えていただけないでしょうか?
ところどころ、解読できないVBAの記述があります

よろしくお願いします

【59789】Re:コンボボックスの絞込みについて
発言  SS  - 09/1/8(木) 15:49 -

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

>>Private Sub ComboBox1_Change()
>>  Dim CBC As Long, i As Long, j As Long
>>  
>>  With Worksheets("Sheet1")
>>    CBC = ComboBox1.ListIndex + 1
>>    j = .Cells(2, CBC).End(xlDown).Row
     (上記だとリスト1つの時に無視してしまうので)
     j = .Cells(1, CBC).End(xlDown).Rowに修正
>>    If j = 65536 Then Exit Sub
>>    ComboBox2.Clear
>>    For i = 2 To j
>>      ComboBox2.AddItem .Cells(i, CBC).Value
>>    Next i
>>    ComboBox2.ListIndex = 0
>>  End With
>>End Sub

>>Private Sub UserForm_Initialize()
>>  Dim i As Long
>>  
>>  With Worksheets("Sheet1")
>>    For i = 1 To 4
>>      ComboBox1.AddItem .Cells(1, i).Value
       先ずここの.cellsの.は直近のWithで指定されているObject?に
       付随するものを意味しますので省略してはいけません。
       エラーになるのは対象シート名が("Sheet1")ではないからだと
       思います。実際のシート名に変更して下さい。
>>    Next i
>>    ComboBox1.ListIndex = 0
>>  End With
>>End Sub


>
>先ほどの悩みは、今、解決しました
>↓AddItemの後ろの「.(ドット)」を外してみました。
>ComboBox1.AddItem .Cells(1, i).Value
>ドットを外してみたところ、うまくいきましたが、コンボボックス1で選択しても、
>コンボボックス2は空白のままで、選択するリストが出てきません。
>
>なんか、問題でもあるのでしょうか?
>
>CBC=ComboBox1.ListIndex + 1 のコードの +1の意味がいまいち理解できてません。
Private Sub ComboBox1_Change()
  msgbox ComboBox1.ListIndex
End Sub
でComboBox1.ListIndexを確認してみて下さい。
>申し訳ありませんが、初心者の私に教えていただけないでしょうか?
>ところどころ、解読できないVBAの記述があります
>
>よろしくお願いします

【59790】Re:コンボボックスの絞込みについて
発言  SS  - 09/1/8(木) 16:06 -

引用なし
パスワード
   ▼たつ さん:
>
>先ほどの悩みは、今、解決しました
>↓AddItemの後ろの「.(ドット)」を外してみました。
>ComboBox1.AddItem .Cells(1, i).Value
>ドットを外してみたところ、うまくいきましたが、コンボボックス1で選択しても、
リストが4個挿入されましたか?これが出来ていればComboBox2も問題ないはずですが
>コンボボックス2は空白のままで、選択するリストが出てきません。
先程のシート名違いではとの発言は間違いみたいですね。Errorが違いました。
もしかするとAddItem.Cellsとしていませんか?AddItemと.Cellsの間には
スペースが必要です。確認して下さい。
コピペしてもらえればそのまま動くとおもうのですが。
>
>なんか、問題でもあるのでしょうか?
>
>CBC=ComboBox1.ListIndex + 1 のコードの +1の意味がいまいち理解できてません。
>申し訳ありませんが、初心者の私に教えていただけないでしょうか?
>ところどころ、解読できないVBAの記述があります
>
>よろしくお願いします

【59808】Re:コンボボックスの絞込みについて
お礼  たつ  - 09/1/9(金) 15:01 -

引用なし
パスワード
   ▼SS さん:
ありがとうございました。

やっと解決しました

本当に助かりました

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