- 締切済み
エクセルで時刻の入力方法
エクセルで時刻を入力するとき「:」付きで入力しないで、例えば、1215と入力し、Enter押下後12:15と時刻が入力される方法。
- みんなの回答 (6)
- 専門家の回答
みんなの回答
- hige_082
- ベストアンサー率50% (379/747)
完璧?3桁仕様 Private Sub Worksheet_Change(ByVal Target As Range) If Not (Target.Row = 1 And Target.Column < 3) Or Target.Value = "" Then Exit Sub If Not (Target.Value >= 100 And Target.Value <= 235 _ Or Target.Value >= 500 And Target.Value <= 950) Then Exit Sub Application.EnableEvents = False If Target.Value >= 100 And Target.Value <= 235 Then Target.Value = Target.Value * 10 Select Case Len(Target.Value) Case 3 Target.Value = Left(Target.Value, 1) & ":" & Right(Target.Value, 2) Case 4 Target.Value = Left(Target.Value, 2) & ":" & Right(Target.Value, 2) End Select Application.EnableEvents = True End Sub 一部3桁仕様(10:00~23:50の間の最後の0を除いたもののみ3桁入力可) Private Sub Worksheet_Change(ByVal Target As Range) If Not (Target.Row = 1 And Target.Column < 3) Or Target.Value = "" Then Exit Sub Application.EnableEvents = False If Target.Value >= 100 And Target.Value <= 235 Then Target.Value = Target.Value * 10 Select Case Len(Target.Value) Case 3 Target.Value = Left(Target.Value, 1) & ":" & Right(Target.Value, 2) Case 4 Target.Value = Left(Target.Value, 2) & ":" & Right(Target.Value, 2) End Select Application.EnableEvents = True End Sub お好きにどうぞ
- hige_082
- ベストアンサー率50% (379/747)
対応有難う御座います 顔の見えないやり取りなので、お礼は必要と何処かに書いておりました 受け売りです、すいません 1 B1を対応させると Private Sub Worksheet_Change(ByVal Target As Range) If Not (Target.Row = 1 And Target.Column < 3) Or Target.Value = "" Then Exit Sub Application.EnableEvents = False Select Case Len(Target.Value) Case 3 Target.Value = Left(Target.Value, 1) & ":" & Right(Target.Value, 2) Case 4 Target.Value = Left(Target.Value, 2) & ":" & Right(Target.Value, 2) End Select Application.EnableEvents = True End Sub こんな感じです 2 基本的には、マクロ(実行ボタン付き)が存在しても関係無いはず hallo-2007さんにも補足戴きましたが 時間を変更したい、シートのシートタブ、画面の下のほうにある "Sheet1"、"Sheet2"と表示されているものを、右クリックして 一番下のコードの表示を選択 表示された画面に、上のコードをコピペ 画面を閉じて、コードを設定したシートのA1、B1に入力すると 希望の処理がされる 説明が下手ですみません
お礼
早速の明解な回答有難う御座いました。既に有るマクロの先頭に入力したところ、うまく処理されました。日頃「:」なしで時刻の入力が出来ないものかと思っていましたので大感激です。 これで十分なのですが、もう少しだけ、時刻入力の簡素化を図れないものかと思いました。それは、例えば5:00~23:50の間で、「12:40」を124と3桁で入力して処理出来ないものかと..。もっとも1240と4桁で入力すれば良いのでしょうけども。 お陰様でマクロの素晴らしさが少しわかりました。これから勉強したいと思っていますので、素人でも理解できる良いテキストが有りましたら紹介してください。よろしくお願い致します。
- hige_082
- ベストアンサー率50% (379/747)
hallo-2007さん補足有難う御座います 詳細が無いので、簡単な説明で済ませました 結構マクロ拒否する人が多いので Private Sub Worksheet_Change(ByVal Target As Range) If Not Target.Address = "$A$1" Or Target.Value = "" Then Exit Sub Application.EnableEvents = False Select Case Len(Target.Value) Case 3 Target.Value = Left(Target.Value, 1) & ":" & Right(Target.Value, 2) Case 4 Target.Value = Left(Target.Value, 2) & ":" & Right(Target.Value, 2) End Select Application.EnableEvents = True End Sub A1のみにするとこうなります 大きなお世話だとは思いますが、回答してくださった方には 一言お礼をした方が良いと思います
お礼
具体的なる回答有難う御座いました。うまくいきました。お陰様で素人ながらも、目標に近づいてることを実感しています。大変図々しいと思いますが、2つ教えて頂きたいことがあります。(1)セルB1も対象にしたい。(2)既に、マクロ(実行ボタン付き)が存在するシートにこのマクロを追加する方法。以上2点よろしくお願い致します。
- hallo-2007
- ベストアンサー率41% (888/2115)
横からすみません。 hige_082さんが提示されているコードは Private Sub Worksheet_Change(ByVal Target As Range) で始まりますので、ワークシートのChangeイベントです。 コードは標準モジュールではなく、それぞれのシートのモジュールに記述します。 1215 と入力しようとしているシートのシート名のタブをクリック、コードの表示をクリックします。 VBエディターが起動しますので、そこへコピィしてください。
お礼
回答して頂きながら、お礼もせずに大変失礼致しました。お陰様で少しずつ目標に近づいています。有難う御座いました。
- hige_082
- ベストアンサー率50% (379/747)
マクロが解るなら Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False If Len(Target.Value = 4) Then Target.Value = Left(Target.Value, 2) & ":" & Right(Target.Value, 2) Application.EnableEvents = True End Sub
お礼
早速のご回答有難うございます。マクロは素人ながらご回答を参考にマクロを作りましたが、うまくいきませんでした。具体的にセル"A1"に1215と入力したときのマクロを教えて頂きたいのですが、よろしくお願い致します。
- hana-hana3
- ベストアンサー率31% (4940/15541)
ありません。 書式設定を使えば見かけ上は可能ですが、計算には使えません。 セルの書式を時刻に設定して、0~1の間の値を入力すれば時刻になります。 0.5といれば12:00になります。
お礼
迅速なる回答をして頂いたにもかかわらず、お礼をしないまま今日に至りましたを深く反省しております。大変失礼致しました。マクロは素人ですが、マクロ対応の回答を得ることが出来ました。有難うございました。
お礼
一部3桁仕様を採用させて頂きまして、100%私の考えていたことが出来ました。今まで貴重な時間をさいて、ご回答頂き大変有難う御座いました。今回を契機にマクロを本格的に勉強しようと思っています。質問する機会が有ると思いますので、もし目にとまりましたならば回答をお願い致します。