テンキーフォームの作成

エクセルのユーザーフォームを使ったテンキーの作成手順を紹介します。
(作成手順の最後で完成したExcelファイルを無料ダウンロード出来ます)
tenkey010000.gif

<作成手順>
●「Visual Basic Editor」を起動します。
Excel2003・・・メニューバー「ツール→マクロ→Visual Basic Editor」
Excel2007/2010/2013/2016・・・リボン「開発→Visual Basic Editor」(開発タブが表示されていない場合は「ファイル→オプション→リボンのユーザー設定→メインタブ→[開発]をチェックONする」)

●ツールバー「挿入→ユーザーフォーム」で新規フォームを作成して、
フォームのオブジェクト名「テンキーフォーム」、Captionプロパティ「テンキー」とし、
フォーム上にコマンドボタン9個(オブジェクト名「cmd数字1」~「cmd数字9」)を配置します。
tenkey010010.gif

コマンドボタン3個(オブジェクト名「cmd数字0」「cmd数字00」「cmd小数点」)を配置します。
tenkey010020.gif

コマンドボタン3個(オブジェクト名「cmdクリア」「cmdバック」「cmd正負」)を配置します。
tenkey010030.gif

ラベル(オブジェクト名「lbl値」)とコマンドボタン(オブジェクト名「cmd送信」)を配置します。
tenkey010040.gif

●各処理のVBAコードを記述します。
tenkey010050.gif
Option Explicit
Private Sub UserForm_Initialize()
    rtnValue = Null    '値受渡し用変数を初期化
    Me.lbl値 = 0    '値ラベルを初期化
End Sub


Private Sub cmd数字0_Click()    '「0」のボタン クリック時の処理
    Call ClickNumber(0)    '数字のボタン押下時の処理(下部へ記述)
End Sub


Private Sub cmd数字00_Click()    '「00」のボタン クリック時の処理
    Call ClickNumber("00")
End Sub


Private Sub cmd数字1_Click()    '「1」のボタン クリック時の処理
    Call ClickNumber(1)
End Sub


※中略 「cmd数字2」~「cmd数字9」


Private Sub cmd小数点_Click()    '「.」のボタン クリック時の処理
    Call ClickNumber(".")
End Sub


Private Sub ClickNumber(prmNum)    '数字のボタン押下時の処理
    '小数点が既にあり、2個目の小数点が押された場合は処理を抜ける
    If InStr(1, Me.lbl値, ".") >= 1 And prmNum = "." Then
        Exit Sub
    End If
        
    Me.lbl値 = Me.lbl値 & prmNum    '入力済み数値に今回押された数字を連結

    If InStr(1, Me.lbl値, ".") = 0 Then
        Me.lbl値 = CDbl(Me.lbl値)    '数値として再セット(先頭0等を排除)
    End If
End Sub


Private Sub cmdクリア_Click()    '「C」ボタン クリック時の処理
    Me.lbl値 = 0    '値を0にする
End Sub


Private Sub cmdバック_Click()    '「←」ボタン クリック時の処理
    If Len(Me.lbl値) <= 1 Then
        Me.lbl値 = 0    '値が1文字以下なら0をセット
    Else
        Me.lbl値 = Mid(Me.lbl値, 1, Len(Me.lbl値) - 1)    '右端の1文字をカット
        If Me.lbl値 = "-" Then
            Me.lbl値 = 0    'マイナス記号のみなら0をセット
        End If
    End If
End Sub


Private Sub cmd正負_Click()    '「+/-」ボタン クリック時の処理
    Me.lbl値 = CDbl(Me.lbl値) * -1    'マイナス1を掛ける
End Sub


Private Sub cmd送信_Click()    '「送信」ボタン クリック時の処理
    rtnValue = Me.lbl値    '値の受渡し用の変数へセット
    Unload Me    'テンキーフォームを閉じる
End Sub


●標準モジュールへテンキーフォームの値の受渡し用の変数を宣言します。
tenkey010060.gif
Option Explicit
Public rtnValue As Variant    'テンキーフォームの値の受渡し用



●テンキーフォームの呼び出し
tenkey010070.gif

tenkey010080.gif
Option Explicit
Private Sub テンキーボタン_Click()
    テンキーフォーム.Show vbModal    'テンキーフォームの呼び出し
    Range("B2") = rtnValue    'テンキーフォームから受け渡された値をB2セルへセット
End Sub


<完成>
tenkey010000.gif


完成したファイルを下記ボタンからダウンロード出来ます。
download.gif