回答編集履歴
2
コード修正
test
CHANGED
@@ -102,11 +102,7 @@
|
|
102
102
|
|
103
103
|
If Not SheetExists(r.Text) Then
|
104
104
|
|
105
|
-
|
105
|
+
Worksheets.Add(after:=Worksheets(Worksheets.Count)).Name = r.Text
|
106
|
-
|
107
|
-
.Name = r.Text
|
108
|
-
|
109
|
-
End With
|
110
106
|
|
111
107
|
End If
|
112
108
|
|
1
コード追加
test
CHANGED
@@ -79,3 +79,59 @@
|
|
79
79
|
End Sub
|
80
80
|
|
81
81
|
```
|
82
|
+
|
83
|
+
|
84
|
+
|
85
|
+
別案
|
86
|
+
|
87
|
+
---
|
88
|
+
|
89
|
+
シートの存在チェックは他でも使えそうなので関数にします。
|
90
|
+
|
91
|
+
ループですべてのシート名をチェックしてもいいのですがシート数が多いと重くなりますので、例外処理で存在チェックします。(シートにアクセスしてエラーがでたら存在しない)
|
92
|
+
|
93
|
+
|
94
|
+
|
95
|
+
```VBA
|
96
|
+
|
97
|
+
Sub Sheet作成2()
|
98
|
+
|
99
|
+
Dim r As Range
|
100
|
+
|
101
|
+
For Each r In Worksheets("入力").Range("A1:A10")
|
102
|
+
|
103
|
+
If Not SheetExists(r.Text) Then
|
104
|
+
|
105
|
+
With Worksheets.Add(after:=Worksheets(Worksheets.Count))
|
106
|
+
|
107
|
+
.Name = r.Text
|
108
|
+
|
109
|
+
End With
|
110
|
+
|
111
|
+
End If
|
112
|
+
|
113
|
+
Next
|
114
|
+
|
115
|
+
End Sub
|
116
|
+
|
117
|
+
|
118
|
+
|
119
|
+
'シートの存在チェック関数
|
120
|
+
|
121
|
+
'指定した名前のシートが存在したらTrue、しなかったらFalseを返す
|
122
|
+
|
123
|
+
Function SheetExists(SheetName As String) As Boolean
|
124
|
+
|
125
|
+
Dim ws As Worksheet
|
126
|
+
|
127
|
+
On Error Resume Next
|
128
|
+
|
129
|
+
Set ws = ThisWorkbook.Worksheets(SheetName)
|
130
|
+
|
131
|
+
On Error GoTo 0
|
132
|
+
|
133
|
+
SheetExists = Not (ws Is Nothing)
|
134
|
+
|
135
|
+
End Function
|
136
|
+
|
137
|
+
```
|