OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

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

  • 困ってます
  • 質問No.190845
  • 閲覧数300
  • ありがとう数6
  • 気になる数0
  • 回答数5
  • コメント数0

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

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

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


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

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

  • 回答No.1
レベル13

ベストアンサー率 68% (791/1163)

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

Worksheets.Add.Move after:=Worksheets(Worksheets.Count)
お礼コメント
noname#63648

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

その他の回答 (全4件)

  • 回答No.2
レベル6

ベストアンサー率 50% (4/8)

すごく使える参考URLがあります。このシートの追加方法も載せてます。便利ですよ(^^) sub add() Worksheets.Add.Move:=Worksheets(Worksheets.Count) end sub ...続きを読む
すごく使える参考URLがあります。このシートの追加方法も載せてます。便利ですよ(^^)
sub add()
Worksheets.Add.Move:=Worksheets(Worksheets.Count)
end sub
お礼コメント
noname#63648

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

  • 回答No.3
レベル12

ベストアンサー率 51% (254/492)

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

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

でいかがでしょうか?グラフシートがある場合にも対応してます。
お礼コメント
noname#63648

ありがとうございます。
ワークシート=シートという風に漠然と言葉を使っていましたが、グラフシートというものもありましたね。そういえば使ったことあるのを思い出しました。勉強になりました。
投稿日時 - 2001-12-27 10:47:49
  • 回答No.4
レベル14

ベストアンサー率 28% (4322/15241)

考えてテストしているうちに正解が既に出ているようなのですが、他の方の質問に便乗した質問のようになって済みません。 Sub aaa111() Sheets.Add n = Sheets.Count MsgBox n bbb111 (n) End Sub '------------- Sub bbb111(n) MsgBox n & "aa" ’aaは区 ...続きを読む
考えてテストしているうちに正解が既に出ているようなのですが、他の方の質問に便乗した質問のようになって済みません。
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

私の為にいろいろ考えて頂いたようで、大変ありがたく思います。
今の私には難しすぎてわかりませんが、締切をもう少し待ってみますので、回答が来ると良いですね。
もし来なかったら、改めて新しく質問されてもいいのでは。
投稿日時 - 2001-12-27 10:52:33
  • 回答No.5
レベル13

ベストアンサー率 68% (791/1163)

質問の質問に対する回答です。コメントを追加してみました。 Sub aaa111()   'Dim n As Integer   'Add に before、after の指定がないので、アクティブシートの前に挿入される。   '挿入されたシートがアクティブシートになる   Sheets.Add   n = Sheets.Count   MsgBox n   ...続きを読む
質問の質問に対する回答です。コメントを追加してみました。

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さん、疑問は解決しましたでしょうか?
私もいずれわかるようになりたいです...。
投稿日時 - 2001-12-28 15:38:57
このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ