総ありがとう数 累計4,309万(2014年11月26日現在)

毎月4,000万人が利用!Q&Aでみんなで助け合い!

-PR-
happy5541

マクロ初心者です。宜しくお願いします。
エクセルで一つのSheet1があります。そのSheet1には、一覧表があります。マクロを実行することで、Sheet1の後ろにSheet2を作成して、Sheet1と同じ一覧表をコピーして表示できるようにし、それを、マクロを実行すれば、ワークシートが一枚追加され、Sheet2のシート名になり、シートを追加する度にシート名が、Sheet3、Sheet4、Sheet5となるようにしたいです。
分かりづらい説明ですが、宜しくお願いします。
  • 回答数5
  • 気になる数0

Aみんなの回答(全5件)

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

  • 2007-08-17 07:05:17
  • 回答No.5
普通エクセルには、新規ブックを開いたときのシート数が決められます。3が多いと思います。
.SheetsInNewWorkbook = 3
とかです。
するとシート名はSheet1、Sheet2、Sheet3という名前にとりあえずなります。
質問は具体的にシート名を書いてくれているのは良いが、上述の名前とぶつかります。それをあえてSheet2とかに拘るなら、一旦シートを削除したり、名前を別の名前に変えないとなりません。
ーー
質問としてはシートを増やした後のシート名は自動的には
Sheet1(2)のようになるが、したい名前は
A.ルール化した名前「シート1」「シート2」
B.前もってシートのセルに入力しておく
などしないといけません。
ーー
(1)シートを増やす・コピーする程度のVBAは解説書・WEBに必ず載ってます。
1冊も本を読んでないのでは?
(2)エクセルVBA学習は、エクセルの操作や機能、状況を勉強するのと、表裏一体です。VBAのコードだけ知ろうとしても無理です。マクロ初心者でも、必要最小限、エクセルを知らないのではダメです。質問にそれが伺えます。
ーー
Sub test01()
n = Sheets.Count
'MsgBox n
Sheets("Sheet1").Copy after:=Sheets(n)
ActiveSheet.Name = "シート" & n + 1
End Sub
ーー
.Name
Sheets.Count
Sheets(インデックス番号)の意味
を勉強してください。
お礼コメント
ありがとうございます。
マクロについては、全く無知です。
これから頑張って勉強していきます。
投稿日時 - 2007-08-17 19:29:30
  • 同意数0(0-0)
  • ありがとう数0

その他の回答 (全4件)

  • 2007-08-16 21:26:22
  • 回答No.1
エクセルでSheet1シートのコピーを行うと、シート名は「Sheet1(2)」になります。これをSheet2、Sheet3のようにしたいということでしょうか? 

以下はアクティブシートをSheetX(Xは既存複数シートで最大の数字)のXの次に大きな数字の名前でCOPYするマクロです。
マクロはALT+F11でVBE画面を開き、左上のVBA Projectでシート名を右クリックし「挿入」→「標準モジュール」で表示される画面に貼り付けて下さい。マクロの実行はALT+F8でマクロ一覧を開き、マクロ名を選択して「実行」ボタンです。

Sub Macro3()
Dim MaxSheet As Integer
Dim strShNo As String
Dim sh As Worksheet
 For Each sh In Worksheets
  strShNo = Application.Substitute(sh.Name, "Sheet", "")
  If IsNumeric(strShNo) Then
   If MaxSheet < Val(strShNo) Then
    MaxSheet = Val(strShNo)
   End If
  End If
 Next sh
 Activesheet.copy after:=Worksheets(Worksheets.Count)
 ActiveSheet.Name = "Sheet" & MaxSheet + 1
End Sub
補足コメント
早速ありがとうございます。
早速試さしてもらいました。もう少し御願いします。
コピーするシートは、Sheet1です。Sheet1を原紙として使用したいと思っています。
宜しく御願いします。
投稿日時 - 2007-08-16 22:35:55
通報する
  • 同意数0(0-0)
  • ありがとう数0
  • 2007-08-16 22:03:47
  • 回答No.2
シート名にこだわらなければ

Sub test()
 ActiveSheet.Copy after:=ActiveSheet
End Sub

参考>http://t_shun.at.infoseek.co.jp/My_Page/Excel-VBA/vba_page2.htm
お礼コメント
ありがとうございました。
投稿日時 - 2007-08-17 19:25:55
通報する
  • 同意数0(0-0)
  • ありがとう数0
  • 2007-08-16 23:03:37
  • 回答No.3
#2です。

補足です。

最初のシート名を
Sheet(1)
という名前にしておけば、#2のマクロを実行すると
Sheet(2)、Sheet(3)、Sheet(4)という名でコピーされていきます。

実用上問題となる場合はこの回答は無視してください。
通報する
  • 同意数0(0-0)
  • ありがとう数0
  • 2007-08-17 06:19:51
  • 回答No.4
#01です
>コピーするシートは、Sheet1です
Activesheet.copy を Worksheets("Sheet1").Copy に変えるだけです

初心者とはいえマクロをさわることがあるなら、ヘルプを見るとか参考書を見るとか、少しは自分で調べないとスキルアップしませんよ
お礼コメント
おっしゃるとおりです。
少しずつ勉強していきます。
また、機会があれば宜しく御願いします。
投稿日時 - 2007-08-17 19:27:51
通報する
  • 同意数0(0-0)
  • ありがとう数0
  • 回答数5
  • 気になる数0
  • ありがとう数1
  • ありがとう
  • なるほど、役に立ったなど
    感じた思いを「ありがとう」で
    伝えてください

関連するQ&A

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

別のキーワードで再検索する

あなたの悩みをみんなに解決してもらいましょう

  • 質問する
  • 知りたいこと、悩んでいることを
    投稿してみましょう
-PR-
-PR-
-PR-

特集

専門医・味村先生からのアドバイスは必見です!

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ