• ベストアンサー

エクセルVBA シートの追加と名前の変更

エクセルに「原本」シートがあり、マクロを実行すると原本シートを5シート(5日分)追加し、 (1)一つ目に追加したシートのB2のセルに「追加する日の日付け」を入力し、 シート名にその日付をyymmdd形式で名前を付け、 (2)二つ目に追加したシートのB2のセルに「追加する日の次の日の日付け」を入力し、 ・・・同様の処理・・・ (6)一つ目の追加したシートをアクティブシートにする。 というように、連続した5日分のシートを追加したいと考えています。 VBAの全くの初心者ですので教えていただけると大変助かります。 そんな素晴らしいことが短時間で教えていただけるものなのでしょうか。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

ブックを用意する ALT+F11を押す 現れた画面で挿入メニューから標準モジュールを挿入する 現れたシートに下記をコピー貼り付ける sub macro1()  dim s as string  dim i as integer  s = inputbox("Start Date (yyyy/m/d)")  if not isdate(s) then exit sub  on error goto errhandle  for i = 4 to 0 step -1   worksheets("原本").copy after:=worksheets("原本")   activesheet.range("B2") = datevalue(s) + i   activesheet.name = format(datevalue(s) + i, "yymmdd")  next i  exit sub errhandle:  msgbox "BAD SHEET NAME" end sub ファイルメニューから終了してエクセルに戻る マクロを実行する。

snow66
質問者

お礼

今回初めてOKwaveで質問をしました。 まずは回答の迅速さに驚愕しているところです。 週明けに職場で試したいと思います。 ありがとうございました。

関連するQ&A

  • EXCEL VBA シートの名前を指定してコピー

    EXCEL VBA 初心者です。 とても困っています。 助けてください。 excel2010を使っています。 今,「原本」というシートがあり,それをマクロを使って同じブック内にコピーしたいと思っています。 コピーして新しく作られたシートの名前は「A1」のセルに入力されている値にしたいです。 コピーされた後のシートにはマクロボタンは削除したいと考えています。 また,コピーした後のアクティブシートは「原本」のシートにしたいのですが これを全部いれたコマンドはどのようになるのでしょうか。 似たような質問だったり,回答があるのですが, どのように組み合わせたらいいのかよく分かりません。 どなたかお助けいただけないでしょうか。 よろしくお願いします。

  • エクセルVBAでワークシート関数のようにしたい

     例えば、セルA1に日付を入力して、セルB1に関数WEEKDAYが入力されていると、すぐセルA1の値を返してくれますが、これと同じことをVBAで再現したいのですが、可能でしょうか?  マクロやVBAでWEEKDAYを記述しても、「ツール」→「マクロ」→「マクロ」か「VBA」でやらないとA1の値をB1に返せないので、A1に日付を入力した瞬間、B1に値を返したいのですが、よろしくお願いします。

  • 連続データから日付一致抽出し別シートへ転記したい

    ひとつの処理として実行したいのですが、マクロ組み合わせがわかりません。。。・・どなたか教えてください ●エクセル シートAAA A  B    C     D    E    F 1 2月1日 データ → 2 2月1日 データ → 3 2月1日 ↓ 4 2月2日 5 2月2日 6 2月3日 7 2月4日 8 2月5日 ↓ ・1日の入力は、複数行あります ・このシートAAAはマスタデータとして保存したい。 月間連続して入力されます ・シートAAA内に設置されたマクロボタンで、1日1回(日報) 日付名シートで追加してゆく Private Sub CommandButton1_Click() Worksheets.Add(After:=Worksheets("シートAAA")) _ .Name = Format(Now(), "yymmdd") End Sub ・同日付シートがある場合は、上書き。一応確認のダイアログを表示  し、マクロエラーを回避したい ・追加シート名yymmddのデータは、シートAAA内で抽出された yymmddと一致する全行列データを ・追加日付名シートタブのほかにセル内にもわかりやすく日付を表示させたい ・同時に追加シートyymmddを別ブックにも新規追加転記させたい ・できればシートAAA内のボタン、ワンクリックで処理完了させたい ■簡潔に?。。 マスタシートにデータ入力 ↓ ボタンクリック、 日付シートが追加される マスタシートから、その日だけのデータを抽出し日報シートを 追加していきたい。また別ブックにも同内容で同時書き出し保存 ↓ お願いします

  • セルの名前を変換し、それをシートの名前にする

    図面のようにセルに 2013/12/1 のように日付が入っていて、その日付にもとづき、シートのタイトルをつけたいのですが、vba で書いてみたのですが、どうしても、 Sub sheetname() Range("B2").NumberFormatLocal = "yymmdd" ActiveSheet.Name = Range("B2").Text End Sub のようにしか書けません。 シートのタイトルには /  を使えないので、どうしても NumberFormat を使う必要があるのですが、それをする必要はないので、一発でできないでしょうか? お詳しい方 お願いします。

  • エクセルのVBAでシートを追加更新していきたいのですがうまくいきません

    エクセルのVBAでシートを追加更新していきたいのですがうまくいきません…。 すみません、どなたかぜひ教えてください。 エクセルはそこそこ使えますが、マクロ関係はまったくの初心者です。 excel2003で作業しています。 やりたいのは、実行することによって (1)同一ブックの中に同じ形式のシートを追加する。 (シート名は「0」「1」「2」…というように、ただの数字にしています) (2)セル「K4」の数式 「=I4+'( 1 )'!K4」を 「=I4+'( 2 )'!K4」 というように、どのシートでも、直前のシートのセル「K4」の数値と更新したシートのセル「I4」の数値の合計を「K4」に表示する。 (以下、「I5」「K5」、「I6」「K6」…も同様にしていきます) ようにしたいのです。 (2)のために、 Range("k4").Value = "=I4+'(" & Range("j1").Value - 1 & ")'!K4" (「J1」には、「新しいシート名(数字)と同じ数字」が入るようにしてあります) としましたが、 「 =I4+'(1)'!K4 」としたいのに、 「 =I4+'[1](1)'!K4 」 と表示され、うまくいきません。 また、実行するたびに、 「値の更新」ということで、ファイルを指定するよう指示が出ます。キャンセルすると「#REF!」になります。 何が原因なのか、どうすればいいのかがさっぱり分かりません。 身の程知らずなレベルに挑戦しているのかもしれませんが、どなたか助けていただければ幸いです。 よろしくお願いします! (よく分かっていないため、質問の仕方が適当でなかったらすみません…)

  • Excelで一月分のシート名変更

    エクセルで日報を製作する際に、 一つのブックに一月分のシートを入れて入力をしているのですが、 シート名を「1日」「2日」「3日」…として作る際、 例えばB2セルに日付の数字のみを入力するとして、 「1日」目のシートのみを作った状態から、 一気に「31日」までのシートをコピーする方法は無いでしょうか? VBAを使用すれば可能だとは思うのですが、 その後VBAを解除しても一度入れたシート名が動かないようになっていると有難いです。

  • [VBA]エクセルシートから読み取り、全入力する

    いつも大変お世話になっております。 図のような2つのエクセルブック(統計.xlsx)(マクロ.xlsx)があります。 統計ブックのデータをマクロブックに自動的に入力できるVBAがわかりません。 [条件] http://infovivra.s100.xrea.com/1.jpg (統計.xlsx) http://infovivra.s100.xrea.com/toukei.xlsx http://infovivra.s100.xrea.com/2.jpg (マクロ.xlsx) http://infovivra.s100.xrea.com/makuro.xlsx  ・マクロ.xlsxには、4/15~4/21までの日付が記入されている ・マクロ.xlsxには10のシートがあり、同じ内容である ・県庁所在地が入っているセルはM3です(わかりにくいため) ・固有文字は、固有文字と固定で入力する [作成マクロ] (1)統計.xlsxのシート名で検索する。 (2)マクロ.xlsxのシート内で、統計.xlsxの日付で検索する。 (3)それぞれ連番を振り、日付で検索した所定の位置にデータを全て入力する。 (4)大項目ごとに行が移るが、同じ大項目で日付が異なる場合は同じ行に記入する。 (日付が重なった場合は、次の行に記入) (5)K2セルの日付は(2012/4/16)といった形式で記入され、可変する、統計データも同じ。 といった内容になっております。 [追記] [VBA] 年度を指定し、以降の日付を表示する というご質問もさせていただいておりますので、 もしお時間がございましたら、宜しくお願いいたします。 何卒宜しくお願いします。 gitmyk

  • Excelシートの自動コピーでマクロを使いたい

    表題通り、Excelシートの自動コピーをマクロを使って行いたいのですが、 マクロやVBAの知識が全くないため、どなたかコードを教えていただけないでしょうか。 まず今現在、B1セルに9月1日と日付を入れ、シート名を1日としたものがあります。 これを自動で複製して、B1セルの日付を9月2日 9月3日… シート名を2日 3日…となるように、日毎ごとの一ヶ月分のシートを作り ひとつのbookにしたいと考えております。 また、その際に、B1セルとシート名の日付が日曜・祭日に当たる場合、 シート名に色を付けたいと思っています。 (因みにB1セルの日付はシリアル値で入れていて、 書式で○月○日となるように表示していて、日付が日曜・祭日に当たる場合は 赤文字になるよう、別シートに祝日リストも作って 条件付き書式で設定してあります。) Excelの関数は使えても、マクロは全く分からないので どうかよろしくお願い致します。

  • VBA:シートの追加とセルからの名前変更

    いつもお世話になっています。 ExcelのVBAで実装可能かと思うのですが、ご教授願いたく思います。 今回、大量のシートの追加(最後尾)とその追加したシートの名前を 変更するVBAを制作したいと思ったのですが シートの追加とシートの名前変更(ソースの直接記入)までは、 なんとか出来ましたが 名前を、とある範囲のセルにある文字列に変更するという事がしたいです。 例えばE1:E5までの範囲にある文字列 「あ」 「い」 「う」 「う」 「う」 とあったら、かぶっているものは除き、「あ」「い」「う」という名前のシートを3つ追加したいという事です。 上記、もし実装可能であればご教授お願いします。 また、可能だけどokwaveの入力欄では面倒だし説明しづらい、という回答でもokです。 その場合、参考サイトなど教えて頂けると幸いです。 何卒よろしくお願いいたします。

  • 【エクセルVBA】条件に一致した項目の数を別シートへ表示

    はじめまして。VBA初心者です。 sheet1のA列に日付(一ヶ月分)、B列に製品名 sheet2のB2セル~AF1セルに日付、A2セル~A10セルに製品名 が入っています。 Sheet1の製品名の数を日付ごとにカウントして、その結果をSheet2の 各日付へ入力するVBAを作成したいのですが、うまくいきません。 分かり難い質問で、大変申し訳ありませんが、どなたか教えて下さい。 よろしくお願いします。

専門家に質問してみよう