日付風の文字列をユーザー定義の日付形式に置換するには?

Question 104.7 Excel VBA Borad (掲示板)より Previous Next
[セルの書式設定]ダイアログボックス 先日、「作りながら覚える・・・」を購入しました。初心者の私ですが、分かりやすく大変助かっております。

表示形式が文字列になっているセルを日付に変更して日付表示したいのですが、うまくいきません。
表示形式は、変更されるのですが、表示自体が変更されません。
エクセルで、表示形式を変更して[F2]キーまたはダブルクリックして値を変更せずに違うセルに行くと表示が変更するようにしたいのです。
Sub test()
    Do
        If GyoCnt = GyoNo Then
            Check = False
        Else
            Cells(GyoCnt, 1).Select
            Range(Cells(GyoCnt, 1), Cells(GyoCnt, 1)).NumberFormatLocal = _
                "[$-411]ge.m.d;@"
            SendKeys "{F2}"
            GyoCnt = GyoCnt + 1
    Loop Until Check = False
End Sub
初心者なのでこれであっているかがわかっていませんが。。。
ちなみにエクセルには、A列に文字列で"2011/1/1"が入力されています。
どうかよろしくお願いします。
Answer   Copyright (C) 2012.3.8 永井善王
拙著「作りながら覚える! Excel VBA マクロ組み方講座」をご購入いただき、ありがとうございます。
この図はクリックすれば拡大できます。
右図(クリックすれば拡大可能)のA列のように、表示形式が文字列になっているセルに入力されている「日付風の文字列」は、そのセルの表示形式を後で「日付」または「ユーザー定義の日付」に設定し直しても、表示自体が変更されることはないと思います。

このことは、マクロによらないで一般操作で行っても同じで、エクセルの仕様と思います。

なお、ご提示いただいたマクロの7行目にある "[$-411]ge.m.d;@" は、末尾の ;@ が不要と思います。
そして、Format関数を活用するコードに変えれば、解決するかもしれません。 たとえば、下記のようです。
    Range("A1").Value = Format(Range("A1").Value, "[$-411]ge.m.d")
ありがとうございました
先生、ご回答ありがとうございました。
無事、できました。 また、質問させていただくことがあると思いますが その時もご教授よろしくお願いします。

 

Excel VBA Macro