エクセルで作成・更新した資料を管理する目的で、ヘッダーあるいはフッターに更新日を入れたいのですがどのようにすればよいでしょうか。
「ページ設定」-「ヘッダー/フッター」にある[日付]やTODAY関数では、ファイルを開いた日の日付が入ってしまい、過去に作成した資料も現在の日付で印刷されてしまいますので使えません。
イメージとしては、マクロ(?)を作成して、更新したシートをアクティブな状態にしてマクロを実行するとシートごとに更新日がフッターに挿入されるようなものをです。
さらに、わがままを言えば同一ブック内のシート間に参照がある場合、変更がされる参照先のシートのフッターも変更されると、なおありがたいです。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

VBAでやってみました。


VisualBasicEditorの、標準モジュールやシートのモジュールではなく、ThisWorkbookに貼り付けてください。
更新したシートをアクティブな状態にしてマクロを実行すると、更新日がそのシートの右ヘッダーに挿入されます。

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
ActiveSheet.PageSetup.RightHeader = Format(Date, "yyyy/m/d 更新")
End Sub

この回答への補足

ご回答有難うございました。
ついでといっては何ですが、標準フォントは11ptの時にこのヘッダー内の更新日だけ8ptにするためにはどうすればよいのでしょうか?
VBAの基本がわかっていないので&8をどの部分に挿入すればよいのかわかりません。
よろしくお願いします。

補足日時:2006/11/01 13:26
    • good
    • 1

(・∀・)ドモ



そのようなものが見当たらないため、サポート外と思われます。

よって、
自分で入れるしかないです!


なお
プログラムを使用すれば、出来ないことは無いと思いますが。

プログラム未経験者は厳しいですが。

では、頑張ってください!
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセル プルダウンの作り方

お世話になります。
エクセルでプルダウンの作り方を教えていただけませんでしょうか?
住所を▼のボタンでクリックしたら【北海道,青森,秋田,岩手・・・】などの選択ができるようにしたいのです。
宜しくお願いします。

Aベストアンサー

メニューから「データ」、「入力規則」、「設定」で「入力値の種類」を「リスト」を選択します。
そうすると「元の値」という表示がでますので、そこで前もって作っておいたリストの範囲を指定します。
多くないのでしたら、そのままそこにカンマで区切って入力しても出来ます。

Qマクロの入ったシートをコピーしたいのですが参照シート名が変わるので困っています

こんにちは
作成中のファイルが大体完成!と喜んでいたら以下の部分で躓いてしまいました。。。
フォーマットのシート(シート名:フォーマット)が出来たので
このシート名を取引先名に変えて増やしていこうと思ったのですが
フォーマットを参照したコード?がたくさん入っており
増えるたびにこれを一々書き換えるのが大変なことに気がつきました

With Worksheets("フォーマット")←問題のコードです

この部分をどのように変更すればコピーしたときも
コードを書き換えなくて済むようになるでしょうか?

分かり難い文章で申し訳ございませんが
ご教授のほどよろしくお願いいたしますm(_ _;)m

Aベストアンサー

#3です。

ではこれではいかがでしょう?
食材情報管理シートをアクティブにするのをやめました。

Sub test02()

Dim sn As String
With ActiveSheet
.Range("A5:I304").ClearContents '入力画面の抽出一覧をクリア
sn = .Name 'シート名をsnに代入
Sheets("食材情報管理シート").Range("C2").FormulaR1C1 = "=" & sn & "!R[-1]C[8]"
Sheets("食材情報管理シート").Range("A4:I303").Copy
.Range("A6").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
End With
Application.CutCopyMode = False

End Sub

Qエクセルでプルダウンメニューの作り方

  エクセルの画面で、よく三角形を逆さまにした形をクリックするといくつかメニューが出てき、どれかを選べるようになっていますが、その作り方を教えてください。
 会社で人事を担当していますが、三角形(プルダウンボタン)をクリックすると社員氏名一覧が表示され、そこから選択できるようにしたいのです。
 しばらく自力でいろいろやってみましたが、さっぱり見当がつかず、どうやればいいのか分かりませんでした。よろしくお願いします。

Aベストアンサー

こんばんは!
当方使用のExcel2003での一例です!

↓の画像のようにSheet2に名簿表を作成しておきます。
画像ではSheet2のA2セル以降を範囲指定 → 名前ボックスに仮に「名簿」と入力しOK
これで範囲指定したセルが「名簿」と名前定義されましたので、

Sheet1のリスト表示させたいセルを範囲指定 → メニュー → データ → 入力規則
→ リスト → 「元の値」の欄に
=名簿
としてOK

これでSheet1のセルをアクティブにすると右側に下向き▼が表示されますので、そこをクリック!
これで希望に近い形にならないでしょうか?
Excel2007の場合は↓のURLが参考になるかもしれません。

http://www.eurus.dti.ne.jp/~yoneyama/Excel2007/excel2007-ny_kis2.html

尚、同一Sheetに「名簿表」を作成する場合は名前定義する必要はなくて
「元の値」の右側の四角をクリックし、リスト表示したいセルをそのまま範囲指定すればOKです。

以上、お役に立てば良いのですが・・・m(_ _)m

こんばんは!
当方使用のExcel2003での一例です!

↓の画像のようにSheet2に名簿表を作成しておきます。
画像ではSheet2のA2セル以降を範囲指定 → 名前ボックスに仮に「名簿」と入力しOK
これで範囲指定したセルが「名簿」と名前定義されましたので、

Sheet1のリスト表示させたいセルを範囲指定 → メニュー → データ → 入力規則
→ リスト → 「元の値」の欄に
=名簿
としてOK

これでSheet1のセルをアクティブにすると右側に下向き▼が表示されますので、そこをクリック!
これで希望に近い形にならない...続きを読む

Qエクセル複数シートへ参照。シート移動で参照セル移動

エクセル(2007または2010)で,複数シート(テンプレートは同じ)が同一シートを参照するようにしたいです。その際,シートが1つ後ろへ(タブが1つ右へ)移るたびに,参照元シート上の参照セルを1つ下の行へずらすようにしたいです。

複数(40枚)の個票を作るために,入力用のシートを作成して個票となる複数のシートが入力用シートを参照するようにしたいのです。

個票用のシートにある十数カ所の数式を手で修正しよう(十数カ所×40枚=数百カ所!!)としていますが,いい方法はないでしょうか。
ご存じの方がいらっしゃいましたら,お知恵をお借りしたいです。よろしくお願いいたします。

Aベストアンサー

>シートが1つ後ろへ(タブが1つ右へ)移るたびに,参照元シート上の参照セルを1つ下の行へずらす

原則としてエクセルには、自分がシート並びのどこにいるのかとか、そういう事を見る機能はありません。

●簡単な作成方法1
シート名に「Sheet1」「Sheet2」「Sheet3」と言った具合に番号を振っておいて、その番号で「何番目」のデータを持ってこさせる

●簡単な作成方法2
「目次シート」を用意、シートの名称、あるいは各シートに固有の記入内容(たとえば番号や名前といった)の一覧を用意、その隣に欲しいデータや欲しいデータの番号を列記しておいてVLOOKUP等で取ってこさせる



○マクロを使った方法

古いマクロを使う方法を1つご紹介しておきます。

手順:
数式タブの名前の定義▼を開始
 名前 SheetIndex
 参照範囲 =GET.DOCUMENT(87)
と記入し、登録する

#参考
任意のシートに
=sheetindex
と記入すると、自分が今何枚目にいるのか出てくる


それぞれのシートで、具体的にどこから何を持ってきたいのかさっぱり情報がありません。
具体的な数式の書き方とか説明できませんので、下記をテキトーに応用してください。

「目次」シートのA列を上から順に取ってきたい:
=INDEX(目次!A:A,sheetindex)

>シートが1つ後ろへ(タブが1つ右へ)移るたびに,参照元シート上の参照セルを1つ下の行へずらす

原則としてエクセルには、自分がシート並びのどこにいるのかとか、そういう事を見る機能はありません。

●簡単な作成方法1
シート名に「Sheet1」「Sheet2」「Sheet3」と言った具合に番号を振っておいて、その番号で「何番目」のデータを持ってこさせる

●簡単な作成方法2
「目次シート」を用意、シートの名称、あるいは各シートに固有の記入内容(たとえば番号や名前といった)の一覧を用意、その隣に欲しいデー...続きを読む

Qエクセル(Excel) 納品書の作り方【画像修正版

昨日http://oshiete.goo.ne.jp/qa/7348426.htmlで質問させていただき、詳しくご回答いただき少し進んだのですが、状況が変わったので改めて質問させていただきます。

■エクセル(Excel)で納品書の作成をしています。
シート1に納品書、シート2に商品マスタ(一覧)を作っていて、シート2の一覧を反映させて
納品書に番号を打ち込むだけで、商品名・単価までが出るシステムを作りたいのですが、
昨日のご回答の中の「VLOOKUP」?を入れて、自分なりにマス目の数字を変えてやってみたのですが
反映されずN/?のようなエラーになってしまいます。

※画像が見にくかったのでシート<CENTER></CENTER>だけにしました。

1、上記のように、シート2との関連付けの係数を、写真の場合の数字で教えてください。

2、合計と、合計から20%を引いた数値を割り出す関数も、写真の数字で御願いします。

宜しくご教授お願い致します。

Aベストアンサー

こんばんは!
前回投稿した者です。

当方もかなり古い(人間も古い!なぁ~んちゃって!)Excel2003を使用しています。
↓の画像のようにSheet2にデータを作成しておきます。

#N/A というエラーは、「検索値」がない!ということですので
お示しの画像のB列にSheet2のA列にないデータを入力するとそういったエラーが表示されます。

画像のセル配置ですと
C4セルに
=IF($B4="","",VLOOKUP($B4,Sheet2!$A:$C,COLUMN(B1),0))
(「$」マークの位置に気を付けてください)
という数式を入れD4セルまでオートフィルでコピー!
そのまま最後の24行目までコピーしておきます。

F4セルには
=IF(COUNTBLANK(B4:E4),"",D4*E4)
という数式を入れ、F24までオートフィルでコピー!

これでB列に商品番号を入力すればSheet2のデータが反映され、
E列に数量を入力でF列に金額が表示されると思います。

最後に合計金額のF26セルは
=IF(COUNT(F4:F24),SUM(F4:F24),"")
手数料のF27セルは
=IF(F26="","",F26*0.2)

これで何とか形にならないでしょうか?

※ 振込金額の欄は不明ですので手を付けていません。

参考になりますかね?m(_ _)m

こんばんは!
前回投稿した者です。

当方もかなり古い(人間も古い!なぁ~んちゃって!)Excel2003を使用しています。
↓の画像のようにSheet2にデータを作成しておきます。

#N/A というエラーは、「検索値」がない!ということですので
お示しの画像のB列にSheet2のA列にないデータを入力するとそういったエラーが表示されます。

画像のセル配置ですと
C4セルに
=IF($B4="","",VLOOKUP($B4,Sheet2!$A:$C,COLUMN(B1),0))
(「$」マークの位置に気を付けてください)
という数式を入れD4セルまでオートフィルで...続きを読む

Qexcel マクロ 最終シートの後ろにシートを作成するには

行いたいのは次の通りです。

・全シート数は常に可変。
・とあるシートをそのまま、現在作成されているシートの一番後ろに作成。
構文的には
Sheets("Sheet1").Select
Sheets("Sheet1").Copy After:=Sheets(3)

ここの(3)を、変数にして、全シート数を代入してあげればうまくいきそうなのですが、全シート数を取得するコマンド等分からず行き詰っています。

何か、やり方を御存知の方がいらっしゃいましたら御教示ください。

Aベストアンサー

ANo.1の者です。
ANo.2さんが資格の本を紹介されましたが、
私は一般書籍をお勧めします。
「ExcelVBAハンドブック」をお勧めします

参考URL:http://www.e-hon.ne.jp/bec/SA/Detail?refShinCode=0100000000000030908034&Action_id=121&Sza_id=F4

Qエクセル(Excel) 納品書の作り方【改めて】

昨日http://oshiete.goo.ne.jp/qa/7348426.htmlで質問させていただき、詳しくご回答いただき少し進んだのですが、状況が変わったので改めて質問させていただきます。

■エクセル(Excel)で納品書の作成をしています。
シート1に納品書、シート2に商品マスタ(一覧)を作っていて、シート2の一覧を反映させて
納品書に番号を打ち込むだけで、商品名・単価までが出るシステムを作りたいのですが、
昨日のご回答の中の「VLOOKUP」?を入れて、自分なりにマス目の数字を変えてやってみたのですが
反映されずN/?のようなエラーになってしまいます。

※画像が貼り付けてあります。商品名は1番以外伏せさせていただいています。
くっつけてありますが、左側がシート1・右側がシート2です。

1、上記のように、シート2との関連付けの係数を、写真の場合の数字で教えてください。

2、合計と、合計から20%を引いた数値を割り出す関数も、写真の数字で御願いします。

宜しくご教授お願い致します。

Aベストアンサー

画像がいまいちよく見えないのですが、納品書の項目は左から、No、商品番号、商品名、単価、数量、金額でいいのでしょうか(名前は多少違っていても意味があっていればもんだいないです)

でしたら、
C1セルに=IF(ISBLANK(B2),"",VLOOKUP(B2,Sheet2!$A$2:$C$200,2,FALSE))
D1セルに=IF(ISBLANK(B2),"",VLOOKUP(B2,Sheet2!$A$2:$C$200,3,FALSE))
E1セルは空白で
F1セルに=IF(D2="","",D2*E2)
といれて、C1からF1までをコピーしてその下の行にタテに貼り付ければ出来ますよ。
おそらくエラーが出たのは、コピーしたときにVLOOKUP関数の最初のセルの指定がずれてしまっているのでは無いかと思いますよ。     

QEXCELマクロでシート作成&シート名をつける方法

EXCELでセルK列に入力した名称でシートをどんどん作成したいのですが、
下記のようにやってみましたが、うまく実行されません。
2回目の←の部分で、終わってしまいます。
詳しい方、教えてください。

Sub Macro3()

Dim neSheet As String
Dim fMax As Integer
Dim num As Integer
Dim i As Integer

fMax = Range("B2").Value
num = 2

For i = 1 To fMax

neSheet = Range("k" & num).Value
Worksheets.Add(After:=Worksheets(1)).Name = neSheet ←
num = num + 1

Next i
End Sub

Aベストアンサー

ワークシートを追加すると、アクティブシートが
変わってしまいます。
neSheet = Range("k" & num).Value
↑こういう記述をワークシートオブジェクトからきちんと
記述してください。


Sub Macro3()
  Dim neSheet As String
  Dim fMax As Integer
  Dim i As Integer
  Dim sht As Worksheet
  Set sht = Worksheets(1)
  fMax = sht.Range("B2").Value
  For i = 1 To fMax
    neSheet = sht.Range("k" & (i + 1)).Value
    Worksheets.Add(After:=Worksheets(1)).Name = neSheet
    Next i
End Sub
↑このコードは、作成するシート情報
(セルB2作成シート数とK列のシート名)は最右端シートに
設定されいるものとします。

ワークシートを追加すると、アクティブシートが
変わってしまいます。
neSheet = Range("k" & num).Value
↑こういう記述をワークシートオブジェクトからきちんと
記述してください。


Sub Macro3()
  Dim neSheet As String
  Dim fMax As Integer
  Dim i As Integer
  Dim sht As Worksheet
  Set sht = Worksheets(1)
  fMax = sht.Range("B2").Value
  For i = 1 To fMax
    neSheet = sht.Range("k" & (i + 1)).Value
    Worksheets.Add(After:=Worksheets(1)).Nam...続きを読む

Qエクセル2007でプルダウンで選んだものに反応

Excel2007でプルダウンで選んだものに反応して隣のセルが自動入力される方法(エクセル2007)
A1をプルダウンで「猫」「犬」から選べるようにし、「猫」を選んだ場合B1に自動に「111」が、「犬」を選んだ場合B1に自動に「222」と入力されるようにしたいです。
ご教授の程、宜しくお願いします。

Aベストアンサー

VLOOKUP関数での方法です。
(1)別シートに入力文字列と対応コード表を作成。(仮にSheet2のA:B列範囲で順不同)
(2)B1に=IF(COUNTIF(Sheet2!A:A,A1),VLOOKUP(A1,Sheet2!A:B,2FALSE),"")を設定
   入力文字列が存在しない場合は空白としています。

Qマクロでの値貼り付けと参照シートの変更について

Sheet1にあるデータから、
Sheet2のA2:A3にある抽出条件に一致するデータを、
Sheet2のB5に貼りつけるというマクロを作成しました。

【質問①】
貼りつけ自体は上手くいくのですが、
全て貼り付けになるらしく、Sheet1の書式まで貼りつけされてしまいます。
値のみ貼り付けをしたいのですが、どうしたらよろしいでしょうか。

【質問②】
データがあるシートは月ごとに分かれていて、Sheet1~Sheet12まであります。
そこで、Sheets2のA1に参照したいシートの名前を入力したら、
そのシートから参照・データの貼り付けが出来るマクロを作成したいのですが、
どのようにしたらよろしいでしょうか。

質問①か②のどちらかでもかまいませんので、どなたか教えて頂けないでしょうか。
よろしくお願いします。

【マクロ】

Sub Macro1()
Dim myRow1 As Long, myRow2 As Long
myRow1 = Sheets("Sheet1").Range("B" & Rows.Count).End(xlUp).Row
myRow2 = Sheets("Sheet2").Range("B" & Rows.Count).End(xlUp).Row
If myRow2 >= 5 Then
Sheets("Sheet2").Range("B5:m" & myRow2).ClearContents
End If
Sheets("Sheet1").Range("b2:m" & myRow1).AdvancedFilter _
Action:=xlFilterCopy, _
CriteriaRange:=Sheets("Sheet2").Range("A2:A3"), _
CopyToRange:=Sheets("Sheet2").Range("B5"), _
Unique:=False
End Sub

Sheet1にあるデータから、
Sheet2のA2:A3にある抽出条件に一致するデータを、
Sheet2のB5に貼りつけるというマクロを作成しました。

【質問①】
貼りつけ自体は上手くいくのですが、
全て貼り付けになるらしく、Sheet1の書式まで貼りつけされてしまいます。
値のみ貼り付けをしたいのですが、どうしたらよろしいでしょうか。

【質問②】
データがあるシートは月ごとに分かれていて、Sheet1~Sheet12まであります。
そこで、Sheets2のA1に参照したいシートの名前を入力したら、
そのシートから参照・デ...続きを読む

Aベストアンサー

こんばんは。
ちょっと体調を崩しまして、こちらのアクセスするのが遅くなってすみません。

>元データ → B列~M列まであり、空欄・重複なしで100行までデータあり
それから、私は、位置関係を間違えていたようですね。細かく指定している分だけ、簡単には出てこないようです。これでは、出るはずはありませんね。全体を一行、一列ずらしました。

>元データ・F2にある「日付」という項目 → Sheet2のA2で選択、
>元データ・F3~にある日付 → Sheet2のA3で選択

日付だとは思っていませんでしたが、たぶん、大丈夫なはずです。

とりあえず、そっくり以下を入れ替えてみてください。
うまくいかない場合は、'確認用**のコメントブロックを外して、どこを検索しているか見てください。

それから、
 DbField.Copy .Range("B5")  '誤作動がなければ、なくても可***
ふつうは要らないはずですが、時々、誤作動するので、入れています。

添付画像で、このようなイメージで作られていることを、ご確認ください。
画像は小さくても、レイアウトや位置関係はわかるかと思います。

'//
Sub MacroSample1()
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim shName As String
Dim DB As Range
Dim DbField As Variant
Dim Crit As Range
Dim w As Long
'
''-----ユーザー設定-----
w = 12 'データ列 '既定のデータ列数(B-M列まで)
Set sh2 = Worksheets("Sheet2") '起動シート
''----------------------
''エラーチェック
 shName = sh2.Range("A1").Value
 If shName = "" Then
  MsgBox "A1にシート名がありません。", vbExclamation
  Exit Sub
 End If
 On Error Resume Next
 Set sh1 = Worksheets(shName) '検索対象シート
 If Err.Number <> 0 Then
  MsgBox shName & "は見つかりません。", vbExclamation
  Exit Sub
 End If
 If StrComp(sh2.Name, shName, 1) = 0 Then
   MsgBox "シート名が不正です", vbExclamation
   Exit Sub
 End If
 With sh2
 If .Range("B2", .Cells(Rows.Count, 2).End(xlUp)).Rows.Count < 3 Then
  MsgBox "データとして不足しています。", vbExclamation '※※※
  Exit Sub
 End If
 End With
 On Error GoTo 0
''-------エラーチェックの終わり---------
 With sh1
  Set DB = .Range("B2", .Cells(Rows.Count, 2).End(xlUp)).Resize(, w)
  Set DbField = .Range("B2:M2")
  'MsgBox DB.Address(, , , True) '確認用**
 End With
 
 With sh2
  '一旦データを消す
  .Range("B5", .Cells(Rows.Count, 2).End(xlUp)).Resize(, w).ClearContents
  'クライテリアの設定
  Set Crit = .Range("A2", .Cells(Rows.Count, 1).End(xlUp))
  'フィールド名のコピー※
  DbField.Copy .Range("B5")  '誤作動がなければ、なくても可***
 
  'アドバンスフィルターの実行
  DB.AdvancedFilter _
  Action:=xlFilterCopy, _
  CriteriaRange:=Crit, _
  CopyToRange:=.Range("B5").Resize(, w), _
  Unique:=False
 End With
End Sub
'///

添付画像は、他の質問の表を加工して、今回に合わせましたが、日付は、昨年の4月になっているのは、無視してください。

こんばんは。
ちょっと体調を崩しまして、こちらのアクセスするのが遅くなってすみません。

>元データ → B列~M列まであり、空欄・重複なしで100行までデータあり
それから、私は、位置関係を間違えていたようですね。細かく指定している分だけ、簡単には出てこないようです。これでは、出るはずはありませんね。全体を一行、一列ずらしました。

>元データ・F2にある「日付」という項目 → Sheet2のA2で選択、
>元データ・F3~にある日付 → Sheet2のA3で選択

日付だとは思っていませんでしたが、...続きを読む


人気Q&Aランキング

おすすめ情報