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

回答編集履歴

5

リンク先追加

2018/03/15 02:43

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -43,4 +43,8 @@
43
43
 
44
44
  [アクセスVBA講座\_ADO\_Recordsetオブジェクトの作成](http://www.geocities.jp/cbc_vbnet/ADO/recordset.html)
45
45
 
46
+ 上記のリンク先はAccess VBAなので、Excelなら、下記のほうがいいかな。
47
+
48
+ [テーブルへの接続とレコードの取得 \- 覚え書き ExcelVBAでデータベース操作](http://antonsan.net/study/excel/excel004.php)
49
+
46
50
  それでわからなければ、ConnectDB関数のコードを提示してください。ただ、やり取りが長くなったので、新規に質問しなおしたほうがいいかも知れませんね。

4

追記2

2018/03/15 02:43

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -32,4 +32,15 @@
32
32
  `SurchList` というのはフォーム上のリストボックスですか。だとしたら、
33
33
  `Me.SurchList` というように記述しましょう。そうすれば、フォーム上のコントロールだと他人にも分かります。フォーム上のコントロールなら、`Dim SurchList As Object` `Set SurchList = ○○` というコードは必要ないです。すでにフォーム上に実体が存在しているので。
34
34
 
35
- 同様に、`TextBox1.Value` も `Me.TextBox1.Value` と記述したほうが読みやすい紛れのないコードになります。
35
+ 同様に、`TextBox1.Value` も `Me.TextBox1.Value` と記述したほうが読みやすい紛れのないコードになります。
36
+
37
+ 追記2
38
+ ---
39
+ `adoRs.Open strSQL, adoCn` でエラーがでるとのことなので、`adoRs` か `adoCn` が正しく生成されていないということだと思われます。
40
+
41
+ 質問者さんの追記で「おそらくadoRsはConnectDB関数の中で操作しているはずです。」との指摘にたいして、「確認できました。」と回答してますので、そのConnectDB関数内のコードに問題があるはずです。ADOのコネクション、レコードセットに生成、開き方については、いろいろな方法がありますが、ネット検索すれば、サンプルコードが多く見つかるので、それと現状のConnectDB関数内のコードを比較して、間違いを探してください。
42
+ 例えば、下記は「ADO レコードセット 開く」でググって最初に出てくるものです。
43
+
44
+ [アクセスVBA講座\_ADO\_Recordsetオブジェクトの作成](http://www.geocities.jp/cbc_vbnet/ADO/recordset.html)
45
+
46
+ それでわからなければ、ConnectDB関数のコードを提示してください。ただ、やり取りが長くなったので、新規に質問しなおしたほうがいいかも知れませんね。

3

書式の改善

2018/03/15 02:17

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -19,7 +19,9 @@
19
19
  **指摘1**
20
20
  今回のエラーと関係ないですが、下記はあきらかに間違いです。
21
21
 
22
+ ```vba
22
23
  If strSQL Like "*" & TextBox1.Value & "*" Or strSQL Like "*" & TextBox2.Value & "*" Then '検索が一致すれば(結果をリストボックスに表示)
24
+ ```
23
25
 
24
26
  strSQL はただの文字列です。これを Likeで比較しても検索などできません。
25
27
 

2

コード追加

2018/03/14 12:15

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -28,6 +28,6 @@
28
28
 
29
29
  **指摘2**
30
30
  `SurchList` というのはフォーム上のリストボックスですか。だとしたら、
31
- `Me.SurchList` というように記述しましょう。そうすれば、フォーム上のコントロールだと他人にも分かります。フォーム上のコントロールなら、`Set SurchList = ○○` というコードは必要ないです。すでに実体が存在しているので。
31
+ `Me.SurchList` というように記述しましょう。そうすれば、フォーム上のコントロールだと他人にも分かります。フォーム上のコントロールなら、`Dim SurchList As Object` `Set SurchList = ○○` というコードは必要ないです。すでにフォーム上に実体が存在しているので。
32
32
 
33
33
  同様に、`TextBox1.Value` も `Me.TextBox1.Value` と記述したほうが読みやすい紛れのないコードになります。

1

追記の追加

2018/03/14 12:13

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -7,8 +7,27 @@
7
7
  これでエラーが発生したら、エラー箇所が黄色反転表示されるので、
8
8
  原因を特定しやすくなります。
9
9
 
10
- そして、実行してください。エラーが出たときにどの行が反転表示されるか、
10
+ そして、実行してください。エラーが出たときに**どの行が反転表示**されるか、
11
11
  提示してください。
12
- あと、正確なエラーメッセージも提示してください。
12
+ あと、**正確なエラーメッセージ**も提示してください。
13
13
 
14
- 話は、それからです。
14
+ 話は、それからです。
15
+
16
+ 追記
17
+ ---
18
+
19
+ **指摘1**
20
+ 今回のエラーと関係ないですが、下記はあきらかに間違いです。
21
+
22
+ If strSQL Like "*" & TextBox1.Value & "*" Or strSQL Like "*" & TextBox2.Value & "*" Then '検索が一致すれば(結果をリストボックスに表示)
23
+
24
+ strSQL はただの文字列です。これを Likeで比較しても検索などできません。
25
+
26
+ どのような「検索」がしたいのですか。言葉で説明してみてください。
27
+ 特に検索対象フィールドは何か、どのような条件で検索するのかを説明してください。
28
+
29
+ **指摘2**
30
+ `SurchList` というのはフォーム上のリストボックスですか。だとしたら、
31
+ `Me.SurchList` というように記述しましょう。そうすれば、フォーム上のコントロールだと他人にも分かります。フォーム上のコントロールなら、`Set SurchList = ○○` というコードは必要ないです。すでに実体が存在しているので。
32
+
33
+ 同様に、`TextBox1.Value` も `Me.TextBox1.Value` と記述したほうが読みやすい紛れのないコードになります。