- ベストアンサー
vba 「02」を返したいのですが
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
>Debug.Print Format(Date, "mm") >Month関数自体が不要。 これじゃ、あまりにも不親切なので一応説明 Month関数はVariant型を返します つまり、対象がDate関数なので当日の「月」に当たる値(数値)を返してるんですね これが質問にある2月の「2」です この時点で返り値は数値タイプのVariant型になっています 日付型の管理は数値で管理されています MSの場合、日付の初期値「0」は1899/12/30です ですから、Month関数で返した「2」は初期値の「2」日後である「1890/1/1」を示しています Format関数は変換対象の「1890/1/1」の月の値「1」に対して、”mm"の日付型書式で返しているので「01」が返っているんです Format関数の日付型書式は、変換対象が日付と認識できる数値かDate型であれば機能します つまり、Date関数はDate型の値(当日)を返します Format(Month(Date), "00") と書き換えれば、”00”の文字列型書式で「02」を返すことができますが、プログラミングをする場合、無用な関数の使用はバグの原因になりますので、Month関数を削り Format(Date, "mm") で十分と思います
その他の回答 (6)
- chayamati
- ベストアンサー率41% (254/607)
フォームにテキストボックスを配置してこのプロパティーの データタグ内のコントロールソースに =Format(Month(Date()),"00")とするのはいかがですか
お礼
ありがとうございました。
- imogasi
- ベストアンサー率27% (4737/17068)
Sub test01() MsgBox Month(Date) MsgBox Format(Date, "mm") End Sub mmは、エクセルの日付シリアル値を年月日表示に直し、その月部分をMonthで取るので、そのままでよい。 Format(Month(Date),だと、2月21日では)Month(Date),が「2」なので、日付シリアル値が「2」の1900年1月2日の月を取る(すなわち01ででしょう)。 1段余分なことをしているのことになるのでしょう。
お礼
ありがとうございました。
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
【補足】 Month(date) ---> 1900/01/01ですから ? Format("1900/01/01", "mm") 01 となります。
お礼
ありがとうございました。
- Meegeren
- ベストアンサー率44% (204/459)
Debug.Print Format(Date, "mm") Month関数自体が不要。
お礼
ありがとうございました。
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
Q、「02」を返したいのですが、どうすればいいでしょうか? A、やり方は2つ。 添付図を参照して試してみて下さい。
お礼
ありがとうございました。
関連するQ&A
- DatePartを関数使うと、スペースがはいる
Sub test1() Debug.Print Format(Date, "m") End Sub Sub test2() Debug.Print DatePart("m", Date) End Sub 二つを実行すると、DatePartの場合は 戻り値の前にスペースが入ります。 「12」 「 12」 という結果になります。 なぜなのでしょうか?
- ベストアンサー
- その他MS Office製品
- VBA 日付型を8桁数値へ変換
VBAの中で、Date型の日付をバッチファイルに渡す時に、8桁数値へ変換したいのですが、0埋めのやり方が分からずに困っております。 Date型 yyyy/mm/dd 8桁数値 yyyymmdd Private Sub cmdBSubmit_Click() Dim rc As Integer Dim sDate As Date Dim eDate As Date '開始日・終了日処理 sDate = DateAdd("d", -5, txtsDate) eDate = DateAdd("d", 5, txteDate) Debug.Print "----------------------" Debug.Print "開始日-5:" & sDate Debug.Print "終了日+5:" & eDate 'パブリック変数へ、日付格納 sDateP = Year(sDate) & Month(sDate) & Day(sDate) eDateP = Year(eDate) & Month(eDate) & Day(eDate) Debug.Print "----------------------" Debug.Print "開始日:" & sDateP Debug.Print "終了日:" & eDateP rc = MsgBox("開始日 : " & sDate & vbCrLf & _ "終了日 : " & eDate & vbCrLf & _ "抽出を開始します宜しいですか?", vbYesNo + vbQuestion, "確認") If rc = vbYes Then '集計バッチを実行 'MsgBox "実行" Call 抽出 Else '中止 MsgBox "中止" End If End Sub 'パブリック変数へ、日付格納 sDateP = Year(sDate) & Month(sDate) & Day(sDate) eDateP = Year(eDate) & Month(eDate) & Day(eDate) この書き方だと、月・日が一桁の場合、例えば「2013/01/01」だと、”201311”になってしまいます。 これを、"20130101"にしたいのですが、どう書けば宜しいでしょか? 最初から、8桁日付で入力すればよいのでしょうか、入力した日付の前後5日を自動的に増やす必要がある為に上記の仕様にしてます。
- ベストアンサー
- Excel(エクセル)
- VBA 複数の文字のコードを一気に返すには
Sub test1() Dim myStr As String myStr = "abc" Debug.Print Asc("a") Debug.Print Asc(myStr) End Sub このコードは、どちらも97が返るのですが、 myStrは3文字です。 3文字全ての文字コードを返すには、 Sub test2() Dim myStr As String myStr = "abc" Debug.Print Asc(Mid(myStr, 1, 1)) & Asc(Mid(myStr, 2, 1)) & Asc(Mid(myStr, 3, 1)) End Sub のようにするしかないのでしょうか?
- ベストアンサー
- オフィス系ソフト
- vbaで今年があと残り何日かを求めたいのですが
vbaで今年があと残り何日かを求めたいのですが Sub test() Debug.Print Year(Date) & "/12/31" - Date End Sub これだと、型が一致しませんになります。 なぜエラーになるのでしょうか? その原因がわかれば解決できそうな気が・・・
- ベストアンサー
- その他(プログラミング・開発)
- VBAコードでイミディエイトウィンドウを表示する方
VBAコードでイミディエイトウィンドウを表示する方法はありますか? 例えば、 Sub test() Debug.Print Now End Sub を実行したときに イミディエイトウィンドウが表示されていなければ結果がわかりませんよね。 Ctrl+Gでイミディエイトウィンドウを表示出来る事は知っていますが サブプロシージャーと実行とともに、 イミディエイトウィンドウをVBAで表示する方法を教えてください。 Sub test() Debug.Print Now イミディエイトウィンドウを表示 End Sub のようにしたいです。 ご回答よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- VBAで期間が何か月間なのかを取得する方法
VBAで期間が何か月間なのかを取得する方法を教えてください。 Sub test1() Dim dateStart As Date Dim dateEnd As Date dateStart = "2013/1/1" dateEnd = "2013/12/31" Debug.Print 12 & "カ月です" End Sub この場合、12か月ですが、 例えば dateStart = "2013/7/1" の場合、6カ月を返したいのですが それを取得するコードを教えていただけますか? よろしくお願いします。
- ベストアンサー
- Excel(エクセル)
- エクセルvba 検索対象をシートではなく、ブック全
このコードでシート内に検索文字があるかどうかを取得できるのですが 検索対象をシートではなく、ブック全体にするには どうすればいいでしょうか? Sub Sample() If Not Cells.Find(What:="test", LookAt:=xlPart) Is Nothing Then Debug.Print "あります" Else Debug.Print "ありません" End If End Sub
- ベストアンサー
- オフィス系ソフト
- ひらがなとカタカナを区別して置換するには?VBA
カタカナの「ア」があるのなら置換したいので Sub test() Debug.Print Replace("ア111", "ア", "") End Sub としたのですが、これで問題なく置換されるのですが どうやらひらがなの「あ」も上記のコードで置換されるようです。 Debug.Print Replace("あ111", "ア", "") だと、返り値が「111」でした。 ひらがなとカタカナを区別するには小津すればいいでしょうか? Replace("あ111", "ア", "")の返り値は「あ111」がいいです。
- ベストアンサー
- オフィス系ソフト
- VBA 「何時間何分何秒」にするにはどうすればいい
Declare Function GetTickCount Lib "KERNEL32" () As Long Sub Sample() Debug.Print GetTickCount & "ミリ秒" End Sub これで取得される値を 「何時間何分何秒」にするにはどうすればいいでしょうか? Format(GetTickCount, "hh:mm:ss") にするとなぜかオーバーフローしてしまいました。
- ベストアンサー
- オフィス系ソフト
お礼
ありがとうございました。