[[20040119091410]] 『日付の入力について』(とおる) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『日付の入力について』(とおる)

日付を7ケタ数字で入力したいのですが・・・例えば「4160119」と入力すれば「平成16年1月19日」となるようにしたいのです。同じように「3581112」ならば「昭和58年11月12日」となるように、最初の桁が「3」なら昭和、「4」なら平成、というようにしたいのです。こんな事は可能でしょうか?
どなたか教えてください。お願いします。


 何を入力して何を表示するのでしょうか?
 また、どこに入力して、どこに表示するのでしょうか?セルですか?

  (INA) 

あるセルにテンキーで7ケタ数字を入力すると「平成○年×月△日」と表示されるようにしたいのです。過去ログを見ていると、関数を用いて、入力セルの隣のセルに変換・表示させる方法はあったのですが、入力したセルにそのまま表示させる方法はないものでしょうか。
アドバイスをお願いします。
(とおる)


 そんな事はできないでしょう。いいじゃないですか、隣のセルで。

(ます)


 年月日が二桁表示になりますが、表示形式のユーザー設定で。
 [>4000000]0*"平成"00"年"00"月"00"日";[>3000000]0*"昭和"00"年"00"月"00"日";;
            ↑                                   ↑
       ここでCtrl+J                         ここでCtrl+J
 書式設定の配置で「折り返して全体を表示」にチェック。
 行の高さによっては表示できないので、高さを調節してください。
 数値の見栄え整えただけなので、日付関数では工夫しないと計算できません。
 個人的には日付形式での入力をお勧めします。
 もしくは「20040101」形式で「区切り位置」機能で一括日付変換ですね。
 (KAMIYA)

 1.ALT+F11キーで、VBEを起動
 2.プロジェクトウィンドウの Sheet1 を Wクリック
 3.中央の真っ白なウィンドウ(コードウィンドウ)に以下のコードをコピペ

 これで Sheet1 の A1:A10、C1、D2 セルは、数値を入力すると変換されます。 

 'ここから
 Private Sub Worksheet_Change(ByVal Target As Range)
    If Application.Intersect(Target, Range("A1:A10,C1,D2")) Is Nothing Then Exit Sub

 Application.EnableEvents = False

    If Len(Target.Value) <> 7 Then
        MsgBox "7文字で入力して下さい。", 48, "入力エラー"
        Target.ClearContents
        Target.Select 
        Application.EnableEvents = True
        Exit Sub
    End If

    If IsNumeric(Target.Value) = False Then
        MsgBox "数字で入力して下さい。", 48, "入力エラー"
        Target.ClearContents
        Target.Select 
        Application.EnableEvents = True
        Exit Sub
    End If

    Select Case Left(Target.Value, 1)
    Case 3
        Target.Value = "昭和" & Mid(Target.Value, 2, 2) & "年" & Format(Right(Target.Value, 4), "m月d日")
    Case 4
        Target.Value = "平成" & Mid(Target.Value, 2, 2) & "年" & Format(Right(Target.Value, 4), "m月d日")
    End Select

 Application.EnableEvents = True
 End Sub
 'ここまで。

 (注)もし、動かないときは、デザインモードになっていないか確認してください。

  (INA)

ありがとうございます。
こんなマクロの使い方があるなんて・・・
ただ、日付が入力分と異なって表示されます。このあたりは勉強して改善します。
本当にお世話になりました。
(とおる)

 >日付が入力分と異なって表示されます。
 検証不足で失礼しました。
 以下のように修正しましたので、参考にして下さい。 

 Private Sub Worksheet_Change(ByVal Target As Range)

    '対象セルは、A1:A10,C1,D2
    If Application.Intersect(Target, Range("A1:A10,C1,D2")) Is Nothing Then Exit Sub

    If Target.Value = "" Then Exit Sub '空白は終了

 Application.EnableEvents = False

    If Len(Target.Value) <> 7 Then
        MsgBox "7文字で入力して下さい。", 48, "入力エラー"
        Target.Select
        Application.EnableEvents = True
        Exit Sub
    End If

    If IsNumeric(Target.Value) = False Then
        MsgBox "数字で入力して下さい。", 48, "入力エラー"
        Target.Select
        Application.EnableEvents = True
        Exit Sub
    End If

    Select Case Left(Target.Value, 1)
    Case 3
        Target.Value = Format("昭和" & Mid(Target.Value, 2, 2) & "年" _
                       & Mid(Target.Value, 4, 2) & "月" & Right(Target.Value, 2) & "日", "ggge年m月d日")
    Case 4
        Target.Value = Format("平成" & Mid(Target.Value, 2, 2) & "年" _
                       & Mid(Target.Value, 4, 2) & "月" & Right(Target.Value, 2) & "日", "ggge年m月d日")
    Case Else
        MsgBox "先頭の文字は、3 又は 4 でないと変換できません。", 48, "入力エラー"
        Target.Select
    End Select

 Application.EnableEvents = True
 End Sub

  (INA)

ありがとうございました。ちょっとマクロは不慣れなものなので助かりました。
またよろしくお願いします。
(とおる)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.