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

回答編集履歴

1

コード追記

2021/10/19 01:51

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -11,4 +11,44 @@
11
11
 
12
12
  最終手段をは検索範囲を配列にいれて、配列を対象にループさせます。
13
13
  これで劇的に改善します。
14
- これも「VBA 高速化 配列」をキーワードに検索すればサンプルコードはいろいろ見つかります。
14
+ これも「VBA 高速化 配列」をキーワードに検索すればサンプルコードはいろいろ見つかります。
15
+
16
+ ---
17
+
18
+ 上記を踏まえて、
19
+ 自分が書くなら下記のような感じになります。
20
+
21
+ ```vba
22
+ Sub 実行()
23
+ Application.ScreenUpdating = False
24
+ Application.Calculation = xlCalculationManual
25
+
26
+ Dim aryTar '検索対象を格納する配列
27
+ aryTar = Worksheets("文書一覧").UsedRange.Value
28
+
29
+ '検索文字の取得
30
+ Dim dm As String
31
+ dm = InputBox("検索したい文字を入力してください")
32
+
33
+ Dim aryRes() '結果格納配列
34
+ Dim cnt As Long '検索結果数格納用
35
+
36
+ Dim buf
37
+ For Each buf In aryTar
38
+ If InStr(buf, dm) > 0 Then
39
+ ReDim Preserve aryRes(cnt)
40
+ aryRes(cnt) = buf
41
+ cnt = cnt + 1
42
+ End If
43
+ Next
44
+
45
+ With Worksheets("Sheet2")
46
+ .Cells.Clear
47
+ .Cells(1, 1).Resize(cnt).Value = _
48
+ WorksheetFunction.Transpose(aryRes)
49
+ End With
50
+
51
+ Application.Calculation = xlCalculationAutomatic
52
+ Application.ScreenUpdating = True
53
+ End Sub
54
+ ```