-PR-

解決済みの質問

質問No.3260486
困ってます
困ってます
お気に入り投稿に追加する (0人が追加しました)
回答数5
閲覧数3828
エクセルでシートコピーするマクロについて
マクロ初心者です。宜しくお願いします。
エクセルで一つのSheet1があります。そのSheet1には、一覧表があります。マクロを実行することで、Sheet1の後ろにSheet2を作成して、Sheet1と同じ一覧表をコピーして表示できるようにし、それを、マクロを実行すれば、ワークシートが一枚追加され、Sheet2のシート名になり、シートを追加する度にシート名が、Sheet3、Sheet4、Sheet5となるようにしたいです。
分かりづらい説明ですが、宜しくお願いします。
投稿日時 - 2007-08-16 21:02:33

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

回答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 07:05:17
この回答を支持する
(現在0人が支持しています)
お礼
ありがとうございます。
マクロについては、全く無知です。
これから頑張って勉強していきます。
投稿日時 - 2007-08-17 19:29:30

ベストアンサー以外の回答 (4)

回答No.4
#01です
>コピーするシートは、Sheet1です
Activesheet.copy を Worksheets("Sheet1").Copy に変えるだけです

初心者とはいえマクロをさわることがあるなら、ヘルプを見るとか参考書を見るとか、少しは自分で調べないとスキルアップしませんよ
投稿日時 - 2007-08-17 06:19:51
この回答を支持する
(現在0人が支持しています)
お礼
おっしゃるとおりです。
少しずつ勉強していきます。
また、機会があれば宜しく御願いします。
投稿日時 - 2007-08-17 19:27:51
回答No.3
#2です。

補足です。

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

実用上問題となる場合はこの回答は無視してください。
投稿日時 - 2007-08-16 23:03:37
この回答を支持する
(現在0人が支持しています)
回答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-16 22:03:47
この回答を支持する
(現在0人が支持しています)
お礼
ありがとうございました。
投稿日時 - 2007-08-17 19:25:55
回答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
投稿日時 - 2007-08-16 21:26:22
この回答を支持する
(現在0人が支持しています)
補足
早速ありがとうございます。
早速試さしてもらいました。もう少し御願いします。
コピーするシートは、Sheet1です。Sheet1を原紙として使用したいと思っています。
宜しく御願いします。
投稿日時 - 2007-08-16 22:35:55
この質問は役に立ちましたか?
1人が「このQ&Aが役に立った」と投票しています
もっと聞いてみる

関連するQ&A

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

同じカテゴリの人気Q&Aランキング

-PR-

-PR-

特集

正しい方法で健康的な綺麗を手に入れよう!

お城、ボート、ツリーハウス、ユニークな物件満載!

患者さんやご家族、それぞれに合ったゴールと道筋を。

同じカテゴリの人気Q&Aランキング

-PR-

ピックアップ

-PR-