![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
No.2ベストアンサー
- 回答日時:
No.1です!
たびたびごめんなさい。
前回は2桁の場合の処理をしていませんでした。
もう一度訂正したコードを載せておきます。
Private Sub Worksheet_Change(ByVal Target As Range) 'この行から
If Intersect(Target, Columns(1)) Is Nothing Or Selection.Count <> 1 _
Or Not IsNumeric(Target) Then Exit Sub
If Target <= 2400 And Target Mod 100 < 60 Then
Application.EnableEvents = False
With Target
If Len(Target) = 2 Then
.Value = 0 & ":" & Right(Target, 2) '←この行を追加しました。
ElseIf Len(Target) = 3 Then
.Value = Left(Target, 1) & ":" & Right(Target, 2)
Else
.Value = Left(Target, 2) & ":" & Right(Target, 2)
End If
.NumberFormatLocal = "hh:mm"
End With
Application.EnableEvents = True
Else
MsgBox "入力値が不正です。"
With Target
.Value = ""
.Select
End With
Exit Sub
End If
End Sub 'この行まで
検証せずに投稿してごめんなさいね。
何度も失礼しました。m(_ _)m
この回答へのお礼
お礼日時:2012/03/07 22:33
すごいです。
JavaのPOIでの操作経験がなくとても参考になりました。
VBA勉強しようと決心しました。
ありがとうございました。
No.4
- 回答日時:
》 …文字列型でHH:mmのフォーマット
「文字列型」とは具体的にどういうことですか?
No.3
- 回答日時:
エクセルでは時間も数値で、表現方法が違うだけです。
普通の数値で0を時間で表すと(表示形式を yyyy/m/d h:mmとする)1900/1/0 0:00です。(1月0日というのは世の中には存在しないですが、エクセルではそうなっています。)
数値の1は時間では1日に相当します。したがって、8:00(1900/1/0/ 8:00)は、24分の8(=0.3333・・・・)に等しくなります。試しに0.33333と入力して、表示形式を時間に変更してみてください。
普通の数値800を表示形式を 00":"00 とすることにより、表示上08:00とすることはできますが、これはあくまでも800であって、8時間ではありませんので、時間の計算をすることはできません。
4:30(=430)+4:30(=430)は、8:60(=860)になってしまいます。
したがって、コロンを入力しないで時間を入力することはできないと思います。コロンを入力することによって表示形式が自動的に h:mm に変わるのです。
コロンの入力の省略はあきらめていただけるなら、8:30ではなく08:00と表示するには、表示形式を hh:mm にします。
24時間で繰り上がって0に戻るのがいやなら、[hh]:mm とします。
この回答へのお礼
お礼日時:2012/03/07 22:28
ご回答解りやすく感謝しております。
コロンを入れてする方法が参考になりました。
計算ではなく文字列として外部プログラムから読み時間計算する目的です。
ありがとうございました。
No.1
- 回答日時:
こんばんは!
質問内容を取り違えていたらごめんなさい。
>つまり、800と入力して「08:30」となるようにしたいです
の部分は 830と入力して08:30 となるようにしたい!と解釈しました。
VBAになってしまいますが・・・
一例です。
SheetのA列に数値を入力するとします。
画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に
↓のコードをコピー&ペーストしてA列に数値を入力してみてください。
Private Sub Worksheet_Change(ByVal Target As Range) 'この行から
If Intersect(Target, Columns(1)) Is Nothing Or Selection.Count <> 1 _
Or Not IsNumeric(Target) Then Exit Sub
If Target <= 2400 And Target Mod 100 < 60 Then
Application.EnableEvents = False
With Target
If Len(Target) = 3 Then
.Value = Left(Target, 1) & ":" & Right(Target, 2)
Else
.Value = Left(Target, 2) & ":" & Right(Target, 2)
End If
.NumberFormatLocal = "hh:mm"
End With
Application.EnableEvents = True
Else
MsgBox "入力値が不正です。"
With Target
.Value = ""
.Select
End With
Exit Sub
End If
End Sub 'この行まで
こういったコトをご希望だったのでしょうか?
的外れならごめんなさいね。m(_ _)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルに代わる 表入力ツールについて 3 2022/12/21 21:19
- Visual Basic(VBA) エクセルVBAについて 2 2023/01/31 16:21
- Excel(エクセル) エクセルで、例えばAのセルの値次第で、Bのセルの値を自動入力する方法を教えてください。 2 2022/08/02 12:10
- Excel(エクセル) エクセルの一括コピー 1 2022/07/09 22:24
- Excel(エクセル) エクセルで、特定のセルの内容を更新すると、別の特定セルに 更新日付が自動的に表示させる方法はあります 1 2022/11/14 21:03
- Excel(エクセル) エクセルについて質問です 1 2022/12/10 11:49
- Excel(エクセル) エクセル関数について教えてください 4 2023/02/05 14:47
- Excel(エクセル) エクセル データの入力規制について 3 2022/03/30 17:16
- Excel(エクセル) エクセルで 例えばA1のセルに1+1 と入力すると B1のセルに2 と答えが出る関数があったと思いま 8 2022/12/16 20:57
- Excel(エクセル) エクセルでセルに何らかの文字が入力されたらそれを任意の数値として認識させる方法がしりたいです。 3 2023/03/16 20:19
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Inputboxの表示位置(VBA)
-
エクセルの日付について
-
マカフィーの登録
-
エクセルのセルに文字列型でHH:...
-
Excelで=IF()と入力して、カッ...
-
schoolを縮められませんか?
-
このサイトで、ベストアンサー...
-
SMSで送られてきた暗証番号の入...
-
エクセルの数値がある一定の数...
-
行ごとにセルの幅を変えたい
-
アイホーン12ですが、保存して...
-
マウスポインター
-
PCで登録途中の画面から認証コ...
-
短縮した表示のしかたを教えて...
-
付き合って、『4年3ヶ月記念日...
-
printscreenを押すと印刷されて...
-
教えてgooでは、どんな人が嫌わ...
-
セキュアブートがWindows側で有...
-
【アクセス】レポート テキスト...
-
ペストアンサーって
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Steamで
-
Inputboxの表示位置(VBA)
-
Excelのtextboxへの入力で小数...
-
数式の中の値にカンマをつけた...
-
Windows 2000プロダクトキース...
-
ひらがな入力のとき、チェック...
-
この状態で入力しても、指定さ...
-
マカフィーの登録
-
エクスプローラでIPアドレス入力
-
VBAの構文で>を入力したいので...
-
正しく入力しているのに・・・
-
日本奨学金の継続届についてで...
-
シティバンクのネットバンキン...
-
CDタイトルの入力方法
-
アマゾンで中古本の購入時にク...
-
IMEスタンダード2002で・・・
-
エクセルで・・・
-
エクセルでのデーターの並び替え
-
エクセルで数値を振り分けて引く
-
yahooのキーワード入力補助につ...
おすすめ情報