Excelにて「Microsoft Listview Control 6.0」を使っていたのですが、
突然、表示できない状況になりました。
修復させる方法はあるのでしょうか?

また、最悪の場合、普通のListで作成し直したいのですが、
その際に、Listview他のコントロールを再利用したいので、
Listviewをフォームを表示させないで削除する方法はあるのでしょうか?
それとも、他のコントロールも作り直すしかないのでしょうか?

よろしく、お願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

原因究明は、質問のような書き振りからでは、読者に手がかりも無く、難しいと思う。

そんなに頻用されているコントロールでもなく、原因を答えられる人は、この質問コーナーでは出てこないかもしれない。
そこで、新たにこのコントロールと、その中にセットする明細を作る事を考えてはどうでしょう。
質問のListViewはVBAで質問者が作成したものですか。他の人が作りましたか。
(1)明細が沢山あって手動では設定が面倒
(2)明細はエクセルのシートなどに残っていますか。
(3)明細は残っておらず、記憶では覚えていない
(4)シートに明細がないなら、シートに明細データを再現できますか。
>他のコントロールも作り直すしかないのでしょうか
他にも沢山のコントロールを貼り付けていたのですか。
ーー
全般に、この質問は情況の説明不足です。質問しているというよりも、質問者のつぶやきに聞こえます。
質問内容を補足しては。
ーー
http://officetanaka.net/excel/vba/listview/04.htm
に明細の設定などのコードが載っています。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QMSCOMCTL.OCXのアップデートの方法

Excel VBAを使っていて
ListviewなどのMSCOMCTL.OCXに依存した
コントロールを使っている場合
MSCOMCTL.OCXに上位互換性がないため、
VBAを含むxlsmファイルを作成したPCとは異なるPCで
そのプログラムを使用するためには
使うPCごとにMSCOMCTL.OCXをアップデートする必要があります。

http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1198163781

詳細はこのページに書かれてあります。

疑問は、いま、自分が使っているMSCOMCTL.OCXのバージョンが2012年のものなのですが
Windows10にアップグレードするなどした場合に
MSCOMCTL.OCXをアップグレードする必要がありますが
VBAは正常に動作するのでしょうか?

MSCOMCTL.OCXには下位互換性があるのでしょうか?

もし動作しないとして、
一つずつListviewを削除して新規作成するという作業を行う必要があるのでしょうか?
自動更新できる方法があれば教えてください。

Excel VBAを使っていて
ListviewなどのMSCOMCTL.OCXに依存した
コントロールを使っている場合
MSCOMCTL.OCXに上位互換性がないため、
VBAを含むxlsmファイルを作成したPCとは異なるPCで
そのプログラムを使用するためには
使うPCごとにMSCOMCTL.OCXをアップデートする必要があります。

http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1198163781

詳細はこのページに書かれてあります。

疑問は、いま、自分が使っているMSCOMCTL.OCXのバージョンが2012年のものなのですが
Windows10に...続きを読む

Aベストアンサー

>Win10 PCで作成したVBAをWin7 PCにコピーして使用するためには、
>「~7.0(SP6)(仮称)」にチェックを入れる必要があるはずです。
その場合にはWin7PCではMicrosoft ListView Control 6.0(SP4)にチェックを入れなおせば
まず問題ないはずです。
ちなみに当方のWin7 Office2010 のMicrosoft ListView Controlの実体ファイルの
製品バージョンは6.01.9839
Win10 Office2016(プレビュー版)のmscomctl.ocxのバージョンも同一でした。
単純なテストですが、2016 → 2010 では問題なかったです
VBAはよく言えば枯れた状態ですので大々的なアップデートは無いでしょう。
あったとしたらMicrosoft ActiveX Data Object x.x Libraryと同様
Microsoft ListView Control 6.0・・・
Microsoft ListView Control 7.0・・・
のように複数バージョンが並行して登録されるとおもいます。

>オフィスを常にアップデートして最新の状態にしておく必要があるということでしょうか?
大多数の人は更新プログラムを自動的にインストールする設定にしたままだと思います。
最新にというかリビジョンを合わせた方がつまらないトラブルにならないと思います。
ただ、近年のアップデートは地雷が多すぎて何とも言えなくなりました。。。

>Win10 PCで作成したVBAをWin7 PCにコピーして使用するためには、
>「~7.0(SP6)(仮称)」にチェックを入れる必要があるはずです。
その場合にはWin7PCではMicrosoft ListView Control 6.0(SP4)にチェックを入れなおせば
まず問題ないはずです。
ちなみに当方のWin7 Office2010 のMicrosoft ListView Controlの実体ファイルの
製品バージョンは6.01.9839
Win10 Office2016(プレビュー版)のmscomctl.ocxのバージョンも同一でした。
単純なテストですが、2016 → 2010 では問題なかったです
VBAはよく言えば枯れた状...続きを読む

QListViewから選択中の文字列を取得

VB2005の初心者です。
タイトル通り、ListViewから選択中の文字列によって処理を変えるプログラムを構築しようとしているのですが、うまくいきません。

ComboBoxの場合では
Private Sub button1_Click~
If ComboBox1.SelectedItem = "テスト" Then
処理
End if

でうまくいったのですが、ListViewの場合では
Private Sub button1_Click~
If ListView1.SelectedItems = "テスト" Then
処理
End if

と指定すると
「エラー1これらの引数で呼び出される、アクセス可能な '=' がないため、オーバーロードの解決に失敗しました」
とエラーがでます。


ListViewから選択中の文字列を取得するには「.SelectedItems」では取得できないのでしょうか?
VBに詳しい方ご教授お願いします。

Aベストアンサー

ComboBoxはSelectedItemと単数形ですよね
ListViewの場合SelectedItemsですから選択された複数の項目といったことになります

SelectedItemsはコレクションになるので 最初の選択項目なら
ListView1.SelectedItems(0)となりますので

if ListView1.SelectedItems(0).Text = "テスト" Then
といった具合に使います

もっとも選択アイテムない場合も考えられるので上記の前に
If ListView1.SelectedItems.Count = 0 then
  Exit Sub
End if
を追加したほうがいいかもしれません

QExcelVBA でリストリストボックスに列見出しをコーディングでつける

エクセルVBAのフォームにリストボックスを作り、データーベースから読み出したデータを表示させています。

この時、各列にテーブル名とはちがう列名をつけたいのですが、シートに記述するのではなく、コーディングでつける事は出来ませんか?

ControlTipTextに「test1;test;test3;」と指定してみたりしましたが、駄目でした。

どなたかご教授、あるいは出来ません、シートに隠しか方法はありません、と全否定をしてください。

Aベストアンサー

Wendy02 です。配列で入れる方法を考えてみましたが、できませんでした。

結局、他の方法としては、ListBox の 上に、白のLabel をそれぞれのColumnにあわせて、表示するぐらいしか、思いつきません。(これは、論外でしょうね)

列見出し(フィールド)は、もともと、Excelのワークシートの、データベース用の仕様のひとつだから、Rangeオブジェクトでしか、ListBox の Header に入れることは、出来ないようです。

QVB上で実行中の無限ループの止め方

今まで、CUIベースのBASICでのプログラムの経験はあるのですが
Visual系のBASICは初心者です。
原因はわかっているのでプログラムの修正はできるのですが
VB上でコンパイルして実行したときに無限ループに陥ってしまって
どうにもプログラムをとめられなくなります。
そんなことがないように、実行前に全てのプロジェクトを保存して
いますので、そんなに実害はないのですが、どうすればとめられるのでしょう・・
今現在は、タスクマネージャーから強制終了させています。

Aベストアンサー

無限ループの一番内側に
DoEvents
を入れておくと、ウィンドウ切替え->デバッガ終了操作が出来ますよ

危なそうなとこにも入れておくと、何かと安心です。

Qエクセル VBA ユーザーフォームを閉じる

ユーザーフォームを開く時は
UserForm1.Showですが
閉じる時は?
UserForm1.Close
だとコンパイルエラーになります。
End
にするしかないですか?

Aベストアンサー

Unload Me とか Unload UserForm1 でユーザーフォームを閉じることができます。

QExcel VBA ListViewサブアイテムの文字色

Excel VBA ListViewにおいて、特定の行のサブアイテム(2列目以降)の文字色を変更することは可能でしょうか?

Aベストアンサー

ListView1.ListItems(?).ListSubItems(?).ForeColor = RGB(?,?,?)
と言う形では

QEXCEL VBA リストビューの項目編集

質問させさせていただきます。
EXCEL VBAで、フォーム上にEcxelシートのような表形式のコントロールを貼り付けて、編集したいと考えています。
調べたら、見た目はリストビューが良かったのですが、2列目以降が選択できないとの事なので、
他にグリッド系コントロール(無料)で良いものがあったら教えていただきたいと思います。
また、リストビューを使った場合でも、何か案があれば助言いただきたいと思います。
リストビューに期待しただけに、ショックは大きいです・・・

Aベストアンサー

>..それと余談なのですが、スプレッドに限らず2003で作ったマクロは、
>問題なく2007で動くのでしょうか?

下位バージョン互換を考慮されている機能は動きます。
ですがやはりCommandbar関連など、仕様が大きく変わった部分や
FileSearchオブジェクトなどのように、消えた機能を使ってると動きません。
http://www.asahi-net.or.jp/~ef2o-inue/kankyo/sub02_04_04.html
http://office.microsoft.com/ja-jp/excel-help/HA010198895.aspx
http://technet.microsoft.com/ja-jp/library/cc179188%28office.12%29.aspx
http://msdn.microsoft.com/en-us/library/bb242669%28office.12%29.aspx

QListViewでのリスト表示(初歩的な質問です)

WinXP Pro VB6.0で開発を行っています。
現在、ドラッグ&ドロップにより、ListViewでファイルのパスをリスト表示するプログラムを作成しています。
ListBoxではなくListViewを利用する理由は、パスの長さに合わせてスクロールバーを表示したいためです。
そこで、ドラッグ&ドロップイベントでファイルのパスを取得することは出来たのですが、単純なリスト表示ができません。

ListView1.ListItems.Add(, , tmpPath)

でパスを追加しているのですが、プロパティの設定がよく分からずうまく表示できません。
Viewを2-lvwLstに変更し、何となく表示はしているのですが2列表示になり、縦のスクロールバーが表示されません。
なお、表示の際、ヘッダ部分は必要ありません。
また、パスのみの表示であるため、一項目の表示です。

プロパティの設定例を教えていただけませんか?

非常に初歩的な質問ですがよろしくお願いします。

Aベストアンサー

まずコントロールのプロパティページで、ViewをlvwReportにします。
それと"列見出しを非表示"にチェックを入れます。


コード中で列を1列分作成します。コントロールのプロパティページで、"列見出しの追加"でも良いです。
その列の幅をListViewのコントロール幅に適宜合わせます。
あとはマウス操作のイベントで、アイテム追加でパスを入れていきます。

ただしこの場合、列を1列のみで使用することになるので、リストの内容の配置が左寄せ固定になります。
もし配置等で自由度を求めるのであれば、列を2列にして1列目の幅を極小&空文字にして、2列目に
目的の文字を入れていけば良いかと・・・。試したわけではないですが。

QListViewで、非表示列って作れますか?

VB6.0です。

一覧にListViewを使用しているのですが、
非表示にしたい列があるのですが、出来ませんか?
列幅は可変としているので、列幅を0にしておく方法は使えません。

一覧には見せないけど、更新項目なので、
いちいちもう1度読み直すのは面倒なので、非表示で持っていたいのですが…。
何か方法ありますか?

Aベストアンサー

どんな感じで ListView にアイテムを追加してるのか分かりませんが、
見せたくない項目をキーにしてしまうとか? キーが重複しそうなら連番
でも仮につけとけば良いし。

With ListView1.ListItems.Add
  .Key = strKey & Chr(0) & Cstr(lngItemCnt)
  .Text = strText
  .SubItems(1) = strSub1Text
  .SubItems(2) = strSub2Text
  .SubItems(3) = strSub3Text
End With

このようにして、

Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem)

  MsgBox Left$(Item.Key, InStr(Item.Key, Chr(0)) - 1)

End Sub

こんな感じで非表示にしたい項目を拾うのは?

> ただし、SORT機能をつけた場合、ずれますよね。

その通りですが、それが問題になりそうですか?

並びが気になるならソートしたときに非表示の ListView も同時に同項目で
ソートすれば良いだけだし、そもそも配列も非表示の ListView は並び変え
は必要ないと思いますよ。

表示されている ListView の ItemClick イベントなどで Key または Text
は拾えるので、あとはそれを配列や 非表示 ListView から探すだけでは?

表示されていないものに並びは関係ないと思いますが、いかかでしょう?

ただ、こっちの方法は効率悪いですね(´・ω・`)

どんな感じで ListView にアイテムを追加してるのか分かりませんが、
見せたくない項目をキーにしてしまうとか? キーが重複しそうなら連番
でも仮につけとけば良いし。

With ListView1.ListItems.Add
  .Key = strKey & Chr(0) & Cstr(lngItemCnt)
  .Text = strText
  .SubItems(1) = strSub1Text
  .SubItems(2) = strSub2Text
  .SubItems(3) = strSub3Text
End With

このようにして、

Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem)

  MsgBox Left$(...続きを読む

Qcheckbox付きListViewで デフォルトチェック

チェックボックス付きのListViewコントロールで初期値としてチェックボックスにチェック
をして表示したいと思っております。

Listviewにデータを追加して(subitemもあるため)その後
ListView1.Item(i).Selected = True
をしているのですが、チェックして表示されません。

項目が表示された後、何れかの項目をチェックしようとするとチェックが表示されます。

どのようにすれば最初から表示されるのでしょうか?

初歩的な質問かもしれませんが、お願い致します。

Aベストアンサー

Selectedではなく CheckedプロパティをTrueに設定しましょう

ListView1.Item(i).Checked = True
といった具合です


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報