• ベストアンサー

VBAでExcelのヘッダーに文字列+セルの値を入れたい

お知恵を貸してください。 Excelヘッダーについてです。 セルA1に日付が入っていて、この値をYYYY/MM/DDの形でヘッダーにしたいと思っているのですが、この日付の前に「日報」という2文字を必ず入れたいのです。 最終的な形は「日報YYYY/MM/DD」となればよいのですが、これはVBAで可能なのでしょうか。 今まで手入力していたのですが毎日印刷するものなので、自動化したいと思うのです。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

Dim strヘッダ  As String With ActiveSheet   'ヘッダ文字列の編集   strヘッダ = "日報" & .Cells(1).Text      '左   .PageSetup.LeftHeader = strヘッダ   '中   .PageSetup.CenterHeader = strヘッダ   '右   .PageSetup.RightHeader = strヘッダ End With '印刷部(不要なら削除) ActiveWindow.SelectedSheets.PrintOut

anemu1234
質問者

お礼

ありがとうございました。教えていただいた方法で無事解決いたしました。お礼が遅くなりまして申し訳ございませんでした。

その他の回答 (3)

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

Wendy02です。 #3の文章がヘンでした。 >及びことは考えていません。 及ぶことは考えていません。 つまり、シート全体に及ぶためには、ThisWorkbookイベントの中のWorkbook_BeforePrintを使うわけですが。

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

こんばんは。 まあ、こんなところかと思いますね。 きちんと、"A1" に YYYY/MM/DD という書式で入力されているのでしたら、#1 さんの .Textプロパティで十分です。 Dim myDate As Date With ActiveSheet  myDate = .Range("A1").Value  .PageSetup.LeftHeader = "日報 " & Format$(myDate, "YYYY/MM/DD")  .PrintOut  'Preview:=True  ''確認用 End With 当然と思いますが、シートが明示されていませんから、他のシートにこのヘッダーが及びことは考えていません。

anemu1234
質問者

お礼

ありがとうございました。 お礼が遅くなりまして申し訳ございませんでした。

  • diashun
  • ベストアンサー率38% (94/244)
回答No.2

VBEを開いて「ThisWorkBook」に以下のコードを貼り付けてください。 Private Sub Workbook_Open() ActiveSheet.PageSetup.RightHeader = _ "報告 " & Format(CDate(ActiveSheet.Range("A1")), "YYYY/MM/DD") End Sub

anemu1234
質問者

お礼

ありがとうございました。 お礼が遅くなりまして申し訳ございませんでした。

関連するQ&A

  • エクセルのヘッダにセルの値を入れたい

    最近頻繁にお世話になっており感謝しております。 エクセル2010を使っているのですが、ヘッダにセルの式の値を表示して印刷することは出来ないのでしょうか? 日付けやファイル名等は表示できることは知ってるのですが。

  • EXCEL VBAでのCSV出力について

    EXCELに入力されたデータをCSV出力するプログラムを作成しました。データには日付が入っており年月日がYYYY/MM/DDの形で入力されています。これをハンド作業で名前をつけて保存でCSVに出力すると年月日はそのままの状態で保存されますが、VBAで保存するとMM/DD/YYYYの形になってしまいます。この状態で保存されると、次にEXCELで読み出すと年月日が文字列扱いになってしまいます。新しいマクロの記録で行っても結果は同じでした。 VBAで保存する際、YYYY/MM/DDで保存する方法はないでしょうか。 また、MM/DD/YYYYで保存されたCSVを日付としてEXCELに認識させる方法はあるでしょうか。 教えてください。よろしくお願いします。

  • エクセルVBA セルの書式につい

    ユーザーフォームのテキストボックスに入力した日付(yyyy/mm/ddの形式)をA1セルに入れるとします。  Range("A1").Value = Me.txt日付 A1セルの表示形式は書式設定でユーザー定義の"d"で表示されるように設定していますが、 テキストボックスに入力した形式のまま(yyyy/mm/dd)でA1セルに表示されてしまいます。 上記のみではNGでしょうか? ちなみに、yyyy/mm/ddと入力されたA1セルを一旦編集モード([F2]キーを押した状態)にして[Enter]を押すと"d"(書式設定で指定している書式)に変わります。 参考:A1セルの日付をみて別シートの一覧からVlookup関数で値を検索したいところが、yyyy/mm/ddで表示されるためにエラーとなってしまいます) ご存知の方教えていただきたいです。

  • Excel VBAについて

    Excel VBAについて ExcelのセルA1に日付データ(yyyy/mm/dd hh:mm)が入っています。 このエクセルファイルを開いている間、セルA1の日付(時分)が更新されたらマクロを実行するようにしたいのですが、どのようにしたらよいのでしょうか。 セルA1の日付データが更新されるタイミングは決まっていません。 セルA1の日付データが更新されたらマクロ実行というのが難しいのであれば、 10秒おきにマクロを実行というようなことができないでしょうか。 ご教授願います。

  • EXCELのヘッダーについて

    Excel2003です。 ヘッダーに「&[日付]」を指定していますが「yyyy/mm/dd」の形式で表示されます。 これを和暦で「平成yy年mm月dd日」の形式で表示させることはできないでしょうか?

  • エクセル 最後尾の値によって以降のセルの値を表示

    エクセルで日付が自動で表示されるファイルを作成しています 開始日が25日から始まる1か月分の日付を表示したいです。 途中で月が変わるため、単純に31日分を表示すると、 前月の日数が29日、30日または31日で終わるかで、 最終日が26日になったり、27日になったりします。 最終の日付は25日を越えたくないため、次の式を作成しました。 =IF(TEXT(A30+1,"dd")<26,A30+1,"") A30のセルに入る数値はyyyy/mm/ddです。 それをTEXTにして、ddの部分が26より小さければ日付表示、大きければ空欄。 と言う具合で作成していますが、30日だった場合、31日だった場合と、 どちらかのケースでしかうまくいきません。 図が無いのでわかりにくいかと思いますが、 どなたか教えていただけませんか?

  • Excel VBA で日付を4ケタの数値に変換させるには?

    ある日付データを 『月』と『日付』のみの4ケタの"文字列"にさせて表示処理させたいのですが、困っております。 現在、VBAを使用しないで処理させると…こんな感じで困っています。 1.日付を yyyy/mm/dd 表示 2.編集~ 『/』のみを全て『0』に変換 3.RIGHT関数で4ケタ(または5ケタ)抜き取る *データ* 日付    yyyy/mm/dd  変換      RIGHT(4ケタ) 1月5日  2005/1/5     20050105   0105 1月10日  2005/1/10    200501010   0110  ・    ・  ・    ・ ▲不具合状況 1."1月10日" のように日付が2ケタになる日は "1010" のように表示がずれる。RIGHT(○,5) で対処する方法もあるが…効率があまり良くない。 2."yyyy/mm/dd" のデータを直で "RIGHT( )" で処理させると思ったとおりの値が戻ってこない。 yyyy/mm/dd      RIGHT() 2005/1/5    →   8537 …変な値が戻ってくる? VBAで一気にやる方法ありますでしょうか? お知恵を拝借ください!

  • セルの結合後、値を代入したいです

    下のような表を作成しています 1行目  2行目・・・日付(yyyy/mm/dd)表示はdd 月ごとに1行目のセルを結合して、〇月と自動で入るようにしたいのですが、VBAで作成できますでしょうか。 2行目の日付は、1日から31日まであるわけではなく、月によって日付の数が違います。 選択した範囲のセルを結合して、下の行の日付から、月を参照して結合したセルにその月を代入することは可能でしょうか。

  • yyyy/mm/ddをyymmddの文字列に

    一つの列にyyyy/mm/dd(日付)とyymmdd(文字列と標準が混在)が混在しているものを、全て文字列のyymmddにするために、区切り位置で全てを文字列にしてから文字操作でyymmddにしようとしてます。 vbaで区切り位置を使用してyyyy/mm/dd(日付)を文字列に変換するとdd/mm/yyyyと表示されてしまいます。vbaでやらずにそのまま区切り位置で文字列に変換するとそのままyyyy/mm/ddの表示のままなのに、vbaでやるとなぜdd/mm/yyyyになってしまうのでしょうか? vbaで日付yyyy/mm/ddを文字列yyyy/mm/ddに変換する方法を教えてください。 よろしくお願いいたします!

  • エクセルVBAでシリアル値で読み込まれてしまう

    こんばんわ! エクセルVBAのユーザーフォームの質問です。 A1セルにある日付データ(yyyy/mm/dd形式)のデータをユーザーフォームのテキストボックスに入れるとシリアル値になってしまいます。 式は普通に aaa.text=range("a1") としています。 同様に時刻もなってしまうのですが、どうしたら通常のyyyy/mm/dd形式(時刻はhh:mm形式)で表示できるでしょうか? アドバイスの程よろしくお願いいたします。

専門家に質問してみよう