プロが教える店舗&オフィスのセキュリティ対策術

お世話になります。
どなたかお知恵をお貸しください。

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するということを希望なのですが、こういうことは
できるのでしょうか…。
コンフリクトしたりするのかなと少し思いました。

A 回答 (1件)

RowSourceに複数列設置したいのなら ColumnCountを2以上にして


ColumnWidthに表示する幅を ;で区切って設定しましょう

設定値の取得は Listプロパティから行います
if ComboBox2.ListIndex > -1 then
  dim ss as String
  ss = ComboBox2.List( ComboBox2.ListIndex, 1 )
end if
といった具合です
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!