ここから本文です

VBAで質問です。今日の日付を0811のように四桁で表示したいのですが上手くいきませ...

gri********さん

2017/8/1117:29:06

VBAで質問です。今日の日付を0811のように四桁で表示したいのですが上手くいきません。
コードはFormat(Date, mmdd)にしたり、Right(Format(Date, mmdd), 4)にしてみても余計な/が入ってしまいま

す。
どなたか教えてください。

閲覧数:
123
回答数:
5

違反報告

ベストアンサーに選ばれた回答

msk********さん

2017/8/1119:26:47

>余計な/が入ってしまいます。

⇒セルの表示形式を日付にしているとFormat関数だけでは不可能です。
既にセルの表示形式が日付ならこんな感じです。
With Range("A1")
.NumberFormat = "mmdd"
.Value = Date
End With

因みに単に数値としてmmdd表示したいのならこんな感じです。

With Range("A1")
.NumberFormat = "0000"
.Value = Format(Date, "mmdd")
End With

質問した人からのコメント

2017/8/14 21:10:28

いろいろ考えましたがこれを使わせていただきます!
みなさんありがとうございました!

ベストアンサー以外の回答

1〜4件/4件中

並び替え:回答日時の
新しい順
|古い順

hig********さん

2017/8/1305:52:19

gripen274さん
お早う御座います

悩まれているようですね
日付の正体は数字(シリアル値)です。
試しにセルへ 2017/8/11 と入力してセルの書式を標準としてみてください。
セルの値が 42736 になりますよね、これが日付の正体シリアル値です。
シリアル値とは 1900/1/1 を基準とした経過日数です。

それともう1つ、ExcelとVBAは別ソフトです(Excel用にカスタマイズされていますが)
イメージ的には、電卓で計算して(VBAで処理)結果をセルへ入力(VBAからの出力)のような感じです。

これらを踏まえて、VBAで日付を加工しても出力は日付(シリアル値) なので、表示はセルの書式に左右されてしまいます。
後は他の皆さんが回答されているように、セルの書式を自分であるいはコードで設定するか、出力を文字列、数値へ変換するなどの工夫が必要な訳です。

参考まで

30246kikuさん

2017/8/1215:20:33

日付データから mmdd を生成する場合、Format を使うべきです

※ 別の角度など無いと思っています
※ Mid(Date, 5) 等で、処理すべきではありません


日付を文字列にした場合、"2017/08/12" になるのは、
コントロールパネル の 地域と言語のオプション での
日付の短い形式 が yyyy/mm/dd になっているためで、
ここが yy/m/d なら 17/8/12 の文字列になったと思います

PC 設定の多くは yyyy/mm/dd になっている?から・・・
Mid(Date, 5) という発想になるのだと思いますが・・・・

日付の短い形式を色々変更され、イミディエイトウィンドウで

? Mid(Date,5)

されれば、確認できると思います

Prometheusさん

2017/8/1117:53:25

もちろん、「hatena1989さん」が正解なので、別の角度から。

セル「A1」に「0811」を書き込む方法。

Range("A1").NumberFormat = "@"
Range("A1").Value = Replace(Mid(Date, 5), "/", "")

簡単な説明です。

まず、「NumberFormat = "@"」で、書き込むセルの書式を「文字列」に設定しています。

こうしておかないと、頭の「0」が消えてしまいます。

次に、「Mid(Date, 5)」の「Mid()」は、文字列の何文字目から何文字取り出す関数です。

Mid("abcdef", 2, 3)

ですと、「2」文字目から「3」文字取り出すので、「cde」が返ってきます。

しかし、3番目の数値を省略すると、「2」番目からすべてになります。

それを利用して、「Mid(Date, 5)」で、「08/11」にしています。

しかし、余計な「/」があるので、「Replace()」関数(置換関数)を使って、「/」を「""」に置換しています。

すなわち、「/」を削除しています。

プロフィール画像

カテゴリマスター

hat********さん

2017/8/1117:44:26

下記のコードで。

Format(Date, "mmdd")

Format関数の第2引数は文字列で指定します。

あわせて知りたい

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる