マクロの保存先を「開いているすべてのブック」にして、
A2~A32をいったん削除した後で、
1月1日から、1月31日を入力して、
最後にA2をアクティブセルにしておく、というマクロを作りました。

1/1と入力すると、普通、1月1日と表示されますよね?

同一ブック、同一シートないでしたら、そのように表示されるのですが、
同一ブック、別シートあるいは、
別ブックで、このマクロを実行すると、
2001/1/1と表示されます。

あとで、セルの表示形式を変えればいいんでしょうが、
この原因が、なぜ、そうなるのかが知りたいです。
(まだ、そのシート内以外だと、マクロが設定できない、
とかの方がわかるんですが。)

また、
同一シートでなくても、
1月1日~1月31日の表示形式のままで、
設定できるマクロがあったら、あわせて教えてください。

作成しているファイルの、
バージョンは、Excel2002ですが、
マクロは、2000と変わらないと思うんですが・・・。
よろしくお願いいたします。

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

A 回答 (3件)

確かに


同一ブック、別シートあるいは、
別ブックで、このマクロを実行すると、
2001/1/1と表示されますね。

同一ブック、別シートあるいは、別ブックで、
1月1日~1月31日の表示形式にするには、
1月1日~1月31日の表示形式をマクロに意識させる設定が
必要なようです。

その手順は以下のようにします。

マクロの記録中で
1/1と入力し、1月1日と表示された後、

(1) A2セルを右クリックして、セルの書式設定をクリック
(2) セルの書式設定ダイアログボックスの右方の「種類」窓の中が
  1月1日になっているのを、一旦、他の表示をクリックします。
    例えば、2000/1/1をクリック
(3) 次に、再び1月1日をクリック。
(4) 下方の「OK]をクリック。

以上の手順を挿入すれば、良いはずです。
セルA3以降はA2をドラッグしますよね。
  
    • good
    • 0
この回答へのお礼

回答をありがとうございます。

あ、そうか。
マクロだから、表示形式も命令しなおしてあげないといけなかったんですね。
回答をみて、「なるほど」と思いました。

無事にできました。
また何かありましたら、よろしくお願いいたします。

お礼日時:2001/07/30 21:03

参考に作ってみました。



作られたマクロは、個人用マクロブックPERSONAL.XLS に有ると思いますので、その標準モジュールに貼り付けてみて下さい。
月を入力すれば、その月の1日から月末まで『1月1日』の形式で表示します。

Sub 一ヶ月を表示()
  '月の入力
  Dim Tuki As Integer '表示する月
  Dim TukiNissu As Integer '入力月の月日数
  Tuki = Val(InputBox("月を入力して下さい。"))
    If Not (1 <= Tuki And Tuki <= 12) Then
      MsgBox "エラー!!": Exit Sub
    End If

  '初期化する
  Range("A2:A32").ClearContents

  '1日をセットする
  Range("A2").NumberFormatLocal = "m""月""d""日"""
  Range("A2") = Tuki & "/1"

  '月日数を求める(翌月1日の前日日付け))
  TukiNissu = Day(DateSerial(Year(Range("A2")), Tuki + 1, 0))

  '1ヶ月分表示する
  Range("A2").Select
  Selection.AutoFill Destination:=Range("A2:A" & (TukiNissu + 1)), Type:=xlFillDefault

  'A2を選択状態にする
  Range("A2").Select
End Sub
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
一回マクロを全部削除してからやりなおしたので、
残ってないのか、残っているのに、
私の探し方が悪いのか、
元データを紛失いたしました。

でも、前お二人の回答で、思い通りのマクロを作ることができ、
なおかつ、nishi6さんの、VBAのコードで、
大体の意味をつかむことができました。

三人のみなさんの回答を総合して、無事、解決することができました。

nishi6さんには大変申し訳ないのですが、
甲乙つけがたいので、
ポイントは、先着順につけさせていただきますね。

明日になってから締め切りさせていただきます。
本当にみなさん、ありがとうございました。

お礼日時:2001/07/30 21:11

日付の表示形式が"2001/1/1"となってしまうのは、Excelが日付表示をする際の標準的な表示形式としてその形式を採っているためです。



従って、A2~A32をいったん削除したといっても、"Delete"キーで削除しただけであれば"1月1日"の形式で表示するという「書式設定」が残っています。

ですので、マクロを作成する際に「セルの書式設定」→「表示形式」で"1月1日"の形式になるようなマクロを組んでやれば、新規ブックでも任意の表示形式を再現できると思います。
    • good
    • 0
この回答へのお礼

どうもありがとうございました。

>従って、A2~A32をいったん削除したといっても、"Delete"キーで削除しただけであれば"1月1日"の形式で表示するという「書式設定」が残っています。

この部分で、「げっ。忘れてた。」と思いました。
そうですよね。
Deleteキーだけだと、データしか削除されないんですよね。
念のため、書式も含めた削除に変更したマクロに作り直しました。
本当に助かりました。

お礼日時:2001/07/30 21:05

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

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

Q例えば、8月1日~8月31日の“~”中にある日(8月15日など)を抽出したいです!

エクセル2003を使っています。

一つのセルに、『8月1日~8月31日』などと入力しています。
オートフィルターを設定しておいて、オプションの中で、例えば“8月15日/を含む”にした場合に、
先程の『8月1日~8月31日』の行が表示されるようにしたいです。
オートフィルターでできますか?オートフィルターでできないなら、どのようにすればできるでしょうか?

どうぞよろしくお願いします。

Aベストアンサー

#3です。

>切り出した後に、B2からC2間に含まれる日付を検索できるやり方はありますか?
>もちろんオートフィルターは使えないと思いますが・・・。

前の回答に書いていますが(#2さんも書いていらっしゃいますが)、開始日と終了日の隣のセルに求める日付が含まれているかどうかを判別する式を立てて、その列でオートフィルタをかける方法ではいけませんか。

#3で書いたことをもう少し詳しく書くと、
1)ワークシート上(例えばD1)に基準となる日付の入力欄を作る。
2)D2に=IF(AND(B2<=D$1,C2>=D$1),"○","")と入力して、以下適当な範囲まで(例えばD30まで)コピー。

以上で、D1に入力した日付に応じて、それが開始日と終了日の間に含まれる場合に○印が入るようになります。あとは、

3)D1:D30を範囲選択して、データ→フィルタ→オートフィルタ。

とすると、もしD2:D30の範囲に○印があれば、ドロップダウンリストの中に「○」と出てきますので、それを選択すると○印がある列だけが抽出されると思います。

もしおっしゃっていることを取り違えているようでしたら申し訳ありません。

#3です。

>切り出した後に、B2からC2間に含まれる日付を検索できるやり方はありますか?
>もちろんオートフィルターは使えないと思いますが・・・。

前の回答に書いていますが(#2さんも書いていらっしゃいますが)、開始日と終了日の隣のセルに求める日付が含まれているかどうかを判別する式を立てて、その列でオートフィルタをかける方法ではいけませんか。

#3で書いたことをもう少し詳しく書くと、
1)ワークシート上(例えばD1)に基準となる日付の入力欄を作る。
2)D2に=IF(AND(B2<=D$1...続きを読む

QEXCEL(できればマクロ)で同一フォーマットのシートを31日分簡単に作成する方法は?

お世話になります。
前回、QNo.1647957にて質問した者です。

その内容は、
「sheet1を1日、sheet2を2日とします。
2日のB1に入力した数値が、1日のA1にも入力され(飛び)、
3日以降も前日のA1に入力されるように、
sheet1のひながたで、31日分作成したいのです。」
と、いうものでした。

3件も回答していただおかげで、無事日誌を作成することができました。
助かりました。

そこで今回の質問なのですが、
前回教えていただいたマクロとは逆に、
1日のA1に入力した数値が、2日のB1にも入力され(飛び)、
2日以降も次の日のB1に入力されるように、
sheet1のひながたで、31日分作成したいのです。
マクロを教えてください。(関数でもかまいません)

どうかよろしくお願いします。

Aベストアンサー

こんばんは。

詳しい状況が変われば、またコードも変わるかもしれません。例えば、このマクロが、それぞれのシートが同じような動作をする場合は、登録するモジュールの場所とコードが少し替わります。

単にA1だけではないような気がしますが、とりあえず、A1だけにします。

'<これは、Sheet1のモジュールで他に入れられません。>

Private Sub Worksheet_Change(ByVal Target As Range)
'その範囲がA1だけでしたら、Rangeの中は、A1だけにします。
If Not Intersect(Target, Range("A1")) Is Nothing Then
 For i = 2 To 30
  'それぞれのシートの入力したセルの右隣に入力する
  Worksheets(i).Range(Target.Offset(, 1).Address(0, 0)).Value = Target.Value
 Next i
End If
End Sub


Sheet1 から、Sheet31 まで、順に並んでいるとします。
もし、そうでない場合は、Worksheets("Sheet1"&i).Range... となります。

次に、入力先は、A1 の場合は、B1となる、つまり、右となりのセルを考えられています。
ですから、入力範囲が、Range("A1:A30") でしたら、A2は、B2 になり、A3 は、B3... というようになっていきます。

Sheet1 のA1 に何か入力してみて、他のシートがどうなっているか試してみてください。

こんばんは。

詳しい状況が変われば、またコードも変わるかもしれません。例えば、このマクロが、それぞれのシートが同じような動作をする場合は、登録するモジュールの場所とコードが少し替わります。

単にA1だけではないような気がしますが、とりあえず、A1だけにします。

'<これは、Sheet1のモジュールで他に入れられません。>

Private Sub Worksheet_Change(ByVal Target As Range)
'その範囲がA1だけでしたら、Rangeの中は、A1だけにします。
If Not Intersect(Target, Range("A1")) Is Nothin...続きを読む

Q31日分(同一フォーマット)のシートのマクロについて

こんばんは。
いつもお世話になっています。
QNo.1647957とQNo.1655370で質問した者です。

今回も似たような質問で応用力に掛け、お恥ずかしいのですが、
よろしくお願いします。

内容は、あらかじめ作成しておいた
同一フォーマットの1日から31日分までのシートがあります。
2日のB1に数値を打ち込むと1日のA1にも同数値が表示され、
3日のB1に数値を打ち込むと2日のA1に、という流れで、
作成したいのです。

このように、数字が飛ぶ?(表現が見つかりません)マクロを教えてください。
回答者の方が、関数を貼り付ける方が簡単であると判断された場合は、関数でも結構です。

どうかよろしくお願いします!

Aベストアンサー

こんばんは。

もう、これは、一旦どこかで整理し統一したほうがよいと違いますか?

内容的には、No.1647957のマクロ編ということになりますね。(前回は、数式を入れるマクロでした。)No.1655370裏返しのマクロということでしょう。

これで出来ると思います。同じ書き込みで恐縮しますが、例のとおりで、シートは順に並んでいるものとします。また、コードの貼り付け場所は注意してください。


'<ThisWorkbook 側のみ>
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Sh.Index = 1 Then Exit Sub
If Target.Column = 1 Then Exit Sub
 Sh.Previous.Range(Target.Address(0, 0)).Offset(, -1).Value = Target.Value
End Sub

Q【質問】ブック名AからシートをブックBへ移動する時、ブックAにシートを残してブックBにもコピーするには?

こんにちは、みなさん!!

【質問】ブックAのシートを、ブックBに移動する時に、ブックAにも
同シートを残しておき、さらに、ブックBに同シートを移動する事は
できますか?ドラック&ドロップでは、ブックAにシートはなくなり、
完全に、ブックBに移動されてしまいます。

ご存知の方いらっしゃいましたらよろしくお願いします。

Aベストアンサー

はじめまして

ブックAの該当シートタブを右クリック、移動またはコピーを選択、移動先ブックをブックBに、コピーを作成するにチェックを入れてOK。
これでいけます。

また、ドラッグアンドドロップでするなら、「CTRL」キーを押しながらやってみてください。
移動ではなくコピーになります。

的外れでしたらごめんなさい。

Qエクセル 同一形式の複数シートのデータを別のシートに一覧で自動的に表示したい

エクセル2013を使用しています。
1シーズン毎にデータの集計を行っております。
その中で、入力された同一形式の複数シートのデータを
同じブック内の別のシートに一覧で自動的に表示したいです。
シートの数は毎回不確定数となっております。
よろしくお願いします。

例)【Sheet1】 名前  年齢  所属  契約  
        一郎   10   1   11
  
  【Sheet2】 名前  年齢  所属  契約 
        二郎   20    2   22

  【Sheet3】 名前  年齢  所属  契約 
        三郎   30    3   33
     ・
     ・
     ・

  【一覧シート】名前  年齢  所属  契約 
        一郎   10   1   11 
        二郎   20    2   22
        三郎   30    3   33
         ・   ・    ・   ・
         ・   ・    ・   ・
         ・   ・    ・   ・

エクセル2013を使用しています。
1シーズン毎にデータの集計を行っております。
その中で、入力された同一形式の複数シートのデータを
同じブック内の別のシートに一覧で自動的に表示したいです。
シートの数は毎回不確定数となっております。
よろしくお願いします。

例)【Sheet1】 名前  年齢  所属  契約  
        一郎   10   1   11
  
  【Sheet2】 名前  年齢  所属  契約 
        二郎   20    2   22

  【She...続きを読む

Aベストアンサー

こんな事でしょうか?

Sub Sample1()

Dim シート番号 As Long
Dim 次行 As Long

Sheets(1).Select
Cells.Select
Application.CutCopyMode = False
Selection.Copy
Sheets("一覧シート").Select
Range("A1").Select
ActiveSheet.Paste
次行 = Cells(Rows.Count, 1).End(xlUp).Row + 1

For シート番号 = 2 To Worksheets.Count
If Sheets(シート番号).Name <> "一覧シート" Then
If Sheets(シート番号).Cells(Rows.Count, 1).End(xlUp).Row >= 2 Then
Sheets(シート番号).Select
Range(Cells(2, 1), Cells(Cells(Rows.Count, 1).End(xlUp).Row, Columns.Count)).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("一覧シート").Select
Cells(次行, 1).Select
ActiveSheet.Paste
次行 = Cells(Rows.Count, 1).End(xlUp).Row + 1
End If
End If
Next

End Sub

なお、すべてのシートが同じレイアウトであり、一覧シートが1つ目でない事が条件になります。

こんな事でしょうか?

Sub Sample1()

Dim シート番号 As Long
Dim 次行 As Long

Sheets(1).Select
Cells.Select
Application.CutCopyMode = False
Selection.Copy
Sheets("一覧シート").Select
Range("A1").Select
ActiveSheet.Paste
次行 = Cells(Rows.Count, 1).End(xlUp).Row + 1

For シート番号 = 2 To Worksheets.Count
If Sheets(シート番号).Name <> "一覧シート" Then
If Sheets(シート番号).Cells(Rows.Count, 1).End(xlUp).Row >= 2 Then
Sheets(シート番号)...続きを読む


人気Q&Aランキング

おすすめ情報