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

回答編集履歴

2

コード追加

2021/12/21 04:10

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -36,4 +36,12 @@
36
36
  End If
37
37
  Next
38
38
  End Sub
39
+ ```
40
+
41
+ ちなみに、
42
+ ```vba
43
+ sh1.Cells(R1, "E") = Left(Mid(rngSearch, InStr(rngSearch, "【") + 1), InStr(Mid(rngSearch, InStr(rngSearch, "【") + 1), "】") - 1)
44
+ ```の部分は、下記のように簡略化できます。
45
+ ```vba
46
+ sh1.Cells(R1, "E") = Split(Split(rngSearch, "【")(1), "】")(0)
39
47
  ```

1

コード追加

2021/12/21 04:10

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -4,4 +4,36 @@
4
4
  Set rngSearch = myRange.Find(What:="*【*】*", LookAt:=xlWhole, SearchOrder:=xlByColumns)
5
5
  ```
6
6
 
7
- [ワイルドカードを使って検索(Find メソッド) \| ExcelWork.info](https://excelwork.info/excel/findwildcard/)
7
+ [ワイルドカードを使って検索(Find メソッド) \| ExcelWork.info](https://excelwork.info/excel/findwildcard/)
8
+
9
+ 上記以外にも、いろいろ間違っていたり、余分なコードがあるので、修正しました。
10
+ 修正箇所が多いので、いちいち解説するのは大変なのて、もとコードと見比べて、どこが違っているかご自身で研究してください。
11
+
12
+ ```vba
13
+ Sub test()
14
+ Dim sh1 As Worksheet
15
+ Dim rngSearch As Range
16
+ Dim myRange As Range
17
+ Dim strAdr As String
18
+ Dim s As Variant
19
+ Dim R1 As Long, R2 As Long
20
+ On Error Resume Next
21
+ Set sh1 = Worksheets("Sheet1")
22
+ R1 = sh1.Cells(Rows.Count, "E").End(xlUp).Row + 1
23
+ For Each s In ThisWorkbook.Worksheets
24
+ If s.Name <> "Sheet1" Then
25
+ R2 = s.Cells(Rows.Count, "B").End(xlUp).Row
26
+ Set myRange = s.Range(s.Cells(1, "B"), s.Cells(R2, "B"))
27
+ Set rngSearch = myRange.Find(What:="*【*】*", LookAt:=xlWhole, SearchOrder:=xlByColumns)
28
+ If Not rngSearch Is Nothing Then
29
+ strAdr = rngSearch.Address
30
+ Do
31
+ sh1.Cells(R1, "E") = Left(Mid(rngSearch, InStr(rngSearch, "【") + 1), InStr(Mid(rngSearch, InStr(rngSearch, "【") + 1), "】") - 1)
32
+ R1 = R1 + 1
33
+ Set rngSearch = myRange.FindNext(rngSearch)
34
+ Loop While rngSearch.Address <> strAdr
35
+ End If
36
+ End If
37
+ Next
38
+ End Sub
39
+ ```