回答編集履歴

1

コード追記

2021/10/19 01:51

投稿

hatena19
hatena19

スコア33742

test CHANGED
@@ -25,3 +25,83 @@
25
25
  これで劇的に改善します。
26
26
 
27
27
  これも「VBA 高速化 配列」をキーワードに検索すればサンプルコードはいろいろ見つかります。
28
+
29
+
30
+
31
+ ---
32
+
33
+
34
+
35
+ 上記を踏まえて、
36
+
37
+ 自分が書くなら下記のような感じになります。
38
+
39
+
40
+
41
+ ```vba
42
+
43
+ Sub 実行()
44
+
45
+ Application.ScreenUpdating = False
46
+
47
+ Application.Calculation = xlCalculationManual
48
+
49
+
50
+
51
+ Dim aryTar '検索対象を格納する配列
52
+
53
+ aryTar = Worksheets("文書一覧").UsedRange.Value
54
+
55
+
56
+
57
+ '検索文字の取得
58
+
59
+ Dim dm As String
60
+
61
+ dm = InputBox("検索したい文字を入力してください")
62
+
63
+
64
+
65
+ Dim aryRes() '結果格納配列
66
+
67
+ Dim cnt As Long '検索結果数格納用
68
+
69
+
70
+
71
+ Dim buf
72
+
73
+ For Each buf In aryTar
74
+
75
+ If InStr(buf, dm) > 0 Then
76
+
77
+ ReDim Preserve aryRes(cnt)
78
+
79
+ aryRes(cnt) = buf
80
+
81
+ cnt = cnt + 1
82
+
83
+ End If
84
+
85
+ Next
86
+
87
+
88
+
89
+ With Worksheets("Sheet2")
90
+
91
+ .Cells.Clear
92
+
93
+ .Cells(1, 1).Resize(cnt).Value = _
94
+
95
+ WorksheetFunction.Transpose(aryRes)
96
+
97
+ End With
98
+
99
+
100
+
101
+ Application.Calculation = xlCalculationAutomatic
102
+
103
+ Application.ScreenUpdating = True
104
+
105
+ End Sub
106
+
107
+ ```