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に詳しい方ご教授お願いします。
No.1ベストアンサー
- 回答日時:
ComboBoxはSelectedItemと単数形ですよね
ListViewの場合SelectedItemsですから選択された複数の項目といったことになります
SelectedItemsはコレクションになるので 最初の選択項目なら
ListView1.SelectedItems(0)となりますので
if ListView1.SelectedItems(0).Text = "テスト" Then
といった具合に使います
もっとも選択アイテムない場合も考えられるので上記の前に
If ListView1.SelectedItems.Count = 0 then
Exit Sub
End if
を追加したほうがいいかもしれません
この回答への補足
ご返答ありがとうございます。
if ListView1.SelectedItems(0).Text = "テスト" Then
処理
End if
上記のように、最初に選択した"テスト"の項目は上手く動作したのですが
それ以降、他の項目を選択したり、同じ項目を2度クリックすると例外エラーが発生します。
「'0' の InvalidArgument=Value は 'index' に対して有効ではありません。パラメータ名: index」
因みに、選択する項目は一つのみとするので「MultiSelect」は無効にしています。
これらの対処方法も教えていただけると幸いです。
解決しました。
For Each l_text As ListViewItem In ListView1.SelectedItems
Dim subItem0 As String = l_text.SubItems(0).Text
If l_text.SubItems(0).Text = "テスト1" Then
処理
End If
If l_text.SubItems(0).Text = "テスト2" Then
処理
End If
とSubItems(0)すればうまくいきました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
- Visual Basic(VBA) エクセル VBAで複数セル選択時エラーになる問題 3 2022/10/04 02:40
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) 【再々投稿】VBAのプログラムで動作しなくて困っています 8 2022/10/14 09:06
- Visual Basic(VBA) VBAの繰り返し処理について教えてください。 3 2022/08/02 13:21
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Visual Basic(VBA) VBA 参照先で選んだファイルをコピーし、出力先に別名で保存したい 8 2022/05/13 20:37
- Visual Basic(VBA) 実行時エラー´5854´ 文字列型パラメーターが長すぎます。 3 2023/06/08 21:17
このQ&Aを見た人はこんなQ&Aも見ています
-
外出時に「待たせる妻」vs イライラする「待つ夫」は日本だけ?見習いたい海外事情
夫の家事参加に積極的なイメージのある海外でも、同様の事例はあるのか。結婚カウンセラーの佐竹悦子さんに伺ってみた。
-
ListView 項目の選択/選択解除について
Visual Basic(VBA)
-
Listviewのデータを上から順番に取得 VBA
Visual Basic(VBA)
-
ListViewの行選択について
Visual Basic(VBA)
-
-
4
vba Listviewでのチェックボックスのイベントを教えてください
Excel(エクセル)
-
5
ListViewで複数選択された項目を一度に削除する方法
Visual Basic(VBA)
-
6
Excel VBA ListViewサブアイテムの文字色
その他(プログラミング・Web制作)
-
7
ListViewの複数選択について
Visual Basic(VBA)
-
8
vba listviewにおけるtextのAlingmentを中央にしたい
Excel(エクセル)
-
9
リストビューの項目の内容を変更する方法は?
Visual Basic(VBA)
-
10
Vba ListViewの行挿入に関して教えてください
Visual Basic(VBA)
-
11
EXCEL VBA ListViewについて
Excel(エクセル)
-
12
ListViewの画面の更新
Visual Basic(VBA)
-
13
vba ListViewの選択色について教えてください
Excel(エクセル)
-
14
ListViewのチェックボックスについて
Excel(エクセル)
-
15
Listviewに表示された文字のコピーペースト
Visual Basic(VBA)
-
16
ListViewで列を指定して表示させる方法
Excel(エクセル)
-
17
VBAでListViewのフォントを変更する方法
Visual Basic(VBA)
-
18
ListViewで表示されたデータの選択行指定
Visual Basic(VBA)
-
19
ListViewで、非表示列って作れますか?
Visual Basic(VBA)
-
20
検索結果をListviewさせる方法
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【C#/Java?】try-catchでcatch...
-
IF文に時間(何時から何時ま...
-
private subモジュールを他のモ...
-
Word VBA。各マクロの間に待ち...
-
Functionで戻り値を複数返す方法
-
シグナル 6(SIGABRT)とは?
-
変数を使用したFunctionから戻...
-
途中で処理を中断させたい (ア...
-
ExcelのVBAで、選択したファイ...
-
【Vb.net】プリンタジョブの取得
-
【C#】Page_Loadさせない方法に...
-
VBA 複数の行を高速で削除する...
-
ListViewから選択中の文字列を取得
-
ASP.NETで特定のページだけ文字...
-
バッチファイルでカレントディ...
-
EXCELのVBAについて
-
vbaのエラー対応(実行時エラー...
-
フォルダのアクセス権確認について
-
【VBA】エラー処理で別プロシー...
-
ProgressBarを用いる場合、全体...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【C#/Java?】try-catchでcatch...
-
IF文に時間(何時から何時ま...
-
private subモジュールを他のモ...
-
マクロで、次のコードへ行く前...
-
どう増強すべきか
-
シグナル 6(SIGABRT)とは?
-
特定のファイルを他のプロセス...
-
【Vb.net】プリンタジョブの取得
-
Functionで戻り値を複数返す方法
-
シェルスクリプトでファイル内...
-
特定の名前のオートシェイプの...
-
Excel VBA セルの名前があるか...
-
ListViewから選択中の文字列を取得
-
【VBA】エラー処理で別プロシー...
-
ドリブン??
-
Excelプロセスが消えない
-
VBA 複数の行を高速で削除する...
-
vbaのエラー対応(実行時エラー...
-
ExcelのVBAで、選択したファイ...
-
どうやってもFor文を抜けてしま...
おすすめ情報