• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:EXCELのユーザーフォームのリストについて)

EXCELのユーザーフォームのリストについて

このQ&Aのポイント
  • ユーザーフォームのリストボックよりデータ取得で、必ずクリック(選択)しなければ、エラーになると思うのですが、ここを選ばない場合は、1行目選択としたいのですが、どうもうまくいきません。
  • Private Sub CommandButton1_Click() gy = UserForm.ListBox1.ListIndex If gy = -1 Then MsgBox "1行目選択" Worksheets("データ入力シート").Cells(1, 2).Value = ListBox1.List(2, 35)←ここで実行時エラー381 Else                                          Listプロパティの値を取得で                                            きません。プロパティのインデッ                                             クスの配列が無効ですと                                              なります。   Worksheets("データ入力シート").Cells(1, 2).Value = ListBox1.List(ListBox1.ListIndex, 35) End If Unload Me End Sub
  • EXCELのユーザーフォームのリストボックスからデータを取得する際に、リストボックスを選択しないとエラーが発生します。この場合、1行目を選択したいのですが、うまくいきません。

質問者が選んだベストアンサー

  • ベストアンサー
  • end-u
  • ベストアンサー率79% (496/625)
回答No.1

ListBox1.List(2, 35)..というのは 1行目ではなくて List の 3行目36列ですが、その点は大丈夫ですか? 1行目は ListBox1.List(0, 35) です。 help<引用> 設定値 行および列は、0 から番号が付けられます。つまり、リストの 1 行目の行番号と 1 列目の列番号は 0 となり、2 行目と 2 列目の番号は 1 となります。以下同様に続きます。 </引用> Listの行が2行しかないのに、List(2, xx)つまり3行目を指定すると 381エラーになります。 Listの設定値の中身を確認してください。

muuuug
質問者

お礼

ご指摘ありがとうございました。 列のほうは、0からスタートで数えていましたが、行の方をついうっかり失念しておりました。 本当にありがとうございました。

その他の回答 (1)

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.2

>必ずクリック(選択)しなければ、エラーになると思うのですが、 通常は、選択していない事を知らせるか、なにもせずに終わらせるかだと思うのですが Private Sub CommandButton1_Click()   If Me.ListBox1.ListIndex = -1 Then     MsgBox "選択されていません"   Else     MsgBox Me.ListBox1.Column(4)     Worksheets("データ入力シート").Cells(1, 2).Value = Me.ListBox1.Column(35)   End If   Unload Me End Sub

muuuug
質問者

補足

ご指摘ありがとうございます。 ただNo.1の方の御指摘で、プログラムし直したところ正常にうごいております。 ただし、検証は、EXCEL2010にてなので、単にうまく動いているように見えるだけなのかは、自信をもってだんげんできませんが、・・・ ただ論理的に言うと、リストをクリックされていないときのINDEXの値は-1でクリックされた ときに、その行の値を返す(正確にいうと、INDEX_No.を返すなら、条件にINDEXNo.が-1の時 無理やり、アドレス(この場合、(0,35))にしてしまえばいいかなとおもったのですが、 間違いでしょうか?

関連するQ&A

専門家に質問してみよう