dポイントプレゼントキャンペーン実施中!

データをユーザーフォームで入力するマクロを作りましたが、
項目の移動をするとき矢印キーだとcomboboxの中身が入れ替わってしまうので、矢印キーでの移動を禁止してリターンキーとタブキーでの移動にしたいんですが、やり方がわかりません。
どうすればいいのでしょうか?ご伝授ください。

A 回答 (4件)

こんにちは。



とりあえず、ComboBox の中で、↓(下向き矢印キー)が、最後でフォーカスを移動しないようにするには、このようにすると出来ます。
'------------------------------------------------------------
Private Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
 If KeyCode = 40 And ComboBox1.ListIndex > ComboBox1.ListCount - 2 Then
  KeyCode = 0
  End If
End Sub

'------------------------------------------------------------
これは、↓(下向き矢印キー)の効力が、ListIndex の最後になると通らない、ということです。


KenKen_SPさんへ

今、ちょうど、KenKen_SPさんのヘルプが欲しいと思っていたところです。

>「一番最後」とはどういうことでしょうか?

私から言わせていただくと、これは直接関係がなくて、↓(下向き矢印キー)では、フォーカスを移動させない、ということに他ならないのですね。

今回は間に合わせなのですが、コードを見ていただければ、私の発想はお分かりなるかと思います。ご質問者の内容は、本来は、ComboBox の中の時だけ、↓(下向き矢印キー)が使えればよい、ということだと思うのです。そうすると、ComboBox をフォーカスした時だけ、矢印キーを Enable にするというようなコードを示せればよいのではないかと思いました。しかし、今の私のスキルもさることながら、今のPCでは、いろんな事情があって、試すことが出来ません。(失敗すると、当分、ここに戻れなくなる可能性が強いです。(^^;)
    • good
    • 0
この回答へのお礼

できました!!ほぼ希望どおりのうごきです!!!
ついでにif文中に KeyCode = 38 And ComboBox1.ListIndex < 1
の条件を入れて上矢印も通らなくすることができました。

データのフォーム入力したかったのですが項目が多すぎて
Excel既定のフォームでは入力することができず、
自作せざるを得ませんでした。
すごく助かりました。ありがとうございました。

お礼日時:2005/07/04 20:35

> カーソルでフォーカスが移動してしまいます。


> 一番最後まで行けば、コントロールのフォーカスは移動します

「一番最後」とはどういうことでしょうか?

この回答への補足

お礼の欄間違えました。
ANo.1,ANo.4さんでした。すみませんでした。

補足日時:2005/07/04 20:40
    • good
    • 0
この回答へのお礼

ANo.2、ANO.4さんのソースで解決しました。
ちょっと消化不良かもしれませんが急ぎなものでこれで失礼します。
ありがとうございました。

お礼日時:2005/07/04 20:39

こんばんは。



>項目の移動をするとき矢印キーだとcomboboxの中身が入れ替わってしまうので、

一番最後まで行けば、コントロールのフォーカスは移動しますが、その前に、使い方になれたほうがよいのではないでしょうか?かなりイレギュラーな設定で、返って混乱しかねないと思います。

>リターンキーとタブキーでの移動にしたい
標準的に、タブストップを置いてあれば、移動するはずです。

以下のようにすれば、[↓]矢印キーで、ComboBox の内容が移動しないようには出来ますが、さて、どんなものでしょうか?私の勇み足かもしれませんが。

Private Sub ComboBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, _
  ByVal Shift As Integer)
 Dim i As Long
 i = ComboBox1.ListIndex
 If KeyCode = 40 Then
  ComboBox1.ListIndex = i - 1
 End If
End Sub

この回答への補足

>一番最後まで行けば、コントロールのフォーカスは移動しますが、
これに困っています。
ここでフォーカスの移動をさせたくないんです。

補足日時:2005/07/04 09:13
    • good
    • 0
この回答へのお礼

ありがとうございます。助かります。

希望する動きとしてはまったく逆になります。
ComboBoxの中だけで矢印キーを有効にし、
フォーカス移動では無効にしたいのです。
タブとリターンでのフォーカス移動はできていますので、
矢印キーでのフォーカス移動だけを無効にしたいんですが・・・。

お礼日時:2005/07/04 09:06

こんにちは。

KenKen_SP です。

> 項目の移動をするとき矢印キーだとcomboboxの中身が入れ替わって
> しまうので、矢印キーでの移動を禁止してリターンキーとタブキー
> での移動にしたい...

ご質問文において「項目の移動」とは、どのようなことでしょうか?
もう少し詳しく補足願います。

「項目の移動」について下記の2つが推測できます。

・コントロールのフォーカスを他コントロールに移動させること

 フォーカスを移すコードを特に書いてなければ、キー操作だと
 カーソル(矢印)キーでは移動できないと思います。

・ComboBox コントロール内の選択項目の移動

 「ComboBox コントロールの値を変更させたくない」ということ
 なのでしょうか?

この回答への補足

ありがとうございます、感激です。
困ったとき相談できる人がいるのはとても助かります。
>「項目の移動」について
前者のフォーカスを他コントロールに移動させること、になります

ComboBoxに限らず、フォーム内のフォーカスの移動を
矢印キーの使用を禁止(無効に?)して
矢印キーはComboBoxコントロール内だけで有効にしたいのです

補足日時:2005/07/04 08:41
    • good
    • 0
この回答へのお礼

>フーカスを移すコードを特に書いてなければ
書いていないつもりです。が、
カーソルでフォーカスが移動してしまいます。

お礼日時:2005/07/04 08:59

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A