Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


4932 / 13644 ツリー ←次へ | 前へ→

【53483】ご指導お願いします。 貫井企画 08/1/16(水) 15:26 質問[未読]
【53484】Re:ご指導お願いします。 Jaka 08/1/16(水) 16:00 発言[未読]
【53485】Re:ご指導お願いします。 貫井企画 08/1/16(水) 17:43 お礼[未読]
【53486】Re:ご指導お願いします。 じゅんじゅん 08/1/16(水) 18:28 発言[未読]
【53490】Re:ご指導お願いします。 貫井企画 08/1/16(水) 21:52 お礼[未読]

【53483】ご指導お願いします。
質問  貫井企画  - 08/1/16(水) 15:26 -

引用なし
パスワード
   はじめまして、VBA初心者の者です。

_________________________________________________________________________
Sub シート追加()
Dim i As Byte

Worksheets("Sheet3").Active

For i = 1 To 10
Worksheets.Add after.=ActiveSheet
With ActiveSheet
.Name="Sheet"&i+3
.Tab.ColorIndex=i

End With
Next

End Sub
_________________________________________________________________________

これで、
・追加したシートを削除して元の状態に戻す方法
・複数枚のシートをいっぺんに追加する方法
・シートを前に追加していくときに、一番最初のシートからシートまで、左を先頭にして順に並べる方法

をご指導願います。よろしくお願いします。

【53484】Re:ご指導お願いします。
発言  Jaka  - 08/1/16(水) 16:00 -

引用なし
パスワード
   名前を付けてシート挿入 (位置指定)
Worksheets.Add(After:=ActiveSheet).Name = "アクティブシートの後"
Worksheets.Add(After:=Worksheets("Sheet1")).Name = "Sheet1の後"
Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = "最後のシート"

最後に複数
Worksheets.Add After:=Worksheets(Worksheets.Count), Count:=2

>追加したシートを削除して元の状態に戻す方法
これは、
1、追加する前の全シート名をどこかに控えおいて、控えたシート名の中に無かったら削除するとか。
2、もしくは、追加したシートのシート名をどこかに控えておいて、控えておいたシート名で削除するとか。
 (2は、複数枚のソート挿入には対応できないと思う。複数枚挿入時の名前の付け方を知らない。)

>・シートを前に追加していくときに、一番最初のシートからシートまで、左を先頭にして順に並べる
意味が良く解りませんが、下を参考にして見てください、
【51943】選択した複数のシートをソート

【53485】Re:ご指導お願いします。
お礼  貫井企画  - 08/1/16(水) 17:43 -

引用なし
パスワード
   Jakaさん、親切にありがとうございます。
過去ログを参照させていただきます。

【53486】Re:ご指導お願いします。
発言  じゅんじゅん  - 08/1/16(水) 18:28 -

引用なし
パスワード
   ▼貫井企画 さん:
>はじめまして、VBA初心者の者です。
>・追加したシートを削除して元の状態に戻す方法
>をご指導願います。よろしくお願いします。


'「ツール」−「参照設定」にて
'Microsoft Scripting Runtime にチェックを入れる
Private Dic As New Dictionary

Sub シート追加()
 Dim i As Integer
 Worksheets("Sheet3").Activate

 For i = 1 To 10
   Worksheets.Add after:=ActiveSheet
   With ActiveSheet
     .Name = "Sheet" & i + 3
     .Tab.ColorIndex = i
     Dic(.Name) = Empty
   End With
 Next
End Sub

Sub シート削除()
 Dim key
 For Each key In Dic.Keys
   Application.DisplayAlerts = False
   Worksheets(key).Delete
   Application.DisplayAlerts = True
 Next
 Dic.RemoveAll
End Sub

こんなのではダメでしょうか?

【53490】Re:ご指導お願いします。
お礼  貫井企画  - 08/1/16(水) 21:52 -

引用なし
パスワード
   じゅんじゅんさん

ご丁寧なマクロありがとうございます!
上手くいきました。わかりやすく書いていただき感謝します。どうもありがとうございました♪

4932 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free