回答編集履歴

2

コード追加

2019/07/28 06:32

投稿

hatena19
hatena19

スコア33620

test CHANGED
@@ -28,4 +28,70 @@
28
28
 
29
29
 
30
30
 
31
+ ---
32
+
33
+ 追記
34
+
35
+
36
+
31
- あと、修正依頼にあるようにコードは画像はなく、マークダウン記法コードタグ内貼り付けるように修正しておいてください。
37
+ あと、For Each の部分も間違いすね。他方の回答を参考にしてください。
38
+
39
+
40
+
41
+ ワークシートの存在チェックは For Each を使わない方法もありますので、おまけで紹介しておきます。
42
+
43
+
44
+
45
+ ```vba
46
+
47
+ Sub 存在シートチェック()
48
+
49
+ Dim i As Long
50
+
51
+ Dim trgsheet As String
52
+
53
+ Dim ws As Worksheet
54
+
55
+ Dim Row As Long
56
+
57
+ Dim d As Long
58
+
59
+
60
+
61
+ Row = Worksheets("Sheet5").Cells(Rows.Count, 1).End(xlUp).Row
62
+
63
+ d = 0
64
+
65
+ For i = 1 To Row
66
+
67
+ trgsheet = Worksheets("Sheet5").Cells(i, 1).Value
68
+
69
+ On Error Resume Next
70
+
71
+ Set ws = Worksheets(trgsheet)
72
+
73
+ If Err.Number <> 0 Then
74
+
75
+ Worksheets("Sheet1").Range("A1").Offset(d, 0).Value = trgsheet & "は存在しません"
76
+
77
+ d = d + 1
78
+
79
+ End If
80
+
81
+ On Error GoTo 0
82
+
83
+ Next i
84
+
85
+ End Sub
86
+
87
+ ```
88
+
89
+
90
+
91
+ `On Error Resume Next`でエラーを無視して次行へすすめる。
92
+
93
+ wsにtrgsheetシートを代入する。
94
+
95
+ もし、trgsheetシートが存在しなければエラーになる。
96
+
97
+ エラーなら Sheet1 に"存在しません"と出力する。

1

誤字の修正

2019/07/28 06:32

投稿

hatena19
hatena19

スコア33620

test CHANGED
@@ -18,7 +18,7 @@
18
18
 
19
19
  ```
20
20
 
21
- これだと常にA列の最後の行を見ているので、trgsheetには"Sheet9"が代入ます。
21
+ これだと常にA列の最後の行を見ているので、trgsheetには常に"Sheet9"が代入されます。
22
22
 
23
23
 
24
24