teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

4

修正

2020/08/05 10:22

投稿

mattuwan
mattuwan

スコア2167

answer CHANGED
@@ -35,27 +35,29 @@
35
35
 
36
36
  Sub test()
37
37
  Dim wb As Workbook
38
-
38
+
39
39
  Set wb = Workbooks(Workbooks.Count) '最後に開いたブックの取得
40
40
  If MsgBox(wb.Name & "を操作します。", vbYesNo) = vbNo Then Exit Sub
41
-
41
+
42
42
  Dim v() As String
43
+ Dim ws As Worksheet
43
- Dim i As Long, j as long
44
+ Dim i As Long, j As Long
44
-
45
+
45
46
  ReDim v(wb.Worksheets.Count)
46
- For i = 1 to wb.Worksheets.Count
47
+ For i = 1 To wb.Worksheets.Count
48
+ Set ws = Worksheets(i)
47
- If worksheets(i).Name <> "DB" Then
49
+ If ws.Name <> "DB" Then
48
- v(i - 1) = ws.Name
50
+ v(j) = ws.Name
49
51
  j = j + 1
50
52
  End If
51
53
  Next
52
-
54
+
53
- if j > 1 then
55
+ If j > 1 Then
54
56
  ReDim Preserve v(j - 1)
57
+ Debug.Print Join(v, ",")
55
- wb.Select
58
+ wb.Activate
56
59
  wb.Worksheets(v).Select
57
- end if
60
+ End If
58
-
59
61
  End Sub
60
62
  ```
61
63
 

3

誤字脱字修正

2020/08/05 10:22

投稿

mattuwan
mattuwan

スコア2167

answer CHANGED
@@ -40,12 +40,11 @@
40
40
  If MsgBox(wb.Name & "を操作します。", vbYesNo) = vbNo Then Exit Sub
41
41
 
42
42
  Dim v() As String
43
- Dim ws As Worksheet
44
43
  Dim i As Long, j as long
45
44
 
46
45
  ReDim v(wb.Worksheets.Count)
47
46
  For i = 1 to wb.Worksheets.Count
48
- If ws.Name <> "DB" Then
47
+ If worksheets(i).Name <> "DB" Then
49
48
  v(i - 1) = ws.Name
50
49
  j = j + 1
51
50
  End If

2

修正

2020/08/05 07:39

投稿

mattuwan
mattuwan

スコア2167

answer CHANGED
@@ -39,7 +39,7 @@
39
39
  Set wb = Workbooks(Workbooks.Count) '最後に開いたブックの取得
40
40
  If MsgBox(wb.Name & "を操作します。", vbYesNo) = vbNo Then Exit Sub
41
41
 
42
- Dim v() As Variant
42
+ Dim v() As String
43
43
  Dim ws As Worksheet
44
44
  Dim i As Long, j as long
45
45
 

1

追記

2020/08/05 06:35

投稿

mattuwan
mattuwan

スコア2167

answer CHANGED
@@ -15,4 +15,61 @@
15
15
  上手くいきそうなら3つで試す。
16
16
  その後は10個でやってみる。
17
17
  その中で、うまくいくファイルとそうでないファイルの違いを
18
- 探してみてください。
18
+ 探してみてください。
19
+
20
+ ---
21
+ 追記
22
+
23
+ Stopで止めたとき、
24
+ ローカルウィンドウの
25
+ ArrayShNameの中身を確認してください。
26
+ 変数名の左に「⁺」があると思うので、それをクリックで中身が展開できます。
27
+
28
+ とりあえず、
29
+ 新規ブックに以下のコードを記入し、
30
+ その後テストしたいファイルを開いた後、
31
+ コードを実行してみてください。
32
+
33
+ ```ExcelVBA
34
+ Option Explicit
35
+
36
+ Sub test()
37
+ Dim wb As Workbook
38
+
39
+ Set wb = Workbooks(Workbooks.Count) '最後に開いたブックの取得
40
+ If MsgBox(wb.Name & "を操作します。", vbYesNo) = vbNo Then Exit Sub
41
+
42
+ Dim v() As Variant
43
+ Dim ws As Worksheet
44
+ Dim i As Long, j as long
45
+
46
+ ReDim v(wb.Worksheets.Count)
47
+ For i = 1 to wb.Worksheets.Count
48
+ If ws.Name <> "DB" Then
49
+ v(i - 1) = ws.Name
50
+ j = j + 1
51
+ End If
52
+ Next
53
+
54
+ if j > 1 then
55
+ ReDim Preserve v(j - 1)
56
+ wb.Select
57
+ wb.Worksheets(v).Select
58
+ end if
59
+
60
+ End Sub
61
+ ```
62
+
63
+ 動作確認は、
64
+ ステップインで、一行づつ実行しながら、
65
+ ローカルウィンドウで変数の中身が意図するものになっているか
66
+ 確認しながら、最終的にはシートを選択するのですから、
67
+ 意図した結果が、画面上に反映されているか確認してください。
68
+
69
+ やみくもに、本番コードに追記していっても、
70
+ 時間がかかるばっかりかと思いますよ。
71
+ まずは、ひとつづテーマを絞って解決していって、
72
+ 自信が出来たら、本番コードに追加していってみては?
73
+
74
+ 参考>>
75
+ [プロパティ、メソッドの探り方 マクロ記録とF1のHelpを使う](http://www.ken3.org/vba/excel-help.html)