[[20191101125523]] 『VBA テキストボックスでのエンターキー操作』(かず) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『VBA テキストボックスでのエンターキー操作』(かず)

ユーザーフォーム上にリストボックス、テキストボックス、ボタンが配置されています。
リストボックス内のリストをテキストボックスで検索してリストを絞る形のプログラムを組んでいます。
現在、テキストボックス内に検索したい文字を入力してボタンを押すと検索結果が出るようになっているのですが、テキストボックス内でエンターキーを押すとボタンを押したことになるようにプログラムを組みたいです。ネット上を検索してみたのですが、知識不足のため理解できません。
ご教授いただければ幸いです。

< 使用 Excel:Excel2013、使用 OS:Windows7 >


 まずはユーザーフォームモジュールのコードをアップしてみては?

(渡辺ひかる) 2019/11/01(金) 13:11


 Private Sub CommandButton1_Click()
    call 命令
 End Sub

 Private Sub TextBox1_AfterUpdate()
    call 命令
 End Sub

 Private sub 命令()
    Listbox1.additem "かず"
 End Sub
(sample) 2019/11/01(金) 13:23

 Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = 13 Then
        Call CommandButton1_Click
        KeyCode = 0
    End If
 End Sub
(???) 2019/11/01(金) 15:06

'検索を実行します。部分一致検索を行っています。
Private Sub CommandButton1_Click()
    Dim lastRow As Long
    Dim myData, myData2(), myno
    Dim i As Long, j As Long, cn As Long

    ' If TextBox1.Value = "" Or TextBox2.Value = "" Then End

    '検索するデータを配列 myData に格納しています。
     With Worksheets("検索")
            lastRow = .Cells(Rows.Count, 1).End(xlUp).Row
        myData = .Range(.Cells(4, 1), .Cells(lastRow, 7)).Value
    End With

    '配列 myData の中で検索で一致したデータを配列 myData2 に格納しています。
     ReDim myData2(1 To lastRow, 1 To 3)
    For i = LBound(myData) To UBound(myData)
        If myData(i, 1) Like "*" & TextBox1.Value & "*" Then
            cn = cn + 1
            myData2(cn, 1) = myData(i, 7)

        End If
    Next i

    '検索で一致したデータをリストボックスに表示します。
     With ListBox1
        .ColumnCount = 1
        .ColumnWidths = "70"
        .List = myData2
    End With

 End Sub

'ユーザーフォームの初期設定:リストの全データを表示しています。
Private Sub UserForm_Initialize()

    Dim lastRow As Long
    Dim myData, myData2()
    Dim i As Long, j As Long

    With Worksheets("検索")

         lastRow = .Cells(Rows.Count, 1).End(xlUp).Row
        myData = .Range(.Cells(4, 1), .Cells(lastRow, 7)).Value
    End With

    ReDim myData2(1 To lastRow, 1 To 3)
    For i = LBound(myData) To UBound(myData)
        myData2(i, 1) = myData(i, 3)
        myData2(i, 2) = myData(i, 7)

    Next i

    With ListBox1
        .ColumnCount = 1
        .ColumnWidths = "40"
        .List = myData2
    End With
 End Sub

不要な点もあるかもしれませんが、上記モジュールは問題なく作動しています。
テキストボックス1にはモジュールは設定していません。

(かず) 2019/11/01(金) 15:11


Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = 13 Then
        Call CommandButton1_Click
        KeyCode = 0
    End If
 End Sub
(???) 2019/11/01(金) 15:06

これを記入しましたら正常に作動しました。ありがとうございました。
(かず) 2019/11/01(金) 15:12


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.