
セルに11時45分などを入力するのに、1145とコロンを打たずに入力していきたいのですが、どうすれば良いでしょうか?
以前この質問で答えていただいた方でこのような回答をされていてすごく助かりました、
作業を進めているうちに次の問題に引っかかりました、
下の回答が勉強になったものです
No.3
回答者:ja7awu
回答日時:2003/03/28 14:13
.
0~2359 までの数値入力に対し、時刻と認識させるためには、書式では、
出来ないと思います。
VBAが必須になりますが、もし、それで宜しかったら、操作手順を詳しく
書きますので、テストしてみてください。
・ 使用しているシートのシート名タブを右クリックし、「コードの表示」を
選択します。
・ 表示されたコードウィンドウに下記コードをコピーして貼り付けます。
(Option Explicit があったらその行の下に貼り付けます。)
・ コードの5行目で、時刻を入力する範囲を実情に合わせ変更します。
・ Alt + Q でウィンドウを閉じ、シートに戻ります。
時刻入力範囲の表示形式を時刻にし、種類を任意に指定します。
これで、1234 と入力すると 12:34 になります。
5 は0:05、30は0:30、123は1:23 というようになります。
567 など時刻として認識できない数字を入力した場合は、メッセージが出て、
その後消去されます。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Hani As Range
Dim i As Integer
Dim col As Integer
Set Hani = Range("A:A") ' 入力範囲指定
Set Target = Application.Intersect(Hani, Target)
If Target Is Nothing Then Exit Sub ' 範囲外無視
If Target.Count > 1 Then Exit Sub ' 複数セル無視
If Target.Value < 1 Then Exit Sub 'すでに時刻形式無視
i = Val(Target.Value)
On Error GoTo inp_err
Target.Value = TimeValue(Format(i, "#0:00"))
Set Hani = Nothing
Exit Sub
inp_err:
Target.Select
MsgBox "入力した値 " & i & " は、時刻として範囲外です。", vbCritical
Selection = vbNullString
End Sub
すると数式がはいっているところが計算されないのでこまっています、また24時いこうは入力がAM1:00なら2500と入力すると時間として認識されないのです。
どうしたら良いでしょうか?

No.2ベストアンサー
- 回答日時:
こんばんは!
横からお邪魔します。
基本的に他の方のコードに手を加えるのは本意ではないので、自分なりにやってみました。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim myTime As Long
If Intersect(Target, Range("A:A")) Is Nothing Or Target.Count > 1 Then Exit Sub
With Target
On Error GoTo EH
If .Value <> "" Then
If IsNumeric(.Value) And .Value > 0 Then
If .Value - Int(.Value) = 0 And .Value Mod 100 < 60 Then
myTime = .Value
Application.EnableEvents = False
.Value = TimeSerial(Int(myTime / 100), myTime Mod 100, 0)
.NumberFormatLocal = "[h]:mm"
Application.EnableEvents = True
Exit Sub
End If
End If
End If
EH:
MsgBox "入力値が不正です。" & vbCrLf & "再入力してください。"
Application.EnableEvents = False
.ClearContents
.Select
Application.EnableEvents = True
End With
End Sub
※ 色々なエラーに対するコードを記載する必要があると思いますが、
とりあえずはこの程度で・・・m(_ _)m
ありがとうございます、なかなか難しいです、どうしても素人ですから、上手くできませんでした、
時間があるときにまた参考にしてチャレンジしてみます。
本当にありがとうございました。
No.1
- 回答日時:
こんにちは。
人のコードは、基本的には触れないほうがよさそうです。変な恨まれ方をしてもしょうがないですからね。
でも、この前から、似たようなコードをお見かけしますが、VBAとワークシートを違うという認識でないとダメなんだろうと思いますね。こういう場合は、Excelのキャストさせればよいのですね。
この作者の方には、別に批判ではないけれども、なにはともあれ「vbNullString」これは意味が違います。この種の定数には、似たようなものがありますから、たぶん勘違いされたものだと思います。私は、単に="" とか、ClearContents を使っています。
さて、大きな違いというのは、「キャスト」といって、Excelのワークシートが勝手に書式を直してしまう機能を逆手に取った方法です。ただ、不具合があれば、また考えてみます。また、0は、0時として入るようになっています。
'//
Private Sub Worksheet_Change(ByVal Target As Range)
Dim n As Variant
If Target.Column <> 1 Then Exit Sub 'A列以外は不可
If Target.Count > 1 Then Exit Sub '貼り付けしても、1個限り
If Target.Value = "" Then Exit Sub '空白文字は不可
If Not IsNumeric(Target.Value) Then Exit Sub '数値でないのは不可
n = Format(Target.Value, "0:##")
If Val(Mid(n, InStr(n, ":") + 1)) >= 60 Then '60分以上の入力不可
Target.ClearContents '入力間違いは消去
Exit Sub
End If
Target.NumberFormatLocal = "[h]:mm"
Application.EnableEvents = False
Target.Value = n '←文字列をキャスト
Application.EnableEvents = True
End Sub
'//
ありがとうございます、なかなか難しいです、どうしても素人ですから、上手くできませんでした、
時間があるときにまた参考にしてチャレンジしてみます。
本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【再々投稿】VBAのプログラムで動作しなくて困っています 8 2022/10/14 09:06
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) VBAのトグルボタンでのマクロについて質問です 3 2022/10/10 17:23
- Visual Basic(VBA) 【再投稿】VBAで動作しなくて困っています 2 2022/10/11 11:05
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) VBAで重複した値のセルに色付けをしたい 1 2022/11/02 16:12
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) [Excel VBA] このコードでは行の挿入や行の消去をすると13のエラーが出てしまう。 3 2022/12/09 00:29
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルのセル内に全角数字を...
-
Excelで全角の数字が半角になっ...
-
セルに数字を入れると×1000にな...
-
エクセルで文字入力してEnterキ...
-
エクセルで文字列としての指数...
-
Excelで時間を1:30→1.3で表示し...
-
EXCELで大文字入力
-
エクセルのセルや文字を点滅表...
-
Excelで時間順で並べ替えしたい
-
+(プラス)が入力できない><
-
エクセルで時刻を全角かつコン...
-
コクヨのリーフ仕入帳等にパソ...
-
エクセルで【0.5日と1日】を表...
-
平方センチメートルの入力の仕方
-
エクセル関数 月の日数表示
-
EXCELで特定の文字列を入力→エ...
-
excelVBA コンボボックスに時刻...
-
エクセルの入力規則で半角英数...
-
Excelで【1-1】【1-2】【1-3】...
-
また1-2-3で教えてください!
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルのセル内に全角数字を...
-
Excelで全角の数字が半角になっ...
-
エクセルで文字入力してEnterキ...
-
エクセルで【0.5日と1日】を表...
-
エクセルのセルや文字を点滅表...
-
セルに数字を入れると×1000にな...
-
Excelで【1-1】【1-2】【1-3】...
-
エクセルで文字列としての指数...
-
Excelで時間順で並べ替えしたい
-
EXCELで特定の文字列を入力→エ...
-
入力規則でスペース入力を禁止...
-
WORD2010 差し込み印刷の時間...
-
Excelで時間を1:30→1.3で表示し...
-
平方センチメートルの入力の仕方
-
少数点以下2桁以上の入力でエ...
-
エクセルで分や秒の合計や平均...
-
EXCEL セルの書式設定(ユーザー...
-
エクセルで自動的にイコール(...
-
文字の上にバーをつけるには?
-
EXCELで勝手に予測入力される
おすすめ情報