s_husky です。
1、3を先行回答します。
・SetComboBoX関数では、連結列を先頭に移動しています。
・これで、選択時も通常になります。
・列数、列幅はリストボックスより1つ増やして下さい。
・連結列を二重表示したくない場合は0PXで消して下さい。
<フォームのリストボックスの値集合をAX-コンボボックスへコピーするコード>
Private Sub コマンド3_Click()
SetComboBox Me, "ComboBox", "ListBox", 2 ' 連結列=2
End Sub
Option Compare Database
Option Explicit
Public Function SetComboBox(ByVal frm As Form, _
ByVal cmbBox As String, _
ByVal lstBox As String, _
ByVal LinkColumn As Integer) As Boolean
frm.Controls(cmbBox).Clear
frm.Controls(cmbBox).List = XferRowSource(frm.Controls(lstBox).RowSource, _
frm.Controls(lstBox).ColumnCount, _
frm.Controls(lstBox).ListCount, _
LinkColumn)
End Function
Public Function XferRowSource(ByVal strRowSource As String, _
ByVal ColumnCount As Integer, _
ByVal ListCount As Integer, _
ByVal LinkCulumn As Integer) As String()
Dim I As Integer
Dim J As Integer
Dim P As Integer
Dim strData As String
ReDim Datas(ListCount - 1, ColumnCount + 1) As String
For I = 1 To ListCount
P = (I - 1) * ColumnCount
For J = 1 To ColumnCount
strData = CutStr(strRowSource, ";", P + J)
If Left$(strData, 1) = """" Then
Datas(I - 1, J) = CutStr(strData, """", 2)
Else
Datas(I - 1, J) = strData
End If
Next J
Datas(I - 1, 0) = Datas(I - 1, LinkCulumn)
Next I
XferRowSource = Datas()
End Function
Public Function CutStr(ByVal Text As String, _
ByVal Separator As String, _
ByVal N As Integer) As String
Dim strDatas() As String
strDatas = Split("" & Separator & Text, Separator, , 0)
CutStr = strDatas(N * Abs((N <= UBound(strDatas))))
End Function
※XferRowSourceは、最適化していません。
※I - 1はKに置き換えるべきです。(この場合、格段に動作が速くなります。)
※ただし、質問者の理解し難いコードになると思い中止した次第です。
お礼
s_huskyさん、お手間をとらせてしまって本当に申し訳ありません。 もともと、今回のコンボボックスの変更は、できるだけ表示を大きくしたいというニーズがあってのことです。 今つくっているシステムを利用される方は、視覚障害者の方です。そういう私もその一人ですが、その方がされているマッサージの治療院の予約管理システムをパソコンでしたいという要望からスタートしました。市販のパッケージではやはり見づらく、使いづらいということで、素人同然の私がつくることとなりました。 始めの提案は、標準的な表示・レイアウトのものでしたが、やはり見づらいというご意見と、操作はほとんどキーボードで行いたいということで、今回の問題が発生しました。(多少はマウスも使うので▼も大きくしたいとのことでした) 出来るだけ要望に沿うようにしたいと思ってはいるのですが、私自身がACCESS、VBAはそれほど経験が無いので、いろいろ皆様に助けていただいております。 s_husky さんには、丁寧にご指導いただき、本当に感謝しております。これに懲りずに、またアドバイスをお願いできれば幸いです。