アプリ版:「スタンプのみでお礼する」機能のリリースについて

ユーザーフォームのテキストボックスにシートの値を表示させています。
Private Sub TextBox1_Change()
Dim r
Set r = ActiveSheet.Range("A:A").Find(what:=TextBox1, lookat:=xlWhole)
If r Is Nothing Then Exit Sub
TextBox2 = r.Offset(, 1)
TextBox3 = r.Offset(, 2)
TextBox4 = r.Offset(, 3)
End Sub

今の状態では、テキストボックス1に数字を入力しないと他が表示されません。
数字を入れたら、ページアップダウンキーや矢印キーで次の値を表示させたいです。
下矢印で次の行、次の行・・・といった具合です。
A列の数字はランダムに入っています。

マクロコードを教えて下さい。
お願いします。

「エクセルのマクロを教えてください。」の質問画像

A 回答 (1件)

こんにちは



フォームであればキーイベントを取得できるので可能ですけれど・・
ただし、矢印キーはコントロールのフォーカスを移動する機能がありますので、そのままではフォーカスが移動してしまうので、キーイベントを取得できなくなります。
(フォーカスを移動しないように設定しておけば、矢印でも可能です)

以下は、ページアップ/ダウン キーを取得する場合の例です。

Private Sub textbox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim r
If KeyCode <> vbKeyPageUp And KeyCode <> vbKeyPageDown Then Exit Sub
Set r = ActiveSheet.Range("A:A").Find(what:=TextBox1, lookat:=xlWhole)
If r Is Nothing Then Exit Sub
If KeyCode = vbKeyPageUp Then
If r.Row > 1 Then TextBox1.Value = r.Offset(-1).Value
ElseIf KeyCode = vbKeyPageDown Then
If r.Offset(1).Value <> "" Then TextBox1.Value = r.Offset(1).Value
End If
End Sub
    • good
    • 0
この回答へのお礼

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

お礼日時:2023/01/27 13:22

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