10秒目をつむったら…

いつもお世話になります

Vbaにおいての、Listview内の行挿入に関して教えてください
今、listviewリスト編集においてTextBoxの内容をリスト内の挿入する仕様で
Webを検索していたところ下記のようなステートメントが或る質問の答えで
書かれていました

Dim i As Long
Dim LI As ListItem
With ListView1
  Set LI = .ListItems(5)
  With .ListItems.Add(2, , LI.Text)
    For i = 1 To LI.ListSubItems.Count
      .SubItems(i) = LI.SubItems(i)
    Next
  End With
  .ListItems.Remove 6
End With
Set LI = Nothing

これは5行目の内容を1行目と2行目の間に移動させるものですが
これを利用してTextBox1の内容を先にitemlistをクリックした行の
前に挿入するステートメントを作ってみました

With ListView1
With .ListItems.Add(IndexNum, , TextBox1.Text)
End With
End With

これは動くのですが

Withを使わずに
 ListView1.ListItems.Add(IndexNum, , TextBox1.Text)
にするとコンパイルエラーになります
他の記事も検索してみましたが、これに関しては見つかりませんでした

この.Listitems.Addに関して特殊なものなのでしょうか?
それとも使い方に問題があるのでしょうか?
分かりましたら教えてください

以上、よろしくお願い申し上げます

A 回答 (1件)

戻り値を必要としないメソッドの呼び出しはCallステートメントを利用しなければなりません。


Call ListView1.ListItems.Add(IndexNum, , TextBox1.Text)

Callを省略したい場合は引数の書き方でカッコをつかってはなりません。
ListView1.ListItems.Add IndexNum, , TextBox1.Text

Withステートメントに続けて記述した場合にすんなり通るのは、
その戻り値をWithステートメントの利用オブジェクトとして認識
させているためです。
    • good
    • 0
この回答へのお礼

早速、ご回答ありがとうございます

良く分かりました
これからもよろしくお願いいたします

お礼日時:2019/11/05 18:38

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

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


おすすめ情報

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