• 締切済み

ComboBoxで選択した値をReplaceし、Valueとして表示したい

お世話になります。 どなたかお知恵をお貸しください。 UserForm1に、ComboBox2~17まであり、 このComboBoxの.RowSourceは別シートのセルを参照しています。 Sub Sample() 略… enList = SH4.Cells(65536, 2).End(xlUp).Row UserForm1.Show For i = 0 To 15 With UserForm1("ComboBox" & i + 2) .RowSource = "sample!B4:B" & enList End With Next i   略… End Sub .RowSource = "sample!B4:B" & enListには、右に隣接して対になる リストが存在します。 例)B4 … ほっかいどう C4 … 北海道   B5 … おおさか C5 … 大阪 ComboBox2でリストからB4の値を選択したら、C4の値を ComboBox2のvalueとして表示させたいのですが、 種類が一致しないとか、インデックスが見つからないなど エラーが出てしまいます。 VLOOKUPも使ってみたのですが、取得できませんと出てしまいます。 VLOOKUPをあきらめ、現在下記のようなちょっと怪しい プログラムになってます… cnt = 0 ReDim enList(0) ReDim enList2(0) For i = 3 To SH4.Range("B65536").End(xlUp).Row ReDim Preserve enList(i) ReDim Preserve enList2(i) enList(cnt) = SH4.Range("B" & i).Value enList2(cnt) = SH4.Range("C" & i).Value If UserForm1("ComboBox2").Value = enList(cnt) Then UserForm1("ComboBox2").Value = enList2(cnt) End If cnt = cnt + 1 Next i どのように解決すればよろしいでしょうか…orz ご教授ください。 また、今回ComboBox2の選択内容によってComboBox2のvalueを Replaceするということを希望なのですが、こういうことは できるのでしょうか…。 コンフリクトしたりするのかなと少し思いました。

みんなの回答

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

RowSourceに複数列設置したいのなら ColumnCountを2以上にして ColumnWidthに表示する幅を ;で区切って設定しましょう 設定値の取得は Listプロパティから行います if ComboBox2.ListIndex > -1 then   dim ss as String   ss = ComboBox2.List( ComboBox2.ListIndex, 1 ) end if といった具合です

関連するQ&A