ユーザーフォームの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 ボタンで進むと
「メモリが不足しています。」
と出ました。