Excel VBA質問箱 IV

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

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


10627 / 13644 ツリー ←次へ | 前へ→

【20750】コンボボックスのベロ出し 初心者トム 04/12/17(金) 11:49 質問[未読]
【20751】Re:コンボボックスのベロ出し apple 04/12/17(金) 13:29 回答[未読]
【20752】Re:コンボボックスのベロ出し apple 04/12/17(金) 13:35 回答[未読]
【20753】Re:コンボボックスのベロ出し Jaka 04/12/17(金) 13:37 回答[未読]
【20754】Re:コンボボックスのベロ出し apple 04/12/17(金) 13:44 発言[未読]
【20755】大変参考になりました。 初心者トム 04/12/17(金) 15:57 お礼[未読]

【20750】コンボボックスのベロ出し
質問  初心者トム  - 04/12/17(金) 11:49 -

引用なし
パスワード
   初心者の質問で恐縮ですが、教えてください。
EXCELのVBAフォームで、マウスを使わず
キーボード・テンキーのみでどんどん入力できる
システムを作成中です。

そこで、質問なのですが、コンボボックスにフォーカスが来たときに
自動的にリストの内容が表示されるようにしたい(▼をマウスクリック
したときと同じ動き)のですが、やり方がわかりません。Enterイベントで
何かを記述すればよいのでしょうか?

また、リストの項目に番号をつけて、テンキーで数字を入力するとその
項目番号の行が選択されるようにする方法がありますでしょうか?
(例)
1.りんご
2.みかん
3.かき
で「3」を入力すると「かき」が選択される。


以上、ご教授お願いします。

【20751】Re:コンボボックスのベロ出し
回答  apple  - 04/12/17(金) 13:29 -

引用なし
パスワード
   こんな感じ?
でも、1〜9までしか対応してない。
桁を上げるには、押されたキーの数値を蓄積するなどの工夫が必要。
普通のコンボボックスなら、メッセージを投げるだけなんだけど…。

Private Sub ComboBox1_Enter()
 
 Me.ComboBox1.IMEMode = fmIMEModeOff
 Me.ComboBox1.DropDown

End Sub

Private Sub ComboBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
 
 If KeyCode = vbKeyBack Then Exit Sub
 
 If vbKey0 < KeyCode And KeyCode <= vbKey9 Then
  SendKeys "{BS}"
 End If
 
End Sub

Private Sub UserForm_Initialize()
 Dim i&
 Dim sArr
 
 sArr = Array("りんご", "みかん", "パインアップル", _
        "なし", "ぶどう", "パパイヤ", _
        "いちご", "バナナ", "キウイ")
 
 With Me
  .TextBox1.TabIndex = 0
  .ComboBox1.TabIndex = 1
  .ComboBox1.Style = fmStyleDropDownList
  
  For i = 1 To UBound(sArr)
   .ComboBox1.AddItem i & ", " & sArr(i)
  Next i
 End With

End Sub

【20752】Re:コンボボックスのベロ出し
回答  apple  - 04/12/17(金) 13:35 -

引用なし
パスワード
   ごめん。コードを変えたら、0〜9までだね。

If vbKey0 < KeyCode And KeyCode <= vbKey9 Then
   ↓
If vbKey0 <= KeyCode And KeyCode <= vbKey9 Then

For i = 1 To UBound(sArr)
   ↓
For i = 0 To UBound(sArr)

【20753】Re:コンボボックスのベロ出し
回答  Jaka  - 04/12/17(金) 13:37 -

引用なし
パスワード
   こんにちは。

フォーム上のコンボボックスにComboBox1_GotFocusなるものはないようです。
その辺は、キーダウンか他のコントロールのExitなどからのイベントを利用するとかして、自分にあった方法を模索してください。

ComboBox1.DropDown
'ComboBox1.SetFocus
ComboBox1.ListIndex = 2

>また、リストの項目に番号をつけて、テンキーで数字を入力するとその
>項目番号の行が選択されるようにする方法がありますでしょうか?

Private Sub UserForm_Initialize()
  ComboBox1.MatchEntry = fmMatchEntryFirstLetter '←これ
End Sub

【20754】Re:コンボボックスのベロ出し
発言  apple  - 04/12/17(金) 13:44 -

引用なし
パスワード
   > ComboBox1.MatchEntry = fmMatchEntryFirstLetter

こんなのがあったとは。
知らなかった。
上のコードは無視してください。(笑)

【20755】大変参考になりました。
お礼  初心者トム  - 04/12/17(金) 15:57 -

引用なし
パスワード
   すごいですね!大変参考になりました。チャレンジしてみます。ありがとうございました。

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