ユーザーフォームのListViewコントロールについて(設定方法、用語、イベント、エラー)です。
・設定(VBE)
「その他のコントロール」にある[Microsoft ListView Control]にチェックを入れます。(「その他のコントロール」はツールバー→ツール→で辿るとあります。 ツールボックスをアクティブにした状態だとクリック出来ます。もしくはツールボックス上で右クリック)
チェックを入れるとツールボックス上にListViewのアイコンが表示されるのでそれをクリックしてフォーム内に描きます。
・ListViewプロパティ一覧はこちら
・用語等
◯アイテム(item)
ListViewに表示されているレコードのValue(左端)
◯ラベル(label)
アイテムのテキスト部分
◯OLE(Object Linking and Embedding)
アプリケーション間でのデータ共有
・イベント一覧
・エラー
◯「実行時エラー '35602' Key is not unique in collection」
→対処方法
一度ColumnHeaders.Add で定義した上で更に別のタイミングで.ColumnHeaders.Add をしようとした場合に起きるエラーで、一旦ListViewをClearにすればエラーはおきないはずです。
・設定(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には有効だと思います。)
×.
→ダメでした。
因みにエラーメッセージは
「システムエラーです:&H80040111(-2147221231)Class Factoryは要求されたクラスを提供できません。」
と出たあとに OK ボタンで進むと
「メモリが不足しています。」
と出ました。