下記は、エクセルのVBAアプリで、ボタンを押すと、B1~B20に記載されている
文字列の名前でシートを順次作成する、という処理です。
Sub シートコピー()
Dim trgt As Range
For Each trgt In Worksheets("abc").Range("B1:B20")
Worksheets.Add After:=Worksheets(1)
ActiveSheet.Name = trgt.Value
しかし、ボタンを2回押すと、すでにシートが存在するので当然エラーになります。
if文で、「シートがすでに存在しないなら」を付け加えたいのですが、
どうしたらいいでしょうか?
No.1ベストアンサー
- 回答日時:
例えば、こんなスタイルはいかがでしょうか?
Sub シートコピー()
Dim trgt As Range
Dim dum As Variant 'ダミーの意味
On Error Resume Next
For Each trgt In Worksheets("abc").Range("B1:B20")
If trgt.Value = "" Then Exit For '空白があったらループは終わり
dum = Worksheets(trgt.Value).Name 'シート名が返らないならシートを作る
If dum = "" Then
Worksheets.Add After:=Worksheets(1)
ActiveSheet.Name = trgt.Value
End If
dum = ""
Next trgt
On Error GoTo 0
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
- Excel(エクセル) vba シート名の一覧を2列に分けるには 5 2023/04/24 08:56
- Visual Basic(VBA) VBAが止まります。 1 2022/09/02 14:51
- Visual Basic(VBA) 特定の文字を含むシートだけマクロ処理をしたい 1 2023/05/22 01:43
- Visual Basic(VBA) 他のシートからコピーする下記マクロで貼付け位置をWorksheets(1).Range("A3")の 8 2023/01/30 18:48
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) 以前シートを集めて1シートへ繋げる下記コードをご教授いただき作成しました。 今回すでに集めてある「ま 1 2022/08/29 20:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
別のシートから値を取得するとき
-
VBAの天才来てください
-
【ExcelVBA】全シートのセルの...
-
ユーザーフォームに入力したデ...
-
VBA 存在しないシートを選...
-
エクセルのシート名変更で重複...
-
XL:BeforeDoubleClickが動かない
-
同じ作業を複数のシートに実行...
-
ExcelVBA シート名を複数セルか...
-
エクセルのマクロでアクティブ...
-
【VBA】指定した検索条件に一致...
-
excelのマクロで該当処理できな...
-
VBAでオブジェクト変数にsetし...
-
エクセル・マクロ シートの非...
-
ブック名、シート名を他のモジ...
-
Excelマクロのエラーを解決した...
-
VBA 検索して一致したセル...
-
Worksheet_Changeの内容を標準...
-
シートが保護されている状態で...
-
エクセルVBAでダブルクリックを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別のシートから値を取得するとき
-
ユーザーフォームに入力したデ...
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
同じ作業を複数のシートに実行...
-
ExcelVBA シート名を複数セルか...
-
【ExcelVBA】全シートのセルの...
-
Excel マクロについての相談
-
VBA 存在しないシートを選...
-
実行時エラー'1004': WorkSheet...
-
特定の文字を含むシートだけマ...
-
ExcelのVBAのマクロで他のシー...
-
ブック名、シート名を他のモジ...
-
XL:BeforeDoubleClickが動かない
-
VBA 複数の各シートに行を追加...
-
エクセルのシート名変更で重複...
-
【Excel VBA】Worksheets().Act...
-
シートが保護されている状態で...
-
Excel VBA 複数行を数の分だけ...
-
for 文の 繰り返し処理に使える...
おすすめ情報
もう1点書き忘れました。
Range("B1:B20")の部分ですが、「B列で空白が出てくるまで」
という処理も追加したいです。