プロが教える店舗&オフィスのセキュリティ対策術

早速ですが、エクセルでユーザーフォーム上にある
リストボックスの複数選択した時の値の取得方法を教えてください。

具体的にはアンケート集計をするためのフォームで
"Q6"というワークシートのA列に「項目名」、B列に「数」を
1行目から設定しています(「数」の初期値は"0"です)。

ユーザーフォームのリストボックスにはA列を表示させています。
そのユーザーフォーム上にあるコマンドボックスに
下記のようにコード記述しても、一番上の選択されたものしか"Q6"に
反映されません(2,3,4行目を選択しても2行目の「数」のみ+1になる)。

Private Sub CommandButton1_Click()
 For n = 0 To ListBox1.ListCount - 1
  If ListBox1.Selected(n) = True Then
   Worksheets("Q6").Cells(n + 1, 2) = _
   Worksheets("Q6").Cells(n + 1, 2) + 1
  End If
 Next n
End Sub

エクセルは97で、リストボックスのMultiSelectはMultiでもExtendedでもダメでした。

どなたかご存知の方がいらっしゃいましたらよろしくお願いします。

A 回答 (1件)

Excel97 で質問のコードを動かしましたが特に問題ないようですが・・・



ListBox1のプロパティMultiSelect を
 fmMultiSelectMulti
 fmMultiSelectExtended
にして、両方とも問題なく動きますよ。プロパティの設定方法が何か違う?

変数の宣言を強制されていないようなので、
 Option Explicit
を先頭に書いてみたらどうでしょうか。nの宣言は必要になりますが、どこか別の場所で無効なプロパティの設定などがされているかもしれません。

ご参考に。
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございます。
試しにExcel2002でも動かしてみましたがダメでした。
そこでもう一度見直してみたところ、RowSourceにA列とB列を指定していました。
1~2ヶ月試行錯誤していたのでColumnCountを"1"にしただけで、
RowSourceの設定を忘れていたようです。

>どこか別の場所で無効なプロパティの設定などがされているかもしれません。
と言われて見直してみたので、nishi6さんのおかげでRowSourceの間違いに気がつきました。
まだ確認していませんが、たぶんこれでExcel97でもちゃんと動くと思います。
ありがとうございました。

お礼日時:2002/03/25 19:14

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