Excel Macroで一番右側の見出しに新しいsheetを加える方法

このQ&Aのポイント
  • Excelのマクロを使用して、一番右側の見出しに新しいシートを追加する方法について質問します。
  • 質問者は以前、Excel 97で一番右側に新しいシートを追加する方法を質問しましたが、マクロ以外ではできないことが分かりました。そこで、今度はマクロでの記述方法について質問しています。
  • 今あるシートのどんな名前でも、それらのシートの右側に新しいシートを追加するためにはどのように記述すればよいでしょうか。過去の同様の質問では、タイトルが具体的でなく内容が推測できないため、質問者は他の人に具体的なタイトルを付けるようにお願いしています。
回答を見る
  • ベストアンサー

Excel macroで、一番右側の見出しに新しいsheetを加えたい

お世話になります。 No.190261で「excel97で、一番右側に新しいシートを挿入させたい」(マクロ以外で)と質問した者ですが、macro以外では無理そうなので、今度はmacroでの記述方法を改めて質問させて下さい。 自動記録でやってみたのですが、 Sheets.Add Sheets("Sheet3").Move After:=Sheets(3) という感じで、特定のsheet(この場合sheet3)の右に加わるだけなのですが、今あるのがどんな名前のsheetであっても、とにかくそれらのsheetのさらに右側に新しいシートが加わるようにするにはどう記述したらよいのでしょうか。 ちなみに、過去の同類の質問を検索したくても、タイトルが単に「マクロの質問」「excelでこういうことはできますか?」といった感じで、内容が推測できない質問タイトルが多く、内容を一件一件見るのは大変です。質問者の皆さまには、あとの人の為にタイトルをもう少し具体的にして頂けたらと思います。

noname#63648
noname#63648

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

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.1

次の1行で大丈夫でしょう。 Worksheets.Add.Move after:=Worksheets(Worksheets.Count)

noname#63648
質問者

お礼

nishi6さま、ふたたびのご回答ありがとうございます! 完璧です。 どうしても、一度教えて頂かないとじぶんでは思い付かないのですが、言われてみれば納得です。徐々に自分でも思いつくようになりたいです。頑張ります。 本当に助かりました。

その他の回答 (4)

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.5

質問の質問に対する回答です。コメントを追加してみました。 Sub aaa111()   'Dim n As Integer   'Add に before、after の指定がないので、アクティブシートの前に挿入される。   '挿入されたシートがアクティブシートになる   Sheets.Add   n = Sheets.Count   MsgBox n   bbb111 (n) End Sub Sub bbb111(n)   MsgBox n & "aa"   '一番左のシートを一番右に動かしている。挿入したシートを動かしていない。   '一番左のシートがアクティブならうまくいく。   Sheets(1).Move after:=Sheets(n) End Sub 結局、アクティブシートの前に挿入して、どこに挿入したかによらず、一番左のシートを一番右に動かしているようです。 少し修正してみました。サブルーチンに分ける必要はないようです。(最初も) Sub ccc111()   Dim n As Integer   Sheets.Add   n = Sheets.Count   ActiveSheet.Move after:=Sheets(n) End Sub

noname#63648
質問者

お礼

たびたびのご登場、どうもありがとうございます。 imogashiさん、疑問は解決しましたでしょうか? 私もいずれわかるようになりたいです...。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.4

考えてテストしているうちに正解が既に出ているようなのですが、他の方の質問に便乗した質問のようになって済みません。 Sub aaa111() Sheets.Add n = Sheets.Count MsgBox n bbb111 (n) End Sub '------------- Sub bbb111(n) MsgBox n & "aa" ’aaは区別のため入れたもの Sheets(1).Move after:=Sheets(n) '左より1番目のシートを 'n番目に移動 End Sub 一番右端のシートをACTIVATEしていると、今ADDしたシートが一番右端に来る。 しかしそれ以外はどうもそのようにならない。何番目というのが右端に数えて行ってそれから左端に帰って何番目になるのかとも思ってみたが、不明。 それにサブルーチンbbb111に分けないと、ループするようなのもなぜか浅学の私には不明。 どなたか教えてください。

noname#63648
質問者

お礼

私の為にいろいろ考えて頂いたようで、大変ありがたく思います。 今の私には難しすぎてわかりませんが、締切をもう少し待ってみますので、回答が来ると良いですね。 もし来なかったら、改めて新しく質問されてもいいのでは。

  • kbonb
  • ベストアンサー率51% (254/492)
回答No.3

こんにちは Sub test() Worksheets.Add after:=Sheets(Sheets.Count) End Sub でいかがでしょうか?グラフシートがある場合にも対応してます。

参考URL:
http://www2.odn.ne.jp/excel/
noname#63648
質問者

お礼

ありがとうございます。 ワークシート=シートという風に漠然と言葉を使っていましたが、グラフシートというものもありましたね。そういえば使ったことあるのを思い出しました。勉強になりました。

  • furuchan
  • ベストアンサー率50% (4/8)
回答No.2

すごく使える参考URLがあります。このシートの追加方法も載せてます。便利ですよ(^^) sub add() Worksheets.Add.Move:=Worksheets(Worksheets.Count) end sub

参考URL:
http://www.asahi-net.or.jp/~zn3y-ngi/YNxv2.html
noname#63648
質問者

お礼

ありがとうございます。 実は御指摘のHP、私のお気に入りにも登録してあるんですが、自分がやりたいこととサンプルのマクロとを結び付ける実力すらまだ無くて...。お恥ずかしい...。 でも、お二人の方にご回答頂きホントありがたく思います。

関連するQ&A

  • ExcelのSheetに作られたMacro1について

    EXCELのシート画面で、Alt+F11を押して、Workbookのイベントによって起動するマクロを記述するモジュールシートを開き、マクロを貼り付けました。 確かに、エクセルを開くと同時にマクロが起動します。便利でびっくりしています。 ところで、これと同時に、Macro1という名のシートが自動的に作成されました。これがわかりません。無視してもかまわないでしょうか。うっかり普通のシートのSheet1などと勘違いして書き込みをしたり、名前を変えたり、削除したりしそうです。もしそうしたらどうなりますか。不都合がありますか。 よろしくお願いします。

  • Excel VBAで他のシートを印刷するとき

    シート1からシート2を表示しないで印刷したいんですが下の記述だと一瞬ですがシート2が表示されます、どのようにすればシート1のままシート2を印刷することができるのでしょうか、よろしくお願いします。 Sub Macro1() ' ' Macro1 Macro ' マクロ記録日 : 2004/7/23 ユーザー名 : H ' Sheets("Sheet2").PrintOut Copies:=1, Collate:=True End Sub

  • エクセルシートの順繰り表示マクロについて

    エクセルにて随時更新されるデータを全画面表示し、3枚のシートを5秒置きに順繰り表示させるようマクロを組みました。始めは順調なのですが、数時間たつとフリーズしてしまいます。そもそもエンドレスのマクロプログラム実行に無理があるのでしょうか。 または下記のプログラムに問題があるのでしょうか。ご教授お願いします。 Sub Macro1() Sheets("Sheet2").Select Application.OnTime Now + TimeValue("00:00:05"), "Macro2" End Sub Sub Macro2() Sheets("Sheet3").Select Application.OnTime Now + TimeValue("00:00:05"), "Macro3" End Sub Sub Macro3() Sheets("Sheet1").Select Application.OnTime Now + TimeValue("00:00:05"), "Macro1" End Sub

  • エクセル 複数シート検索のマクロ

    マクロ初心者です。 エクセルの文字列検索で、複数シートにまたがった場合のマクロ記述を知りたいです。 シートaとシートbの選択は下記となると思いますが、 Sub Macro1() Sheets(Array("a", "b")).Select Sheets("a").Activate End Sub その後で、検索窓([ctrl]+[f])を表示させたいのですが・・・。 よろしくご教示願います。

  • excel97で、一番右側に新しいシートを挿入させたい

    excel97で、「挿入」→「ワークシート」を選択すると、アクティブになっているsheetの前(シート見出し左側)に新しいシートが挿入されますが、大抵新しいsheetを挿入したいのは、一番後ろ(画面向かって一番右側)なので、そのあと移動させたりしなければならず面倒です。マクロ以外で一発で「一番後ろ(右側)に新しいワークシートを出す」ことは出来ないでしょうか? 宜しくお願い致します。

  • シート名に自動で年月をつけたい!

    VBA初心者です。 「新規ページ作成」のマクロを作りました。 「H23.3」のシートの上で実行すると、新規ページを挿入し、 雛形というシートにある表をコピーするところまではできました。 そこに、シート名に自動で翌月(この場合は「H24.4」)をつけるにはどうすれば良いでしょうか? 不都合であれば、表記は「平成●年●月」等でも構いません。 また、「H24.4」で実行したら「H24.5」・・・・としていきたいです。 現在のところまでは下記のとおりです。 Sub 新規ページ作成() ' ' 新規ページ作成 Macro ' ' Sheets("H24.3").Select Sheets.Add Sheets("Sheet3").Select Sheets("Sheet3").Move Before:=Sheets(5) Sheets("雛形").Select Cells.Select Selection.Copy Sheets("Sheet3").Select Cells.Select ActiveSheet.Paste Application.CutCopyMode = False Range("A1").Select End Sub 質問の仕方に不備等があればご指摘下さい。 回答と併せてよろしくお願いします。

  • エクセルマクロ シートの追加

    マクロでシートを追加し、シートの名前を変更したくて記録したところ、以下のコードになりました。 しかしながら、2度目に実行すると、sheet2が追加されsheet1が無いためエラーとなります。 2度目に実行してもsheet2のシート名を変更できるようにするには、どうすればよいですか? Sheets.Add Sheets("Sheet1").Select Sheets("Sheet1").Name = "処理結果"

  • エクセルの図形移動で困っています。

    エクセルの図形移動で困っています。 シート2にある図形をシート1にマクロを使って移動(コピー&貼り付け)をしようとしています。 マクロの記録でやった所、以下のような感じになりました。 Sub Macro4() ' ' Macro4 Macro ' ' Sheets("sheet2").Select Selection.Copy Sheets("sheet1").Select Range("N16").Select ActiveSheet.Paste End Sub しかし、なぜか3回程つかうとシート1に貼り付けされなくなります。 原因はシート2の図形をコピーする時に選択されるところがないからではないか?と思い 色々ネットで調べてみたのですが、まだまだ結論が出ていない状態です。 皆様のお力を貸して頂ければと思います。 Sub Macro4() ' ' Macro4 Macro ' ' Sheets("sheet2").Select (たぶんここに"図形1)とか入るのでは??と思っています Selection.Copy Sheets("sheet1").Select Range("N16").Select ActiveSheet.Paste End Sub

  • エクセル 複数シート検索のマクロ

    以前、下記の質問をさせてもらい ---- 以下 --------------- エクセルの文字列検索で、複数シートにまたがった場合のマクロ記述を知りたいです。 シートaとシートbの選択は下記となると思いますが、 Sub Macro1() Sheets(Array("a", "b")).Select Sheets("a").Activate End Sub その後で、検索窓([ctrl]+[f])を表示させたいのですが・・・。 ---- 以上 --------------- に対して、以下のご回答を受けたのですが、 Sub TEST01() Sheets(Array("a", "b")).Select Cells.Select Application.Dialogs(xlDialogFormulaFind).Show End Sub うまく行く場合もあるのですが(と思い解決で締め切ってしまいました)、大抵の場合(該当文字列が複数あるとき?)にフリーズしてしまいます。 上記マクロだと、「検索する文字列」タイトルで[次を検索][閉じる][置換]ボタンが表示され(古いOffice?)、 マクロを使用しない通常の[ctrl]+[f]だと、「検索と置換」タイトルで[検索]と[置換]タグが表示されます(Office2003)。 また、マクロを実行した後は通常の[ctrl]+[f]、[編集]-[検索]が効かなくなってしまいます。 この部分はフリーズとは無関係かもしれませんが・・・。 フリーズしないマクロの記述と、出来れば検索終了後に特定のシートに戻るようなマクロも追加したいです。 また、別件になりますが、ファイルを開いた時に必ず特定のシートに位置づけられる事ができればそれもご教授願いたいです。

  • エクセルマクロ 教えてください

    エクセルの自動記録でマクロを取り組み始めたばかりの初心者です。 本部から毎月送られてくるエクセルファイルにこちらで別のワークブックに記録したマクロを使って加工しようとしていますが方法がわかりません。 他の人がこのファイルを間単に加工出来るようマクロを使って (マクロのコードの書き換え等の作業をしないで)行えるようにしようとしています。 ※送られれくるエクセルファイルは月毎にファイル名が違います(シート名は変わりません)。 下記は自動記録の内容ですがこれを適用させる方法であります。 宜しくお願いいたします。 Sub Macro1() ' ' Macro1 Macro ' マクロ記録日 : 2008/9/8 ユーザー名 : ******* ' ' ActiveWindow.TabRatio = 0.819 Sheets(Array("Sheet1", "Sheet2", "Sheet3", "Sheet4", "Sheet5")).Select Sheets("Sheet1").Activate With ActiveWindow .DisplayHeadings = False .DisplayHorizontalScrollBar = False .DisplayVerticalScrollBar = False End With Sheets(Array("Sheet6", "Sheet7", "Sheet1", "Sheet2")).Select Sheets("Sheet1").Activate ActiveWindow.Zoom = 120 End Sub

専門家に質問してみよう