Excel2000のVBAで、フォーム上のリストボックスに、ADO経由でSQLサーバーからデーターを読み込もうとしています。
これを実行すると、NULLの項目をリストボックスにセットしようとしたところで、
-----------------------------------------------
実行時エラー'-2147352571(80020005)':
Listプロパティを設定できません。種類が一致しません。
-----------------------------------------------
と、エラーになります。
「-2147352571」をネット検索しても判明せず、OnErrorステートメントでしのいでいても、釈然としません。
どなたか、このエラーの回避方法、もしくはこのエラーの詳細をご教授頂けませんでしょうか?
No.1ベストアンサー
- 回答日時:
その部分のソースがどうなっているか分かりかねますが、
ユーザーフォームにリストボックスを1つ貼り付けて以下の記述をしたら再現しました。
Private Sub UserForm_Initialize()
ListBox1.AddItem ""
ListBox1.List(0) = Null
End Sub
で、回避策は
Private Sub UserForm_Initialize()
ListBox1.AddItem ""
ListBox1.List(0) = Null & "" '←""と連結して文字列化。
End Sub
リストボックスに使えるのは文字列なので、Nullを入れると型が合わずエラーになります。
SQLサーバからのデータが何であれ、
「 & ""」を付けておけばいつもエラーにはならずに済むでしょう。
ただし、Nullの場合は空文字がリストボックスに入る事になりますがそれで良いのでしょうか?
ご回答ありがとうございます。
ADOでDBから読み込んで(dbCols)次のような記述をしてます。
Me.ListBox1.ColumnCount = 7 '列数
' 必要項目を選択してセルにセット
Set dbCols = dbRes.Fields
Me.ListBox1.AddItem dbCols("ofce").Value
'.Listで該当列にデータをセット
Me.ListBox1.List(setY, 1) = dbCols("padr1").Value
Me.ListBox1.List(setY, 2) = dbCols("padr2").Value
・・・
リストボックスにNULLを入れられない点をお明確にしたかったことが今回の目的でした。(スミマセン、基礎的な勉強もせず作ってます)
店舗名称に対して、補助的な情報として住所を表示したい、ただDBには入力されていない場合もあるので、その場合は空白、と言うことですので、アドバイス通りの対処で問題ありません。
ありがとうございました。
No.2
- 回答日時:
下記は十分判って無い者の発言と言うことでお許し下さい。
#1のご回答のように(似た表現)
Private Sub UserForm_Initialize()
a = Null
ListBox1.AddItem a
End Sub
はご質問のエラーに成りました。
しかし、質問のケースでは
(A)ファイルデータからデータを読み、ある項目(フィールド)をAddItemでリストにセットしようとしているのでしょうか。であればその時のファイルから読みこんでメモリへデータを受けたとき、そのフィールドの変数の値はどうなっているのでしょうか。Nullと言う値なのでしょうか。
であればIsNull関数で(IF文などで)聞いて、回避し、リストボックスのアイテムにセットしない方法や別のスペースでもセットすれば良いのではないでしょうか。
データ値の内容がNullと断定した根拠はなんでしょうか。
---
(IsNullのヘルプ抜粋)
Null 値は、バリアント型 (Variant) に有効なデータが入っていないことを示す値であり、変数が初期化されていないことを示す Empty 値や、Null 文字列と呼ばれる長さが 0 の文字列 ("") とは異なります。
----
参考 Nullについて
http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd …
「特にデータベースのレコード項目などで Null 項目が発生しやすい。この場合の Null 項目を参照しようなどとすると VB では例外エラーが発生する」
その次に「if IsNull(rs("数量")) then・・・」の例が
上がっている。
----
http://park18.wakwak.com/~greenspace/dev-api/the …
vbNullChar:一般的なNULL文字(キャラクターコード0)を表す定数。
vbNullString:C/C++での空文字列(長さ0、NULLのみ)を表す定数。
vbNull:変数の型を調べる、VarType関数の戻り値のひとつ。バリアント型に格納されている型が無い場合に、この値が返される。
これは整数型の定数で、値は整数の1になる。
----
(B)または「フォーム上のリストボックスに、ADO経由でSQLサーバーからデーターを読み込もうとしています。」は
質問の枕言葉で、関係なく、「=Null」を代入しようとしているなら、最終結果として、リストアイテムの状態としては、何がしたいのでしょうか。
----
Private Sub UserForm_Initialize()
For i = 1 To 5
UserForm1.ListBox1.AddItem Cells(i, "A")
Next i
' Cells(6, "A") = vbNull
UserForm1.ListBox1.AddItem vbNull 'Cells(6, "A")
UserForm1.ListBox1.AddItem ""
'UserForm1.ListBox1.RemoveItem 4
End Sub
はエラーになりませんでした。
----
何かNullの(文法的な)使い方の問題か、データベースソフトのフィールド変数へのセットする値の問題と思うのですが、浅学のため十分結論が言えないで済みません。
回答ありがとうございます。
データーがnullと判断した根拠は、デバッグモードで変数をマウスオーバーしたときに表示されていたことと、Onerrorステートメントでデーターを表示させたときの内容です。
店舗の情報をリストから選んでシートに挿入と言うことをしたく、ただすべての項目(郵便番号や住所、電話番号)が入力されてはいないので、されていない場合はnullのままで出力したかったのです。
リストボックスでNULLが扱えないことがはっきりさせたかったので、今回の質問をしました。
ありがとうございました
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) access フォーム 大分類、小分類 1 2022/08/11 18:03
- PostgreSQL DBFluteについて質問です。 環境:PostgreSQL java8 前提:webアプリケーショ 1 2022/07/07 00:49
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- Access(アクセス) アクセス テーブルの空白を変数に置換するボタンが作りたい 4 2022/07/08 11:19
- オープンソース Python openpyxlを使用したセル番地の使用について 1 2023/08/03 22:05
- Visual Basic(VBA) DisplayAlertsブロパティで ”実行時エラー424オブジェクトが必要です” 5 2022/05/15 18:02
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Excel(エクセル) EXCELの外部データ取得ができない 1 2023/03/23 09:03
- Access(アクセス) アクセス 削除するレコードを含んだテーブルを指定してくださいのエラー対処方法 1 2022/11/24 15:01
- 大学・短大 C言語線形リストの問題です 3 2022/12/22 00:45
このQ&Aを見た人はこんなQ&Aも見ています
-
外出時に「待たせる妻」vs イライラする「待つ夫」は日本だけ?見習いたい海外事情
夫の家事参加に積極的なイメージのある海外でも、同様の事例はあるのか。結婚カウンセラーの佐竹悦子さんに伺ってみた。
-
EXCEL2013 VBA ListBox 未選択
Excel(エクセル)
-
ListView 項目の選択/選択解除について
Visual Basic(VBA)
-
エクセルVBAでフォームのListboxをスクロールするには?
その他(Microsoft Office)
-
-
4
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
5
Excel vba ListBoxについて
Excel(エクセル)
-
6
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
7
エクセルVBA テキストボックスに3桁ごとにコンマ
Visual Basic(VBA)
-
8
VBAで空白行を削除する
Excel(エクセル)
-
9
VBA 変数名に変数を使用したい。
Visual Basic(VBA)
-
10
Excel VBAのリストボックスの値を他のフォームに反映させる方法を教えてください。
Visual Basic(VBA)
-
11
ExcelVBA でリストリストボックスに列見出しをコーディングでつける
Excel(エクセル)
-
12
VBAでループ内で使う変数名を可変にできないか。
Visual Basic(VBA)
-
13
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
14
Excel VBA ユーザーフォームのリストボックスにRecordSetの値を入れた際のラベル行
Visual Basic(VBA)
-
15
エクセルVBAで複数選択できるように設定したリストボックスの、選択され
Visual Basic(VBA)
-
16
複数選択のListBoxでClickイベントが拾えません
Visual Basic(VBA)
-
17
リストボックスの特定行の背景色
Visual Basic(VBA)
-
18
ListViewから選択中の文字列を取得
Visual Basic(VBA)
-
19
テキストボックスのvalueとtextの違い
Visual Basic(VBA)
-
20
vba listviewにおけるtextのAlingmentを中央にしたい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
首吊りどこ締めるの
-
至急!尿検査前日にオナニーし...
-
尿検査前日に自慰行為した時の...
-
白血球が多いとどんな心配があ...
-
尿検査の前日は自慰控えたほう...
-
検便についてです。 便は取れた...
-
彼女のことが好きすぎて彼女の...
-
勃起する時って痛いんですか? ...
-
EXCELで条件付き書式で空白セル...
-
腕を見たら黄色くなってる部分...
-
EXCELで式からグラフを描くには?
-
変な話しになります。尿検査で...
-
excelでsin二乗のやり方を教え...
-
エクセル指定した範囲からラン...
-
Excelで""で囲む方法
-
ある範囲のセルから任意の値を...
-
2つの数値のうち、数値が小さい...
-
精子が黄色?
-
エクセルでエラーが出て困って...
-
納豆食べた後の尿の納豆臭は何故?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
至急!尿検査前日にオナニーし...
-
首吊りどこ締めるの
-
尿検査の前日は自慰控えたほう...
-
尿検査前日に自慰行為した時の...
-
検便についてです。 便は取れた...
-
白血球が多いとどんな心配があ...
-
中出しをするとお腹が痛い・・・。
-
射精をして1週間以内に尿検査を...
-
彼女のことが好きすぎて彼女の...
-
腕を見たら黄色くなってる部分...
-
勃起する時って痛いんですか? ...
-
変な話しになります。尿検査で...
-
これって喉仏ですか? 私は女性...
-
EXCELで条件付き書式で空白セル...
-
男です。昨日の午後3時くらいに...
-
今朝、毎朝の習慣でオナニーし...
-
納豆食べた後の尿の納豆臭は何故?
-
1日前の検尿
-
値が入っているときだけ計算結...
-
精子が黄色?
おすすめ情報