• ベストアンサー

Exccel2000VBAにて年号を下2桁で表示する。

Wendy02の回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.7

こんにちは。Wendy02 です。 ちょっとややこしいですね。Format でとっても、この場合は、あまり意味がないような気がしました。うまく取れているのか、ちょっと分かりませんので、  d = Month(Date) ここに数字を入れて試してみてください。 Sub testsample3()  Dim strDate1 As String, strDate2 As String  Dim d As Integer, m1 As String, m2 As String, m3 As String  d = Month(Date)  m1 = ChangeMonth(d - 1)  strDate1 = Format$(Date, "yy/") & Format$(d - 1, "00 ") & m1 & "-" & m1  If d = 5 Or d = 11 Then  '5月と11月の特例   m2 = ChangeMonth(d - 2, 5)   m3 = ChangeMonth(d - 2)   strDate2 = Format$(Date, "yy/") & Format$(d - 2, "00 ") & m2 & "-" & m3   Else '通常の月   m2 = ChangeMonth(d - (d + 2) Mod 6)   strDate2 = Format$(Date, "yy/") & Format$(d - 1, "00 ") & m2 & "-" & _   m1  End If With Workbooks(2).Sheets(1)   .Range("A25,C25").Value = strDate1   .Range("A26,D26").Value = strDate2 End With End Sub Private Function ChangeMonth(ByVal arg1 As Integer, Optional arg2 As Integer) As String Dim myMonths As Variant myMonths = Array("JAN", "FEB ", "MAR", "APR", "MAY", _       "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC")        ChangeMonth = myMonths((CInt(arg1) + 11 - arg2) Mod 12) End Function

asuka546
質問者

お礼

早速試してみたのですが、10月のときに累月が「05/09 OCT-SEP」になってしましたました。後、同様に3月に「05/03 APR-MAR」になりました。どちらとも4月、11月分でやるとうまくいきます。 また、1月に前年の12月になるはずが、「05/00」になってしましたました。式が複雑すぎて原因が皆目わかりません。 今のところ#6の回答のように作成しております。 長いのが気になります。 ご回答ありがとうございました。

関連するQ&A

  • vba 西暦年表示の件

    お世話になります。 VBAで、西暦年表示を下2桁で表示させたく、 そして、月も含めて大文字に変換してエクセルシート のシート名としたいのです。 下記の様なイメージです。 月表示は一桁の月は一桁表示です。 シートは当月と次月分と二つ作りたいのですが、 ご教示頂きたく宜しくお願い致します。        記   ○○年○月

  • VBA 年の下二けたを表示させる Format

    VBA(version7.1)で年の下二けたを表示させたいと思っています。 Format関数では両者とも5,  date関数はyear関数を使うと1905と表示 right関数を使うと20と意図通り表示します。 このような結果になるのはなぜでしょうか。 詳しい方よろしくお願いします。 Sub test() Cells(1, 1) = Format(Year(Date), "yy") Cells(2, 1) = Format(Year(Now), "yy") Cells(1, 2) = Right(Year(Date), 2) Cells(2, 2) = Right(Year(Now), 2) Cells(1, 3) = Year(Date) Cells(2, 3) = Year(Now) End Sub 実行結果 5_20_1905/7/12 5_20_2020

  • 8桁の数字を年(最初の4桁)/月(次の2桁)/日(最後の2桁)表示した

    8桁の数字を年(最初の4桁)/月(次の2桁)/日(最後の2桁)表示したい 条件は月と日の最初がゼロは表示しない事 「99990101」の場合「9999/1/1」としたい。 件数が多いので一括変換出来ると助かります。

  • エクセルで年月日表示の桁をそろえたい

    会計ソフトのデータを取り込みましたが、年月日の表示の桁がバラバラで見づらいのです。 たとえば、平成19年6月1日の場合、19 6 1となるのを190601。平成19年6月13日の場合、19 613となりますが190613と 年、月、日表示を2桁表示にして見栄えをよくしたいのですが、現在は、手入力で修正をしていますが、関数でできるのでしょうか。 会計シフトの会社に確認をしましたが、会計ソフトの設定ではゼロをつけ2桁表示はできないとのことです。

  • IF文で。。

    Dim 当月 As String Dim 結果 As Range Dim i As String Dim X As String Dim Nen as integer 当月 = Format(Date, "m") & "月"  Nen = 2009 Set 結果 = Range("D4:O4").Find(what:=当月, lookat:=xlWhole) If Not 結果 Is Nothing Then i = Left(当月, 1) If 結果 <> "4月" And Year(Date) = Nen + 1 Then ・            ・ ・ Findで取得した当月を結果に入れ、結果が4月で2010年でなければ Then以下のプログラムを実行させるというものを作成したのですが 結果は4月でYear(Date)は2009年なので実行されるはずなのですが 実行されません。 MsgboxでNen+1を表示させてみたのですが、2010年でした。 この場合結果は4月で2010年ではないのでthen以下は実行されるはずだと思われるのですがどこかおかしいでしょうか? 何かご指摘あればお願いします。

  • 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日を自動的に増やす必要がある為に上記の仕様にしてます。

  • 日付を格好良く表示する方法

    すごく初歩的な質問ですいません。 小さめのカードを作成しようと思い、見た目のカッコよさを求めて Jun.20th.2008みたいに表記しようと思ったのですが、 2008年5月3日を表記するにはどのようにしたらよいでしょう? Jun.3rd.2008は正しいでしょうか? もし他によい表記方法をご存知でしたら教えてください>< よろしくお願いします

  • 【Excel】日付の一桁の数字に自動で0をつける

    ユーザー定義の「日付」では、「2001年3月14日」という(アスタリスクのつかない)書式がありますが、一桁の数字に0がありません。 この日付の書式にするにはたとえば「19-7-19」と打てば自動で「2019年7月19日」と表記されますが、この入力方法で一桁の数字の場合「07月」というように表記される方法がありましたら教えてください。 Excel2007利用です。

  • VBA マイナス表記にも対応するには

    現段階で正の数表記にしていますが 負の数表記にも対応が出来たらと思っております。 どう変更したらよろしいでしょうか? Public Function isAcceptNum(ByVal tgtTxb As MSForms.TextBox) As Boolean '## 数値チェック If tgtTxb.Value = "" Then '空白だったら isAcceptNum = True Exit Function End If Dim chkText As String '文字列型の変数宣言 If IsNumeric(tgtTxb.Value) Then '数値だったら If CDbl(tgtTxb.Value) < 0 Then '負の数値だったら chkText = "正の数値" ElseIf CDbl(tgtTxb.Value) <> Int(tgtTxb.Value) Then '整数じゃなければ chkText = "整数" End If Else '数値じゃなければ chkText = "数値" End If If chkText <> "" Then 'チェックワードがあれば chkText = "'" & tgtTxb.Tag & "'には" & chkText & "を入力してください" 'メッセージを成形 MsgBox chkText, vbOKOnly + vbExclamation, "注意" 'メッセージボックスを出力 Else '正の整数だったら isAcceptNum = True End If End Function

  • 【Excel】数字を日付表示に

    表題の通りなのですが、ある数字(8桁の列と6桁の列があります)の入っているセルを、日付表記に表示したいのです。 例えば、現在あるセルに”20061006”、とか”200310”となっているセルがあるのですが、これを ”20061006”→”H18/10/06” ”200310”→”H15/10” と表示させることは可能でしょうか? 「セルの書式設定」→「表示形式」→「日付」で出来るかと思いやってみたのですが、”##########”と表示されるのみで、希望する表示が出来ません。