お世話になります。
No.190261で「excel97で、一番右側に新しいシートを挿入させたい」(マクロ以外で)と質問した者ですが、macro以外では無理そうなので、今度はmacroでの記述方法を改めて質問させて下さい。
自動記録でやってみたのですが、

Sheets.Add
Sheets("Sheet3").Move After:=Sheets(3)

という感じで、特定のsheet(この場合sheet3)の右に加わるだけなのですが、今あるのがどんな名前のsheetであっても、とにかくそれらのsheetのさらに右側に新しいシートが加わるようにするにはどう記述したらよいのでしょうか。


ちなみに、過去の同類の質問を検索したくても、タイトルが単に「マクロの質問」「excelでこういうことはできますか?」といった感じで、内容が推測できない質問タイトルが多く、内容を一件一件見るのは大変です。質問者の皆さまには、あとの人の為にタイトルをもう少し具体的にして頂けたらと思います。

A 回答 (5件)

次の1行で大丈夫でしょう。



Worksheets.Add.Move after:=Worksheets(Worksheets.Count)
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/12/26 15:57

質問の質問に対する回答です。

コメントを追加してみました。

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
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/12/28 15:38

考えてテストしているうちに正解が既に出ているようなのですが、他の方の質問に便乗した質問のようになって済みません。


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に分けないと、ループするようなのもなぜか浅学の私には不明。
どなたか教えてください。
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/12/27 10:52

こんにちは



Sub test()
Worksheets.Add after:=Sheets(Sheets.Count)
End Sub

でいかがでしょうか?グラフシートがある場合にも対応してます。

参考URL:http://www2.odn.ne.jp/excel/
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/12/27 10:47

すごく使える参考URLがあります。

このシートの追加方法も載せてます。便利ですよ(^^)
sub add()
Worksheets.Add.Move:=Worksheets(Worksheets.Count)
end sub

参考URL:http://www.asahi-net.or.jp/~zn3y-ngi/YNxv2.html
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/12/26 16:01

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


人気Q&Aランキング