2016-09-30 4 views
4

私のExcelシートに日付を含むセルがあります。Excel VBA形式(<Date>、 "mmmmm-yy")が期待どおりに機能しない

これらのセルの表示形式は、 "mmmmm-yy" のカスタム形式で、日付「7/1/16」は「S-16」と表示されます。このワークフォーマットはExcelシートで動作しますが、VBAではこれらのセルでFormat()関数を呼び出そうとしますが、同じフォーマットは得られません。

Format(<Date_Cell> , "mmmmm-yy") 

例えば、チャート上の

"April4-16" 

を与えます。

Formatの機能が日付セルの書式設定と同じ動作をしないのはなぜですか?

編集:オフィスサポートのウェブサイトFormat a date the way you wantによれば、私は正しい形式を使用していますが、ウェブサイトが要求する結果が得られていません。

Edit2:セルの日付の書式設定は、選択した回答が指し示すように、VBA Format関数とは異なります。

+1

あなたは月の部分で1あまりにも多くの 'M'を持っているが、唯一の4 –

+1

を使用しません、それは完全なを生成します6月16日対「J-16」の月名です。オフィスサポートのウェブサイトによると、5 'mは正しいです。[日付をあなたが望むようにフォーマットする](https://support.office.com/en-us/article/Format-a-date-the-way-you- want-8e10019e-d5d8-47a1-ba95-db95123d273e) –

答えて

4

VBA機能Formatのフォーマット記号の意味とExcel Date Formatは同じように100%ではありません。

次のようなワークシート関数TEXTを使用することができます:あなたが望むものを達成するために

Application.Text(<Date_Cell> , "mmmmm-yy") 

4

VBA Format関数は月の最初の文字として "mmmmm"形式をサポートしていません(サポートされている形式についてはdocumentationを参照してください)。あなたの出力は、実際には "mmmm"(月名)、 "m"(月数)として解析されます。あなただけの月の最初の文字が必要な場合は、手動でそれを解析する必要があります:

Left$(MonthName(Month(<Date_Cell>)), 1) & "-" & Right$(CStr(Year(<Date_Cell>)), 2) 
2

つ以上のオプション:

変更セルの数値の書式:

Range("A1").NumberFormat = "mmmmm-yy" 
関連する問題