回答編集履歴

4

修正

2020/08/05 10:22

投稿

mattuwan
mattuwan

スコア2136

test CHANGED
@@ -72,27 +72,31 @@
72
72
 
73
73
  Dim wb As Workbook
74
74
 
75
-
75
+
76
76
 
77
77
  Set wb = Workbooks(Workbooks.Count) '最後に開いたブックの取得
78
78
 
79
79
  If MsgBox(wb.Name & "を操作します。", vbYesNo) = vbNo Then Exit Sub
80
80
 
81
-
81
+
82
82
 
83
83
  Dim v() As String
84
84
 
85
- Dim i As Long, j as long
85
+ Dim ws As Worksheet
86
86
 
87
-
87
+ Dim i As Long, j As Long
88
+
89
+
88
90
 
89
91
  ReDim v(wb.Worksheets.Count)
90
92
 
91
- For i = 1 to wb.Worksheets.Count
93
+ For i = 1 To wb.Worksheets.Count
92
94
 
93
- If worksheets(i).Name <> "DB" Then
95
+ Set ws = Worksheets(i)
94
96
 
97
+ If ws.Name <> "DB" Then
98
+
95
- v(i - 1) = ws.Name
99
+ v(j) = ws.Name
96
100
 
97
101
  j = j + 1
98
102
 
@@ -100,19 +104,19 @@
100
104
 
101
105
  Next
102
106
 
103
-
104
107
 
108
+
105
- if j > 1 then
109
+ If j > 1 Then
106
110
 
107
111
  ReDim Preserve v(j - 1)
108
112
 
113
+ Debug.Print Join(v, ",")
114
+
109
- wb.Select
115
+ wb.Activate
110
116
 
111
117
  wb.Worksheets(v).Select
112
118
 
113
- end if
119
+ End If
114
-
115
-
116
120
 
117
121
  End Sub
118
122
 

3

誤字脱字修正

2020/08/05 10:22

投稿

mattuwan
mattuwan

スコア2136

test CHANGED
@@ -82,8 +82,6 @@
82
82
 
83
83
  Dim v() As String
84
84
 
85
- Dim ws As Worksheet
86
-
87
85
  Dim i As Long, j as long
88
86
 
89
87
 
@@ -92,7 +90,7 @@
92
90
 
93
91
  For i = 1 to wb.Worksheets.Count
94
92
 
95
- If ws.Name <> "DB" Then
93
+ If worksheets(i).Name <> "DB" Then
96
94
 
97
95
  v(i - 1) = ws.Name
98
96
 

2

修正

2020/08/05 07:39

投稿

mattuwan
mattuwan

スコア2136

test CHANGED
@@ -80,7 +80,7 @@
80
80
 
81
81
 
82
82
 
83
- Dim v() As Variant
83
+ Dim v() As String
84
84
 
85
85
  Dim ws As Worksheet
86
86
 

1

追記

2020/08/05 06:35

投稿

mattuwan
mattuwan

スコア2136

test CHANGED
@@ -33,3 +33,117 @@
33
33
  その中で、うまくいくファイルとそうでないファイルの違いを
34
34
 
35
35
  探してみてください。
36
+
37
+
38
+
39
+ ---
40
+
41
+ 追記
42
+
43
+
44
+
45
+ Stopで止めたとき、
46
+
47
+ ローカルウィンドウの
48
+
49
+ ArrayShNameの中身を確認してください。
50
+
51
+ 変数名の左に「⁺」があると思うので、それをクリックで中身が展開できます。
52
+
53
+
54
+
55
+ とりあえず、
56
+
57
+ 新規ブックに以下のコードを記入し、
58
+
59
+ その後テストしたいファイルを開いた後、
60
+
61
+ コードを実行してみてください。
62
+
63
+
64
+
65
+ ```ExcelVBA
66
+
67
+ Option Explicit
68
+
69
+
70
+
71
+ Sub test()
72
+
73
+ Dim wb As Workbook
74
+
75
+
76
+
77
+ Set wb = Workbooks(Workbooks.Count) '最後に開いたブックの取得
78
+
79
+ If MsgBox(wb.Name & "を操作します。", vbYesNo) = vbNo Then Exit Sub
80
+
81
+
82
+
83
+ Dim v() As Variant
84
+
85
+ Dim ws As Worksheet
86
+
87
+ Dim i As Long, j as long
88
+
89
+
90
+
91
+ ReDim v(wb.Worksheets.Count)
92
+
93
+ For i = 1 to wb.Worksheets.Count
94
+
95
+ If ws.Name <> "DB" Then
96
+
97
+ v(i - 1) = ws.Name
98
+
99
+ j = j + 1
100
+
101
+ End If
102
+
103
+ Next
104
+
105
+
106
+
107
+ if j > 1 then
108
+
109
+ ReDim Preserve v(j - 1)
110
+
111
+ wb.Select
112
+
113
+ wb.Worksheets(v).Select
114
+
115
+ end if
116
+
117
+
118
+
119
+ End Sub
120
+
121
+ ```
122
+
123
+
124
+
125
+ 動作確認は、
126
+
127
+ ステップインで、一行づつ実行しながら、
128
+
129
+ ローカルウィンドウで変数の中身が意図するものになっているか
130
+
131
+ 確認しながら、最終的にはシートを選択するのですから、
132
+
133
+ 意図した結果が、画面上に反映されているか確認してください。
134
+
135
+
136
+
137
+ やみくもに、本番コードに追記していっても、
138
+
139
+ 時間がかかるばっかりかと思いますよ。
140
+
141
+ まずは、ひとつづテーマを絞って解決していって、
142
+
143
+ 自信が出来たら、本番コードに追加していってみては?
144
+
145
+
146
+
147
+ 参考>>
148
+
149
+ [プロパティ、メソッドの探り方 マクロ記録とF1のHelpを使う](http://www.ken3.org/vba/excel-help.html)