実現したいこと
ここに実現したいことを箇条書きで書いてください。
- MicrosoftAccessのコンボボックスにデータの一部を入力すると、リストのデータがそれを含むものに制限されるようにする。
前提
MicroSoftAccessでデータベースを作成しています。
その中にデータを選択するコンボボックスがあるのですが、
そのコンボボックスのテキストボックス部にデータの一部を入力すると、
リストのデータがそれを含むものに制限されるようにしています。
また、上下キー操作で選択できるようにもしています。
ここで設定されたデータで、
レコードのフィルターを行っています。
FilterOn = Falseとしているときには、
コンボボックス内のデータを書き換えは問題なく動作します。
発生している問題・エラーメッセージ
FilterOn = Trueとしているときに、
コンボボックス内のデータを書き換えようとすると、
エラーが発生します。
エラーメッセージ 実行時エラー `2185': コントロールがフォーカスを取得していないときに、コントロールのプロパティまたはメソッドを参照することはできません。
該当のソースコード
VBA
1Option Compare Database 2Option Explicit 3 4Private WithEvents SelectName As Access.ComboBox '顧客名称 5Private WithEvents MyFrm As Access.Form 6Private SQL1 As String '検索フィールド用SQL 7Private SQL2 As String '並べ替え用SQL 8Dim blClick As Boolean 'クリックイベント用フラグ 9 10Public Sub Bind(strSQL_select As String, _ 11 strSQL_sort As String, _ 12 objSelectName As Access.ComboBox) 13 14 Set SelectName = objSelectName 15 Set MyFrm = objSelectName.Parent 16 SQL1 = strSQL_select 17 SQL2 = strSQL_sort 18 19 SelectName.OnChange = "[EVENT PROCEDURE]" 20 SelectName.OnClick = "[EVENT PROCEDURE]" 21 SelectName.OnKeyDown = "[EVENT PROCEDURE]" 22 23End Sub 24 25Private Sub SelectName_Change() 26' SelectName.SetFocus 27 SelectName.RowSource = SQL1 & SelectName.Text & SQL2 28' SelectName.RowSource = SelectName.Text 29 If blClick Then 30 blClick = False 31 Else 32 SelectName.Dropdown 33 End If 34End Sub 35 36Private Sub SelectName_Click() 37 blClick = True 38End Sub 39 40Private Sub SelectName_KeyDown(KeyCode As Integer, Shift As Integer) 41 Dim objSelectNametext As String 42 If KeyCode = vbKeyDown Then 43 If SelectName.OnChange <> "" Then 44 objSelectNametext = SelectName.Text 45 End If 46 SelectName.OnChange = "" 47 ElseIf KeyCode = vbKeyUp Then 48 If SelectName.ListIndex = 0 Then 49 SelectName.OnChange = "[イベント プロシージャ]" 50 SelectName.Text = objSelectNametext 51 SelectName.Dropdown 52 Else 53 SelectName.OnChange = "" 54 End If 55 Else 56 SelectName.OnChange = "[イベント プロシージャ]" 57 objSelectNametext = "" 58 End If 59End Sub 60
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
