dポイントプレゼントキャンペーン実施中!

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

A 回答 (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(インデックス番号)の意味
を勉強してください。
    • good
    • 0
この回答へのお礼

ありがとうございます。
マクロについては、全く無知です。
これから頑張って勉強していきます。

お礼日時:2007/08/17 19:29

#01です


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

初心者とはいえマクロをさわることがあるなら、ヘルプを見るとか参考書を見るとか、少しは自分で調べないとスキルアップしませんよ
    • good
    • 0
この回答へのお礼

おっしゃるとおりです。
少しずつ勉強していきます。
また、機会があれば宜しく御願いします。

お礼日時:2007/08/17 19:27

#2です。



補足です。

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

実用上問題となる場合はこの回答は無視してください。
    • good
    • 0

シート名にこだわらなければ



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

参考>http://t_shun.at.infoseek.co.jp/My_Page/Excel-VB …
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2007/08/17 19:25

エクセルで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
    • good
    • 0

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