ListViewコントロールの使い方、イベント一覧、エラー



ユーザーフォームのListViewコントロールについて(設定方法、用語、イベント、エラー)です。

・設定(VBE)
「その他のコントロール」にある[Microsoft ListView Control]にチェックを入れます。(「その他のコントロール」はツールバー→ツール→で辿るとあります。 ツールボックスをアクティブにした状態だとクリック出来ます。もしくはツールボックス上で右クリック)

チェックを入れるとツールボックス上にListViewのアイコンが表示されるのでそれをクリックしてフォーム内に描きます。


・ListViewプロパティ一覧はこちら


・用語等
◯アイテム(item)
ListViewに表示されているレコードのValue(左端)
◯ラベル(label)
アイテムのテキスト部分
◯OLE(Object Linking and Embedding)
アプリケーション間でのデータ共有


・イベント一覧
名前 説明
AfterLabelEdit ユーザーがラベルの値を変更した後
AfterUpdate どの更新が対応するのかわかりません…
BeforeLabelEdit ユーザーがラベルの値を変更しようとした時
BeforeUpdate どの更新が対応するのかわかりません…
Click ListView内をクリックした時
アイテムがあれば ItemClick と同じ
ColumnClick ListViewの列ヘッダーをクリックした時
DblClick ListView内をダブルクリックした時
アイテムがあればアイテムダブルクリックと同じ
Enter フォーカスがListViewに移った時
Exit フォーカスがListViewから移った時
ItemCheck ListView内のチェックボックスがにチェックが入った時
※ListViewのCheckBoxesプロパティがTrueの時のみ
ItemClick ListView内のアイテムをクリックした時
KeyDown ListViewフォーカス時にキーボードの何かキーが押された時
KeyPress ListViewフォーカス時にキーボードの文字キーが押された時
KeyUp ListViewフォーカス時に既に押されたキーが離れた時
MouseDown ListView上でMouseクリックした時
MouseMove ListView上でMouseを動かした時
MouseUp ListView上でクリックしたMouseを話した時
OLECompleteDrag OLEドラッグが完了した時
※OLEDropModeプロパティ=ccOLEDropManual時
OLEDragDrop ListView内にOLEドロップがされた時
※OLEDropModeプロパティ=ccOLEDropManual時
OLEDragOver ListView内にDrag状態でカーソルが通過した時
OLEGiveFeedback ListView内ItemをDragした時(OLEDragOverの後)
OLESetData ListView外にOLEドラッグが完了した前
OLEStartDrag (OLEDrag メソッド実行時)
ListView内ItemをDragした時


・エラー
◯「実行時エラー '35602' Key is not unique in collection」


→対処方法
一度ColumnHeaders.Add で定義した上で更に別のタイミングで.ColumnHeaders.Add をしようとした場合に起きるエラーで、一旦ListViewをClearにすればエラーはおきないはずです。
◎回避例

ListView1.ColumnHeaders.Clear



◯「はこのマシンでは利用できない為、オブジェクトを読み込めませんでした。」
→多分ですが…
ListViewを作成した環境の「MSCOMCTL.OCX」のバージョンが異なる時に発生するエラーで、ListViewコントロール設定(VBAを作成した環境)した「MSCOMCTL.OCX」のバージョンより古いバージョンの環境時にListViewを読み込んだ時に発生するようです。
Windowsのアップデートをしていなかったりするとバージョンが違うようです。

→対処方法
1.ユーザーのwindows updateを行う。
2.MSCOMCTL.OCXのレジストリ再登録する。
(管理者権限でコマンドプロンプトを開いて regsvr32 C:\Windows\System32\MSCOMCTL.OCXと入力する。)
3.新しいバージョンの「MSCOMCTL.OCX」を C:\Windows\System32\ に上書きする。
(管理者権限でコマンドプロンプトを開いて regsvr32 C:\Windows\System32\MSCOMCTL.OCXが必要かもしれないです。)

1.2,3のどちらかでうまくいきました。(実績環境はxp 32bitのみです。)

△.ユーザーのPCでListViewの設定をする。(個々に出来る場合ですが、「MSCOMCTL.OCX」のバージョンが同一のPCには有効だと思います。)

×.開発する環境のMSCOMCTL.OCXを古いバージョンに変える
→ダメでした。
因みにエラーメッセージは
「システムエラーです:&H80040111(-2147221231)Class Factoryは要求されたクラスを提供できません。」
と出たあとに OK ボタンで進むと
「メモリが不足しています。」
と出ました。