ママのスキンケアのお悩みにおすすめアイテム

エクセルVBAで複数選択できるように設定したリストボックスの、選択されている項目の数を取得する方法はないでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (2件)

For i= 0 To ListBox1.ListCount - 1 '


If ListBox1.Selected(1) Then
mSelectItem = mSelectItem + 1
End If
Next

こんな感じでいかがでしょう。
    • good
    • 1
この回答へのお礼

修正も含めてありがとうございました。
すごく助かりました。

お礼日時:2010/05/18 06:22

修正です



If ListBox1.Selected(1) Then

If ListBox1.Selected(i) Then
    • good
    • 1

このQ&Aに関連する人気のQ&A

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

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

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

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

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, ...続きを読む

Qexcel VBA リストボックス複数選択後の処理

どなたか教えてください。
Sheet1にユーザーフォームを使用しデータを入力しています。
リストボックスが複数選択した後にコマンドボタンをクリックした際、
選択項目を1行のセル[Cells(myRow, 16)~Cells(myRow, 20)]に左詰めで表示したい場合はどのようにするのでしょうか?

例:リストボックスには10項目あるとして、そのうち1行目、3行目、5行目だけが選択された場合のパターンで、1行目がCells(myRow, 16)、3行目がCells(myRow, 17)、5行目がCells(myRow, 18)に表示したいのですが・・・。 最大5項目選択とみています。
※コマンドボタンは他のTextBox等も含まれ、下記のような感じです。

Private Sub CommandButton1_Click()
Dim myRow As Long

Sheets("Sheet1").Select
myRow = Range("A65536").End(xlUp).Offset(1, 0).Row
'各テキストボックの値をセルに入力
Cells(myRow, 1).Value = TextBox1.Value
Cells(myRow, 2).Value = TextBox2.Value
Cells(myRow, 3).Value = ComboBox1.Value
Cells(myRow, 4).Value = TextBox3.Value
Cells(myRow, 5).Value = TextBox4.Value
.
.
.
Cells(myRow, 16).Value =
Cells(myRow, 17).Value =
Cells(myRow, 18).Value =
.
.
.
'セルに入力が各テキストボックの値をクリア
TextBox3.Value = ""
TextBox4.Value = ""
ComboBox2.Value = ""
ComboBox3.Value = ""
'フォーカスをTextBox3に移動
TextBox3.SetFocus

End Sub

どなたか教えてください。
Sheet1にユーザーフォームを使用しデータを入力しています。
リストボックスが複数選択した後にコマンドボタンをクリックした際、
選択項目を1行のセル[Cells(myRow, 16)~Cells(myRow, 20)]に左詰めで表示したい場合はどのようにするのでしょうか?

例:リストボックスには10項目あるとして、そのうち1行目、3行目、5行目だけが選択された場合のパターンで、1行目がCells(myRow, 16)、3行目がCells(myRow, 17)、5行目がCells(myRow, 18)に表示したいのですが・・・。 最大5...続きを読む

Aベストアンサー

以下がListBox1を複数選択して、セルに転記する部分です。

'--------------------------------------
 Dim N As Integer
 Dim Clm As Integer

 Clm = 15

'''セルへ転記

 For N = 0 To ListBox1.ListCount - 1
   If ListBox1.Selected(N) Then
     Clm = Clm + 1
     Cells(myRow, Clm) = ListBox1.List(N)
   End If
 Next N

'''ListBox1の選択状態の解除

 For N = 0 To ListBox1.ListCount - 1
   ListBox1.Selected(N) = False
 Next N
'-----------------------------------------------

言わずもがなのことですが、
ListBox1は複数選択可能になっていなければいけません。
ListBox1.MultiSelect = fmMultiSelectMulti
 

以下がListBox1を複数選択して、セルに転記する部分です。

'--------------------------------------
 Dim N As Integer
 Dim Clm As Integer

 Clm = 15

'''セルへ転記

 For N = 0 To ListBox1.ListCount - 1
   If ListBox1.Selected(N) Then
     Clm = Clm + 1
     Cells(myRow, Clm) = ListBox1.List(N)
   End If
 Next N

'''ListBox1の選択状態の解除

 For N = 0 To ListBox1.ListCount - 1
   ListBox1.Selected(N) = False
 Next N
'------------...続きを読む

Qエクセル VBA ユーザーフォームを閉じる

ユーザーフォームを開く時は
UserForm1.Showですが
閉じる時は?
UserForm1.Close
だとコンパイルエラーになります。
End
にするしかないですか?

Aベストアンサー

Unload Me とか Unload UserForm1 でユーザーフォームを閉じることができます。

Qexcelのリストボックスで選択した項目をアクティブセルに入力方法

もしかしたら既出かもしれませんが・・・
フォームコントロールのリストボックスで入力範囲の指定したリストをリンクするセルをワークシート上にクリックしたセルに入力させる方法はありますか?
もし、不可能でしたら、ActiveXコントロールのリストボックスでも構いません。よろしくお願いいたします。

Aベストアンサー

そのリストボックスの、コードの表示で
Private Sub ListBox1_Click()
ActiveCell = ListBox1.List(ListBox1.ListIndex)
End Sub
と入れるだけ。
コントロールツールボックスのコントロールを、ワークシートに直接
貼り付けた場合。
WEBや解説書で、ListboxとかListindexなど調べましたか。

QエクセルVBAでフォームのListboxのリストの数を取得するには?

ワークシート上に貼り付けたリストボックスがあります。
このリストボックスはOLEObjectではなくフォームのリストボックスです。

このリストボックスにリストが何項目セットされているのか取得したいのです。
Set myLb = ActiveSheet.ListBoxes(Application.Caller)
MsgBox myLb.Name
MsgBox myLb.ListIndex.Count
とやってみたところ、名前は取得できましたが、項目数はエラーになってしまいました。

あと、可能ならListの2番目にセットされている項目の文言を取得する方法もあれば知りたいと思います。

宜しくお願いします。

Aベストアンサー

下記を試してみてください。

MsgBox myLb.ListCount
MsgBox myLb.ListIndex
MsgBox myLb.List(myLb.ListIndex)
MsgBox myLb.List(2)

QEXCEL VBAで計算値を四捨五入、切り上げ、切捨てする方法

ネットで探してみたのですが、計算結果を四捨五入して特定のセルを
返すにはどうしたらいいのでしょうか?

Sub hokangosa()

Dim ZPS As Double
Dim ZPOS As Double
Dim DMN As Double
MsgBox (" >>> 補間誤差自動計算 <<< ")
MsgBox (" >>> 初期値入力します <<< ")
ZPS = InputBox(">>> ステップを入力してください<<<")
ZPOS = Sheet1.Cells(22, 4).Value
DMN = ZPOS / ZPS
Sheet1.Cells(23, 6).Value = DMN
End Sub

ここでDMNの値を四捨五入したいです。

またこれとは別に切上げ、切捨ても教えていただけるとありがたいです。

Aベストアンサー

DMN = Application.WorksheetFunction.Round(ZPOS / ZPS, 0)
で、四捨五入
DMN = Application.RoundDown(ZPOS / ZPS, 0)
で切り捨て
DMN = Application.RoundUp(ZPOS / ZPS, 0)
で切り上げです。

引数で、対象桁を変更できます。

QVBA コンボボックスで選んだ値を取得するには

ユーザーフォーム上のコンボボックスから値を選択し、その値を変数として使いたいのですが、うまくいきません。

コンボボックスのコードで
Private Sub ComboBox1_Change()
moji1 = ComboBox1.Text
Range("A1").Value = moji1
のようにすれば、コンボボックスから値を選んだ時点でA1セルにその値をコピーできるのですが、同じユーザーフォーム上にあるコマンドボタンをクリックして実行する「マクロ1」にてこのmoji1という変数を使いたいのです。

マクロ1にて、上記と同じ
Range("A1").Value = moji1
というコードを記述しても、ユーザーフォームで選択した値が消えており、empty値となってしまいます。

原因をご存知の方はお教えください。

Aベストアンサー

原因については下記を参考にしてください。
http://pc.nikkeibp.co.jp/pc21/special/2007_gosa/eg5.shtml

Qユーザーフォームを表示中にシートの操作をさせるには

ユーザーフォームを表示中にシートの操作をさせる事はできるのでしょうか。
セルへの入力、画面のスクロールなどは、ユーザーフォームからマクロを実行させたり、.hideでユーザーフォームを一時的に隠すなどすればいいのでしょうが、そういう手段をとらないでユーザーフォームを表示中にシートの操作をさせる事はできるのでしょうか。

Aベストアンサー

ユーザフォームの
ShowModalプロパティを
falseにすればよいかと。

QExcelVBA でリストリストボックスに列見出しをコーディングでつける

エクセルVBAのフォームにリストボックスを作り、データーベースから読み出したデータを表示させています。

この時、各列にテーブル名とはちがう列名をつけたいのですが、シートに記述するのではなく、コーディングでつける事は出来ませんか?

ControlTipTextに「test1;test;test3;」と指定してみたりしましたが、駄目でした。

どなたかご教授、あるいは出来ません、シートに隠しか方法はありません、と全否定をしてください。

Aベストアンサー

Wendy02 です。配列で入れる方法を考えてみましたが、できませんでした。

結局、他の方法としては、ListBox の 上に、白のLabel をそれぞれのColumnにあわせて、表示するぐらいしか、思いつきません。(これは、論外でしょうね)

列見出し(フィールド)は、もともと、Excelのワークシートの、データベース用の仕様のひとつだから、Rangeオブジェクトでしか、ListBox の Header に入れることは、出来ないようです。

QVBAのListBoxで複数選択してExcelの1つのセルに反映

いつもお世話になります。
出来るか教えて欲しいのですが、

UserFormに「ListBox」と「Commandbutton」があります。
「ListBox」には5つの選択肢がありますが、これを複数選択可に
して、「Commandbutton」をクリックすることにより、
Excelの1つのセルに「ListBox」で選択した項目を反映させることは
出来ますか?

出来る場合どのようにすれば宜しいでしょうか?

Aベストアンサー

ListBoxのSelectedプロパティを使えばどのアイテムが選択されているか確認出来ます

ボタンのクリックイベントで
dim n as integer, s as string
for n = 0 to ListBox1.Count-1
  if ListBox1.Selected( n ) then
    s = s & ListBox1.List( n )
  end if
Next
Range("A2").value = s
といった具合で出来るかと思います


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

人気Q&Aランキング