質問編集履歴

7

追記

2021/11/08 02:13

投稿

tatatace
tatatace

スコア2

test CHANGED
File without changes
test CHANGED
@@ -157,3 +157,25 @@
157
157
  あとは日付型の検索と、日付型を数式で処理しているセルの検索方法がわからないので、引き続き回答を募集します。
158
158
 
159
159
  進捗があればまた追記をおこないます。
160
+
161
+
162
+
163
+ 結論(2021/11/8 11:08)
164
+
165
+ ---
166
+
167
+ Findメソッドで日付を検索することは諦めてMatch関数を使用することで日付の検索を行なうことができました。
168
+
169
+ 「VBA Find 検索できない」などで検索してシリアル値で検索しなければいけないことやMatch関数を使用する方法のほうが簡単であることは認知していましたが、なかなかうまくいきませんでした。
170
+
171
+ 結局ベスト回答に選ばせていただいたご回答の下記のコードを参考にすることで目的を達成することができました。
172
+
173
+ ```VBA
174
+
175
+ Dim a As Long
176
+
177
+ a = Application.Match(CLng(CDate("2021年11月7日")), Range("A:A"), 0)
178
+
179
+ MsgBox a
180
+
181
+ ```

6

追記

2021/11/08 02:12

投稿

tatatace
tatatace

スコア2

test CHANGED
File without changes
test CHANGED
@@ -116,7 +116,7 @@
116
116
 
117
117
 
118
118
 
119
- 追記
119
+ 追記(2021/11/8 10:40)
120
120
 
121
121
  ---
122
122
 
@@ -124,7 +124,7 @@
124
124
 
125
125
  文字列が検索できなかった原因が判明し、文字列については検索することができました
126
126
 
127
- **文字列が検索できなかった原因はセル結合を行なっていたことが原因**でした。
127
+ **文字列が検索できなかったはセル結合を行なっていたことが原因**でした。
128
128
 
129
129
 
130
130
 

5

追記

2021/11/08 01:43

投稿

tatatace
tatatace

スコア2

test CHANGED
File without changes
test CHANGED
@@ -113,3 +113,47 @@
113
113
 
114
114
 
115
115
  なぜ上記のようなコードで検索できないのか教えてください。
116
+
117
+
118
+
119
+ 追記
120
+
121
+ ---
122
+
123
+ 一歩前進しました。
124
+
125
+ 文字列が検索できなかった原因が判明し、文字列については検索することができました
126
+
127
+ **文字列が検索できなかった原因はセル結合を行なっていたことが原因**でした。
128
+
129
+
130
+
131
+ 具体的にはセルA1からC1までを結合していました。この状態で
132
+
133
+ ```ここに言語を入力
134
+
135
+ Set a = Worksheets("Sheet1").Range("A1").find(what:="a", LookIn:=xlValues)
136
+
137
+ ```
138
+
139
+ とするとA1にaと入力されていても検索に引っかからないようです。
140
+
141
+ ```ここに言語を入力
142
+
143
+ Set a = Worksheets("Sheet1").Range("A1:C1").find(what:="a", LookIn:=xlValues)
144
+
145
+ ```
146
+
147
+ とすることで検索することができました。
148
+
149
+ 検索したい値が入力されているセルが結合されている場合、結合範囲全体を検索範囲にしないと検索に引っかからないようです。
150
+
151
+ なので同じような状態の人でセルの結合を行なっている場合は検索範囲を結合範囲と同じにしてみてください。
152
+
153
+ 検索範囲をcellsで指定した場合どういう挙動になるのかは検証していません。
154
+
155
+
156
+
157
+ あとは日付型の検索と、日付型を数式で処理しているセルの検索方法がわからないので、引き続き回答を募集します。
158
+
159
+ 進捗があればまた追記をおこないます。

4

コードの修正

2021/11/08 01:42

投稿

tatatace
tatatace

スコア2

test CHANGED
File without changes
test CHANGED
@@ -30,7 +30,7 @@
30
30
 
31
31
  Dim a As Variant
32
32
 
33
- Set a = Worksheets("Sheet1").Range("A1:A2").find(what:="2021年11月5日", LookIn:=xlValue)
33
+ Set a = Worksheets("Sheet1").Range("A1").find(what:="2021年11月5日", LookIn:=xlValue)
34
34
 
35
35
 
36
36
 

3

コードの修正

2021/11/08 00:57

投稿

tatatace
tatatace

スコア2

test CHANGED
File without changes
test CHANGED
@@ -78,7 +78,7 @@
78
78
 
79
79
  Dim a As Variant
80
80
 
81
- Set a = Range("A1").find(what:="a", LookIn:=xlValues)
81
+ Set a = Worksheets("Sheet1").Range("A1").find(what:="a", LookIn:=xlValues)
82
82
 
83
83
 
84
84
 
@@ -90,15 +90,21 @@
90
90
 
91
91
  ```
92
92
 
93
- すると日付を検索したときと同じエラーがでます。
93
+ すると以下のエラーがでます。
94
94
 
95
95
  ```エラーコード
96
96
 
97
- 実行時エラー"91":
97
+ 実行時エラー"9":
98
98
 
99
- オブジェクト変数または Withブロック変数設定されていません
99
+ インデック有効範囲にありません
100
100
 
101
101
  ```
102
+
103
+ デバックモードでaにカーソルをあわせると"a = Empty 値"と表示されます。
104
+
105
+ NotingとEmptyが別の状態であることはなんとなく認知していますが、なぜ上記二つのコードでエラーの内容が変わり、二つのコードとも検索できないのか理解できません。
106
+
107
+
102
108
 
103
109
  おそらくFindメソッドの使い方を間違っているのではないかと推測しています。
104
110
 

2

コードの修正

2021/11/08 00:56

投稿

tatatace
tatatace

スコア2

test CHANGED
File without changes
test CHANGED
@@ -74,7 +74,9 @@
74
74
 
75
75
  Sub find2()
76
76
 
77
+
78
+
77
-
79
+ Dim a As Variant
78
80
 
79
81
  Set a = Range("A1").find(what:="a", LookIn:=xlValues)
80
82
 

1

コードの修正

2021/11/08 00:49

投稿

tatatace
tatatace

スコア2

test CHANGED
File without changes
test CHANGED
@@ -76,7 +76,7 @@
76
76
 
77
77
 
78
78
 
79
- Set a = Range("A1").find(what:="2021年11月5日", LookIn:=xlValues)
79
+ Set a = Range("A1").find(what:="a", LookIn:=xlValues)
80
80
 
81
81
 
82
82