ご参考に
http://www.eurus.dti.ne.jp/~yoneyama/Excel/hiduke.htm
すみませんが見つけることが出来ませんでした。
セルの表示形式をユーザー定義を使って揃えることができますよ。
具体的には、セルの書式設定から表示形式タブ、分類をユーザー定義、種類のところに次のように入れます。
[$-411]ggg_0e"年"_0m"月"_0d"日";@
「_0」を入れることでスペースが入ります。
http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_hiduke.html
教えて頂いたサイトのマクロを入れてみましたが、やり方が悪いのでしょうか
1桁日付では前にスペースが入ります
2桁日付でも前にスペースが入ってしまいます。
2桁日付では前にスペースが入らないものを望んでいます。
表示形式のユーザー定義で、次のようにしたらいかがでしょう。
表示 | 表示形式(ユーザ定義) |
---|---|
9月 1日 | _*m"月"_*d"日" |
すみませんがうまく使えませんでした。
▽4
●
SALINGER ●40ポイント ![]() |
すいません。表示形式だけではうまくいかなかったようですね。
http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_hiduke.html
改めて見ると、こちらのコードには1ヶ所間違いがありますね。
正しくはこうです。
If Len(Format(c.Value, "d")) < 10 Then
↓
If Format(c.Value, "d") < 10 Then
どうもありがとうございました。
この行が効いていない事だけは見えましたが
私の力では、とても修正にまでは至りませんでした。
おかげさまで解決致しました。
SALINGER さんの提示されたリンクにあるマクロはこちら(Vista + Excel2007)では正常に動作しました。
動作が違うとなるとバージョン等が気になりますが、OSとEXCELのバージョンは何を使用していますか。
また日付の入力欄はA1:A50の範囲に限定されています。
今回変化はしているようなのでその範囲で試しているか、範囲を変更してはいると思いますが、その点は大丈夫でしょうか。
一応下記は、範囲を削除した例です。
必要に応じて元の形のように範囲を使用してみてください。
念のため日付と月の判定を日付関数に変更してみました
(シートタブの右クリック「コードの表示」で表示されるウインドウに下記をコピー)。
Private Sub Worksheet_Change(ByVal Target As Range) Dim fmt As String For Each c In Target If IsDate(c.Value) Then If Len(Format(c.Value, "e")) = 1 Then fmt = "[$-411]ggg_0e年" Else fmt = "[$-411]ggge年" End If If Month(c.Value) < 10 Then fmt = fmt & "_0m月" Else fmt = fmt & "m月" End If If Day(c.Value) < 10 Then fmt = fmt & "_0d日" Else fmt = fmt & "d日" End If c.NumberFormatLocal = fmt & ";@" End If Next c End Sub
コメントが有効であると補足が簡単ですので、有効にされるとよいと思います。
すみません。
バージョンの違いで動作しなかったということに気が付きませんでした。
2003を使用しています。
1桁か或いは2桁かと見合ったfmt変数を追加していく方法ありがとうございました。
おかげさまで解決致しました。