- ベストアンサー
エクセルマクロを教えてください
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
#01です。 >1枚目シートのC8セルに日付を入れると12枚のシート名が一括で変更できるようにする それではSheetモジュールに直下のマクロを貼り付けます。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$C$8" Then If IsDate(Target.Value) Then Call Macro1 End If End If End Sub そして標準モジュールシートに以下のマクロを貼り付けます。 Sub Macro1() Dim sh As Worksheet On Error Resume Next For Each sh In Worksheets If IsDate(sh.Range("C8").Value) Then sh.Name = Format(sh.Range("C8").Value, "YY-MM") End If Next sh End Sub 最初のシートのC8セルに日付が入力されたら、「全シートの名前変更」を行うMacro1をコールするようにしました。(#01のMacro1には誤りがあったので、今回の回答を貼り付けてください)
その他の回答 (3)
- merlionXX
- ベストアンサー率48% (1930/4007)
> For~Next処理などを組込んで、1枚目シートのC8セルに日付を入れると12枚のシート名が一括で変更できるようにすることはできますでしょうか? シートの「C3」セルですよね? こんな感じでしょうか。 Sheet1のシートモジュールをこう変えてみてください。 Private Sub Worksheet_Change(ByVal Target As Range) Dim i As Integer If Target.Address = "$C$3" Then If IsDate(Target.Value) Then For Each st In Worksheets st.Name = "@" & i i = i + 1 Next For Each st In Worksheets st.Name = Format(st.Range("C3").Value, "yy-mm") Next End If End If End Sub For Nextを二度やってるのは同名のシート名のエラーを防止するためです。
お礼
merlionXXさん、ご回答ありがとうございました。VBA初心者のため、コードの組み立てがいまいちつかめませんでした。回答が遅れましたことをお詫びします。
どういうマクロで、どのようにうまくいかないのかを書いて いただかないと、アドバイスも難しいと思いますよ。
- zap35
- ベストアンサー率44% (1383/3079)
元になるシートの「シート名タブ右クリック」→「コードの表示」で開く画面に以下のマクロを貼り付けます。 シート画面に戻ってC8セルに日付を入力してみてください Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$C$8" Then If IsDate(Target.Value) Then ActiveSheet.Name = Format(Target.Value, "YY-MM") End If End If End Sub もし日付を入力したタイミングでシート名を変更するのではなく、後から全シート一括で変更するなら以下のマクロをALT+F11でVBE画面を開き、左上のVBA Projectでシート名を右クリックし「挿入」→「標準モジュール」で表示される画面に貼り付けて下さい。マクロの実行はワークシート画面に戻ってALT+F8でマクロ一覧を開き、マクロ名を選択して「実行」ボタンです。 Sub Macro1() Dim sh As Worksheet On Error Resume Next For Each sh In Worksheets If IsDate(sh.Range("C8").Value) Then ActiveSheet.Name = Format(sh.Range("C8").Value, "YY-MM") End If Next sh End Sub 複数のシートに同じ年月が入力されている場合は、シート名が重複するので最初のシートにのみ変更する仕様です。
補足
早々にご回答をいただきましてありがとうございます。最初に記述されたコードをSheet1に貼付けて日付を入力したところ、シート名の希望型式での変更ができました。 2枚目以降のシートの同セル(C8)には数式で「=EDATE('08-01'!C8,1)」・・・「=EDATE('08-01'!C8,11)」を入れてあるので、見出しの月日表示も一括で変更となるのですが、2枚目以降のシート名は変更されません。 For~Next処理などを組込んで、1枚目シートのC8セルに日付を入れると12枚のシート名が一括で変更できるようにすることはできますでしょうか? 追加の質問で申訳ありません。
関連するQ&A
- エクセルマクロで日付検索について
エクセルのマクロで日付を検索するマクロについて質問です。 ブックAのシート1のA列に A1 2017/3/13 A2 2017/4/1 A3 2017/4/19 A4 2017/5/16 A5 2017/7/17 A6 2017/9/5 というような日付が入っています。 ブックBのシート1のA1セルに2017/6/3と入力してマクロを実行した際に その日付に一番近い一つ前の日付を探し、見つけた日付のB列のセルを ブックBのシート1のA2セルに表示したいです。 今回の例であれば2017/6/3に対してブックAのシート1のA列はA4セルが当てはまり その当てはまったA4セルの1つ横のB4セルの内容をブックBのシート1のA2セルに表示するということです。 よろしくお願いします。
- 締切済み
- Excel(エクセル)
- エクセル2003 マクロ シート名
エクセル2003です。 1つのブックにシートが10シート有ります。 R2のセルに日付を入れると それぞれのシート名が日付 (例)"11月25日"になるようなマクロを作りたいのですが、 教えてください。 又は逆にシート名に"11月25日"とすると R2セルが"11月25日"となるマクロを教えてください。 日付はシート毎に違います。 すみませんがよろしくおねがいします。
- ベストアンサー
- オフィス系ソフト
- マクロ(エクセルシートコピー先)に関して
分かりましたら教えてください。 A.xlsのシートBを、新しいブックにコピーし移動するときに、そのブック名が、常にそのシートBのセルC3に入力されている文字の名前にするようにマクロを組みました。(....Filename:Range("C3")としています。) さらにC.xlsのシートDもその新しいブックにコピー移動させるマクロを追加したいのですが、コピー先をどのように指定すればいいのでしょうか。。
- ベストアンサー
- オフィス系ソフト
- Excelのマクロについて
マクロの保存先を「開いているすべてのブック」にして、 A2~A32をいったん削除した後で、 1月1日から、1月31日を入力して、 最後にA2をアクティブセルにしておく、というマクロを作りました。 1/1と入力すると、普通、1月1日と表示されますよね? 同一ブック、同一シートないでしたら、そのように表示されるのですが、 同一ブック、別シートあるいは、 別ブックで、このマクロを実行すると、 2001/1/1と表示されます。 あとで、セルの表示形式を変えればいいんでしょうが、 この原因が、なぜ、そうなるのかが知りたいです。 (まだ、そのシート内以外だと、マクロが設定できない、 とかの方がわかるんですが。) また、 同一シートでなくても、 1月1日~1月31日の表示形式のままで、 設定できるマクロがあったら、あわせて教えてください。 作成しているファイルの、 バージョンは、Excel2002ですが、 マクロは、2000と変わらないと思うんですが・・・。 よろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- EXCEL VBA マクロ 日付
こんばんわ。 EXCEL VBA マクロ の日付について質問があります。 セル"A1"で"年"(例:2008)、セル"B1"で"月"(例:5)を指定します。 C1からC500くらいまで(毎日増えていきます)日付が入っています。 A1、B1で指定した年月と同じC列の日付を 10桁スラッシュ区切りの形式(例:2008/05/15)で 右隣のセル(D列)にコピーしたいんです。 困ったことにC列は形式が決まっているわけではありません。 たとえば、2008年5月15日の場合、 ・20080515・2008年5月15日・2008.05.15・2008.5.15 ・2008/05/15・2008/5/15・08/05/15・2008-5-15 その他、いろいろ考えられます。 これをマクロでやるにはどうすればいいでしょうか。 毎月一回実行します。 日付の形式をチェックするところで やり方がわからなくて困っています。 よろしくお願いします。
- 締切済み
- Visual Basic
- エクセルマクロ
入力したワークシートを 新しいブックにコピーして保存するマクロを作成しました。 ただ下記の様に保管すると、 数式もそのまま元のエクセルファイルの数式を参照してしまいます。 下記のマクロをあまり変更しないで、 値貼付け(もしくは値貼付けしながら、新しいブックへコピー) するにはどの様に変更するといいでしょうか? よろしくお願いします。 'Sub newfilesave() Sheets("Sheet1").Copy '名前を付け、ファイル形式も決めてデスクトップに日付を付けて保存する。。 'ActiveWorkbook.SaveAs _ ' Filename:="C:\Users\xxxxx\Desktop\" & Format(Now(), "yyyymmdd_hhmm"), _ ' FileFormat:=xlOpenXMLWorkbook 'End Sub
- ベストアンサー
- Excel(エクセル)
- エクセル 抽出マクロについて
はじめまして。マクロ初心者です。 エクセルで抽出結果を別シートにコピーしたいのですが、 抽出条件が2列にわたっています。 A B C D 日付 タイトル 分類(あ) 分類(い) 11/22 テレビ 3 2 12/15 ラジオ 1 4 11/18 雑誌 2 5 …というような感じです。 例えば分類が「2」のものを抽出したい時に、 ●シート1のあるセルに「2」と入力してマクロを実行。 ↓ ●シート2に以下のように結果をコピーして表示。 A B 日付 タイトル 11/22 テレビ 11/18 雑誌 という具合にしたいのです。(C列、D列は表示しない) データはシート3に入力されていて、今後どんどん増えていく予定です。 エクセルは2007です。 本やホームページを参考に試行錯誤したのですが、うまくいきません…。 どなたかご回答よろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- Excelシートの自動コピーでマクロを使いたい
表題通り、Excelシートの自動コピーをマクロを使って行いたいのですが、 マクロやVBAの知識が全くないため、どなたかコードを教えていただけないでしょうか。 まず今現在、B1セルに9月1日と日付を入れ、シート名を1日としたものがあります。 これを自動で複製して、B1セルの日付を9月2日 9月3日… シート名を2日 3日…となるように、日毎ごとの一ヶ月分のシートを作り ひとつのbookにしたいと考えております。 また、その際に、B1セルとシート名の日付が日曜・祭日に当たる場合、 シート名に色を付けたいと思っています。 (因みにB1セルの日付はシリアル値で入れていて、 書式で○月○日となるように表示していて、日付が日曜・祭日に当たる場合は 赤文字になるよう、別シートに祝日リストも作って 条件付き書式で設定してあります。) Excelの関数は使えても、マクロは全く分からないので どうかよろしくお願い致します。
- 締切済み
- オフィス系ソフト
- エクセル2007のマクロ異常
旧エクセルでシートを新BOOKへコピーするマクロを使っていたのですが、エクセル2007でこのマクロを使うと、登録マクロが新BOOKのマクロに変わってしまって、元のBOOKに戻った時には、このマクロが使えません。マクロ登録で元のBOOKに登録替えしなくてはなりません。解決法をご指導ください。
- ベストアンサー
- オフィス系ソフト
- エクセルのマクロを使ってシートごとに名前をつけて保存したい
マクロ初心者です。宜しくお願いします。 1つのブックにシートが複数あります。 それぞれシートをコピーして新しいブックを作成し そのブックに名前をつけて保存したいです。 例えばブック名が「売上管理」でそのシートが「A店」「B店」「C店」と3シートあるとします。 シート名:A店を他のブックにコピーしてマイドキュメントに名前を付けて 保存する場合のマクロを教えてください。 ちなみにその際のブック名は「シート名+任意のセル(D2)」と できれば一番助かります。 ちなみにD2のセルにはToday関数が入ってます。
- ベストアンサー
- オフィス系ソフト
お礼
zap35さん、再度の回答ありがとうございました。なんとかなりそうです。お礼が遅れましたことをお詫び申し上げます。