Excel VBAでのテンキー作成について 仕事の日誌をタブレットExcelで作製しているのですが、 タッチ式のテンキーが欲しく、以下の質問を参考に作成しました。
Excel VBAでのテンキー作成について 仕事の日誌をタブレットExcelで作製しているのですが、 タッチ式のテンキーが欲しく、以下の質問を参考に作成しました。 https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10237741210 「00」を「:」に変更した以外は同じなのですが、 うまく作動しなかった為、以下2点に関して質問させてください(全くの素人です)。 ①ユーザーフォームの”00”を”:”に変更し、クラスモジュールに ElseIf cmd.tag = ":" Then ActiveCell = ActiveCell & ":" を追記しました。しかし、例えば「12:30」と打とうとすると、 「12:3」と打った時点で「12:43」と表記されてしまいます。 数式バーには「12:」と打った時点で「12:00:00」と書かれています。 ②例えば「99.8」と打とうすると、 「99.」と打った時点で「.」のみになったので、クラスモジュールの ElseIf cmd.tag = "." Then ActiveCell = "." を変更して、 ElseIf cmd.tag = "." Then ActiveCell = ActiveCell & "." としました。すると、空白セルに「.」は打てるのですが、 数字を打ってから「.」を打つと入力されなくなりました(数字は消えない)。 以上2点の問題を解消する方法を教えて頂けますと助かります。 よろしくお願いいたします。
Visual Basic | Excel・65閲覧・100
ベストアンサー
Private Sub cmd_Click() If ActiveCell.NumberFormat = "h:mm" Then ActiveCell.NumberFormat = "General" End If If IsNumeric(cmd.tag) Then ActiveCell = ActiveCell & cmd.tag Dim posi As Long posi = InStr(1, ActiveCell, "_") If posi > 0 Then ActiveCell = Left(ActiveCell, posi - 1) & Mid(ActiveCell, posi + 1, Len(ActiveCell)) End If Else Select Case cmd.tag Case "." If InStr(1, ActiveCell, ".") < 1 Then ActiveCell = ActiveCell & "._" End If Case ":" ActiveCell = ActiveCell & ":__" Case "C" ActiveCell.Value = "" Case "BS" If ActiveCell = "" Then Exit Sub ActiveCell = Left(ActiveCell, Len(ActiveCell) - 1) Case "←" ActiveCell.Offset(, -1).Activate Case "↑" ActiveCell.Offset(-1, 0).Activate Case "→" ActiveCell.Offset(, 1).Activate Case "↓" ActiveCell.Offset(1, 0).Activate End Select End If End Sub
<説明> ピリオドとセミコロンを入力するとそれぞれ _(アンダースコア)を1つまたは2つ付けるようにしました。これでExcelによる書式の自動変換を回避できます。 時刻を入力する場合は、分を2桁で入力して下さい。 5分なら :__ の後に"05"と入力します。 <補足> Excelはセルに入力された瞬間に型(値の種類)を判定して適当な書式に変換してしまいます。 例えば"13: "と入力された瞬間に日付時刻データに変換されてしまうので、続きを入力するとおかしなことになるわけです。
質問者からのお礼コメント
迅速な対応ありがとうございました。 完全に解決いたしました。
お礼日時:6/30 11:04