« 誰かのためにマクロプログラムを作ること | トップページ | 日付を英語表記にする(前回のさらにつづき) »

2008年10月12日 (日)

日付を英語表記にする(前回のつづき)

先日、「日付を英語表記にする」という記事を書きました。その中で、半角数字で記入した日付を、英語の日付に直す方法を無理やり編み出して記載しました。

今日は、そのプログラムの修正です。

英語の表示形式は、書きプログラム中に"mmmm d, yyyy"と記載したように、前回の力わざと比べると簡単に変換することができます。

前回に調べたときには、「できる大辞典 Excel VBA」を参考にして考えました。この本の索引で、「日付」の項目に、いくつかページがのっており、P305, P808, P884を参考にしました。

具体的には、
月の名前の英語表記 Format("2003/4/1, "mmmm") → April
日付一桁表記      Format("2003/4/1, "d") → 1
西暦年を4桁表記       Format("2003/4/1, "yyyy") → 2003
という具合です。

これを使ったので、前回のプログラムは多少長いけれど結果が出せたわけ。

今回は、全てを一括して Format("2003/4/1, "mmmm d, yyyy") → April 1, 2003
と表記することを覚えました。

ワードも、エクセルも、VBAが難しいといわれるゆえんは、コマンドを知らない場合(ヘルプや本で調べきれない場合)、遠回りをして結果にたどり着いてしまうかもしれないということです。

今回のような小さな遠回りであればどうでもいいのですが、もう少し上級のコマンドであると、そのコマンドを知らないがために、やたら多くの条件設定を自分ですることになったりすると思います。

たとえば、split関数はすごく便利でたまに使いますが、この関数があることを知らなかったら、相当複雑なプログラムを組むことになってしまうなと怖くなります。(split関数については、「ワードで実践」のP101を参照ください。)

今回の表現については、後日インターネットで参考のために英語表現への変換マクロを調べていたら、別のコマンドで"mmmm d, yyyy"の表現を使っているものに出会ったので、それを参考にしてみたらうまくいったというわけ。

本だけの調べで満足していましたが、案外、インターネットにいろんな有益な情報が転がっていますね。

●プログラム
前回のものと多少違います。今回のプログラムでは、カーソル位置に日付をテキスト入力します。

英文のレターで、現地代理人のレター送付日、特許庁の指令発行日など日付を書くことが多い方、ちょっと便利かも。

Sub 英語日付()

Dim dateEnglish As String
Dim dateShort As String

dateShort = InputBox("日付を2008/10/5の形式で入力してください。", title:="英語表記への変換")

If dateShort <> "" Then
    dateEnglish = Format(dateShort, "mmmm d, yyyy")
    Selection.TypeText Text:=dateEnglish
Else
    End
End If

End Sub

|

« 誰かのためにマクロプログラムを作ること | トップページ | 日付を英語表記にする(前回のさらにつづき) »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/519619/42759088

この記事へのトラックバック一覧です: 日付を英語表記にする(前回のつづき):

« 誰かのためにマクロプログラムを作ること | トップページ | 日付を英語表記にする(前回のさらにつづき) »