ListViewで選択された複数のアイテムの値の取得方法と複数選択された項目を一度に削除する方法を教えてください。

A 回答 (1件)

サンプルです。


一度に取得はムリなので、ループを使用します。

  Dim itmLvw As ListItem
  Dim i    As Long
  
  '選択されているアイテムの情報を調査
  For Each itmLvw In ListView1.ListItems
    If itmLvw.Selected Then
      Debug.Print itmLvw.Index & "番目が選択されています"
    End If
  Next itmLvw
  
  'リストの後ろの方から、選択されているアイテムを削除
  For i = ListView1.ListItems.Count To 1 Step -1
    Set itmLvw = ListView1.ListItems(i)
    If itmLvw.Selected Then
      ListView1.ListItems.Remove itmLvw.Index
    End If
  Next i
    • good
    • 1
この回答へのお礼

ListViewはドキュメントが少なく苦労していました。本当にたすかりました。
ありがとうございました!!

お礼日時:2002/02/22 17:23

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

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

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

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

Qエクセルのフリーズ

ノートパソコンでエクセル2003を使用しているとしょっちゅう画面がフリーズしてしまいます。
フリーズ時間は最大で5秒間程で、頻度は5秒~15秒くらいに一回とかなり頻繁です。(普通のA4サイズの書類を作るのに1時間ほど掛かります)
状態としてはフリーズ中はカーソルも止まってしまい、でもその間に入力した文字等は記憶しているらしく、フリーズが解けた瞬間一気に打ち出されるような感じです。
エクセル以外は何の問題もなく、またそのエクセルのファイルを同ネットワーク上にある他のパソコンで操作しても何の問題もないので、自分のパソコンの中のエクセル本体が壊れているかのような状態です。
どなたか助けていただけないでしょうか?
ちなみにこの現象は突然起きるようになりました。

Aベストアンサー

ソフトの不具合が原因です。再インストールをお勧めします。

QListView 項目の選択/選択解除について

 ListViewに表示する情報が1件しかないとき、その情報が常に選択された状態なので、
困っています。

 1件しかなくても、選択したり、選択を解除したりすることは出来ないのでしょうか?

 または、ListViewでは出来ないけど、他のコントロールなら出来ると言う情報があり
ましたらぜひ教えてください。

 よろしくお願いします。

Aベストアンサー

失礼しました
× HitItem
○ HitTest
でした。

Private Sub Form_Load()
  Dim i    As Integer
  
  With Me.ListView1
    .View = lvwList       '//表示形式:一覧
    .HideSelection = False   '//リストビューがフォーカスを失っても、選択状態を保持する
    .MultiSelect = True     '//複数選択可能
    
    'ダミーデータの登録
    .ColumnHeaders.Add , , "ヘッダ"
    For i = 1 To 10
      Me.ListView1.ListItems.Add , , "Dmy Data" & i
    Next i
 
  End With
End Sub

Private Sub ListView1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
  Dim itmX  As ListItem
  
  With Me.ListView1
    'マウス位置のアイテムを取得
    Set itmX = .HitTest(x, y)
    '取得できたなら未処理
    If Not (itmX Is Nothing) Then
      GoTo PGMEND
    End If
    
    '現在選択中のアイテムを取得
    Set itmX = .SelectedItem
    '取得できなかったなら未処理
    If (itmX Is Nothing) Then
      GoTo PGMEND
    End If
    
    '選択解除
    Set .SelectedItem = Nothing
    itmX.Selected = False
  End With
  
PGMEND:
  Set itmX = Nothing
End Sub

失礼しました
× HitItem
○ HitTest
でした。

Private Sub Form_Load()
  Dim i    As Integer
  
  With Me.ListView1
    .View = lvwList       '//表示形式:一覧
    .HideSelection = False   '//リストビューがフォーカスを失っても、選択状態を保持する
    .MultiSelect = True     '//複数選択可能
    
    'ダミーデータの登録
    .ColumnHeaders.Add , , "ヘッダ"
    For i = 1 To 10
      Me.ListView1.ListItems.A...続きを読む

Qエクセルで画像を貼り付けるとフリーズしてしまう。

エクセルに画像を貼り付けるとパソコンがフリーズしてしまいます。何故でしょうか?解決方法を教えてください。

OSは、Windows2000です。
エクセルのバージョンは、2003。

Aベストアンサー

Win2000で198MBはちとキツイかな?
エクセルのバージョンが2003というのは、Office2003を入れていると思うのですが、他にアンチウィルス系も動いているのでしょうから、256MBは欲しいですね。

最近似たような質問があって、直接貼り付けるよりも問題のjpegをファイル保存しておき、エクセルの[挿入]→[オブジェクト]で実施したらどうかという回答があったばかりです。このときはワードでしたが、エクセルでもお試しみてはどうですか。

QExcelVBAのLISTBOXから複数行選択された項目を取得する方法

タイトルのとおりなのですが、
ListBoxで、MultiSelectのプロパティを設定後に、
実際の動作で選択された全ての項目を取得する方法を教えてください。

自分でも探してはおりますが、もしよろしければ
ご指導いただけますと幸いです。

くれぐれも、~を見れば分かるでしょ…などといった
中傷的なご返答はご遠慮願います。

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

Aベストアンサー

回答の簡単のために、ワークシートにリストボックスを1つ貼り付け
プロパティで-1 fmMultiSelectMulti を選ぶ。
ListFilRangeにセル範囲を設定しておく。(注)1行空白行をしておく。
回答の簡単のために、リストボックスの
DblClickイベント(注)に
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim lItem As Long
For lItem = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(lItem) = True Then
Sheet1.Range("A65536").End(xlUp).Offset(1, 0) = ListBox1.List(lItem)
ListBox1.Selected(lItem) = False
End If
Next
End Sub
これで複数選択し、リストボックスの余白行(注)をダブルクリックすると、A列に選択したものが、累積入力される。
(注)あまり自然な設例ではなかったと反省するが、上記コードの回答がメインなので、このままにします。

回答の簡単のために、ワークシートにリストボックスを1つ貼り付け
プロパティで-1 fmMultiSelectMulti を選ぶ。
ListFilRangeにセル範囲を設定しておく。(注)1行空白行をしておく。
回答の簡単のために、リストボックスの
DblClickイベント(注)に
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim lItem As Long
For lItem = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(lItem) = True Then
Sheet1.Range("A65536").End(xlUp).Offset(1, ...続きを読む

Qエクセルがフリーズ

エクセルで通常の使い方をしているのに、突然マウスポインターがフリーズします
何回もあります。何が原因でしょうか?パソコンはNECのノートです。

Aベストアンサー

¥Windows¥TempフォルダにEXCEL使用に
テンポラリファイルが作成されてれば、
これを削除すると改善されるかも?

むやみに消すとまずいこともありますのでくれぐれも慎重に。

QListViewの複数選択について

こんにちは。

VBAでListViewを使い、DBの情報を出力しているのですが、ListViewに出力すると、必ず、1行目が選択されています。その選択自体はいいのですが、選択されているところに色付けがされていないのです。他のところを選択すると色がちゃんと付きます。どうすれば、最初の選択行に色をつけることが出来るのか教えてください。

それから、ListViewで複数件選択された場合のIndexの取り方を教えてください。今は以下のようにして1件だけは取得できています。

s = Userform2.ListView1.SelectedItem.Index

初心者なので、なるべく詳しくお願いします。

Aベストアンサー

1.
HideSelectionプロパティをfalse
->好み、ソフトの性質にもよりますが...

または、DBの情報を表示し終ったときに下記コード
If Userform2.ListView1.Listitems.Count <> 0 Then
  Set Userform2.ListView1.SelectedItem = Userform2.ListView1.ListItems(1)
End If


2.
With Userform2.ListView1
  'リストビューの最後までループ
  For i = 1 To .ListItems.Count Step 1
    '選択されているか?
    If .ListItems(i).Selected = True Then
      '選択時の処理
      
    End If
  Next i
End With

アイデア次第...

Qエクセルのフリーズとタスクマネージャーの無反応

エクセル使用時たびたびフリーズするので困っています。(多い時は1時間で3回)
質問集で同じような症状が無いか探したのですが、見つからないので質問いたします。

エクセル使用時、リボンやシート見出し、をクリックすると画面の半分が白くなりフリーズすることがあります。
「Alt] 「Ctrl] 「Delete」 を押しても無反応なので、強制終了をします。
再立ち上げ時、セーフモードを選択しても途中で停止してしまうので、通常モードで立ち上げています。(何も無い時はセーフモードで立ち上げることができます。)

1)フリーズの原因と対処法
2)「Alt] 「Ctrl] 「Delete」を押しても反応しない原因と対処法
3)そのあとの再起動時にセーフモードが途中で停止してしまう原因と対処法
分かる方がおられましたら、お教え下さい。

OSはwindows7、office2007
エクセルのサイズは33KBから188KBです。

初めて質問しますので抜けているところがあれば追加します。
よろしくお願いします。

Aベストアンサー

そうですね。。
エクセルの再インストールは、やってみましたか?

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
を追加したほうがいいかもしれません

Qエクセルのカメラの使用時のフリーズ

こんばんは。以前、エクセル2000の不具合という内容でノートPCの欄に質問させていただきましたものですが、明確な原因がわかりましたので再度質問させていただきます。
これは会社のノートパソコン(WIN2K)でエクセル使用時にツールバーにある「カメラ」機能を使うとにフリーズしたり、数字等を入力してエンターキーを押すと12~30秒くらい時間が固まってしまう状況に陥ってしまうため困っています。
カメラで指定範囲を選択して、別の場所に貼り付けるのであくまで画像データとして取り扱われる関係でデータ量が多くなってしまうとは考えられますが、100KBほどのデータでもフリーズ状況に陥ってしまいます。
ちなみに、フリーズ状態の時のCPU使用率はずっと100%となっています。メモリーは256MBで余裕のある環境にあります。このカメラで貼り付けたデータを削除するとスムースに動く様になります。またカメラで貼り付けたエクセルファイルを開いたまま、別のカメラを使用していないエクセルファイルを使用しても、影響が及んでしまいます。
しかし、同じカメラ機能を使ったエクセルファイルを別のパソコンで開くと多少時間はかかりますが、5秒もかからないくらいで動きます。何かカメラの設定などが悪いのでしょうか?エクセルの再インストールと*.xlbファイルの削除は実行しました。長々となってしまいましたが、よろしくお願いします。

こんばんは。以前、エクセル2000の不具合という内容でノートPCの欄に質問させていただきましたものですが、明確な原因がわかりましたので再度質問させていただきます。
これは会社のノートパソコン(WIN2K)でエクセル使用時にツールバーにある「カメラ」機能を使うとにフリーズしたり、数字等を入力してエンターキーを押すと12~30秒くらい時間が固まってしまう状況に陥ってしまうため困っています。
カメラで指定範囲を選択して、別の場所に貼り付けるのであくまで画像データとして取り扱われる関係でデータ量...続きを読む

Aベストアンサー

私は、[カメラ]機能を比較的多用するので、どんな回答が付くか静観していましたが…

「メモリーは256MB」が「余裕のある環境」かどうかは分かりませんが、仰っているような現象を経験したことがありません(昔に Win2000、Excel2000 を使っていたことがありましたが、メモリサイズがどうだったかは忘れました)。
ところで、「100KBほどのデータでもフリーズ状況に陥ってしまいます」とのことですが、この「100KBほどのデータ」というのはどうやって分かったのですか?

QListViewの選択、選択解除を行いたい

VB6.0にて開発をしています。

ListViewで複数選択を可能とし、
Ctrl+クリックで選択、選択解除をせずに、クリックのみで選択、選択解除を行いたいです。

その際、複数選択されている場合はクリックした行のみが選択・選択解除される状態にしたいです。

CheckBoxesプロパティで行う方法は見つけられたのですが、
checkboxesプロパティが使用できないため困っています。

なにか方法がありますでしょうか?

Aベストアンサー

お使いの VB の SP ( Service Pack ) はいくつでしょうか?
もし、SP6 未満であれば、SP6 にアップデートされてみてはいかがでしょうか。
Visual Basic 6.0 Service Pack 6
http://www.microsoft.com/downloads/details.aspx?familyid=9EF9BF70-DFE1-42A1-A4C8-39718C7E381D&displaylang=ja#Overview

↑のアップデートに comctl32.ocx のアップデートが含まれているのかいないのかよくわからないのですが、comctl32.ocx 単独のアップデートを試してみてもいいかもしれません。
Microsoft Visual Basic 6.0 コモン コントロール
http://www.microsoft.com/downloads/details.aspx?FamilyID=25437d98-51d0-41c1-bb14-64662f5f62fe&displaylang=ja

新しい comctl32.ocx だとチェックボックスが使用できるのかも、という気がします。(未確認です。)

新しい comctl32.ocx でもダメだったとか、現行の環境は古い comctl32.ocx を使用していてそれに合わせなければならないということでしたら、API を使用すればチェックボックスありのリストビューが使用可能なようです。
↓は、たまたま見つけた Q&A ですが、「VB6 リストビュー チェックボックス」などで検索をすれば、他にも参考になるページが見つかるかもしれません。
http://oshiete1.goo.ne.jp/qa3175318.html

チェックボックスなしで、クリックのみで選択/選択解除を行うのは、かなり難しそうな気がします。

お使いの VB の SP ( Service Pack ) はいくつでしょうか?
もし、SP6 未満であれば、SP6 にアップデートされてみてはいかがでしょうか。
Visual Basic 6.0 Service Pack 6
http://www.microsoft.com/downloads/details.aspx?familyid=9EF9BF70-DFE1-42A1-A4C8-39718C7E381D&displaylang=ja#Overview

↑のアップデートに comctl32.ocx のアップデートが含まれているのかいないのかよくわからないのですが、comctl32.ocx 単独のアップデートを試してみてもいいかもしれません。
Microsoft Visual Basic 6.0 ...続きを読む


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

人気Q&Aランキング

おすすめ情報