• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルでのリストボックスの値の取得)

エクセルでのリストボックスの値の取得

nishi6の回答

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.1

Excel97 で質問のコードを動かしましたが特に問題ないようですが・・・ ListBox1のプロパティMultiSelect を  fmMultiSelectMulti  fmMultiSelectExtended にして、両方とも問題なく動きますよ。プロパティの設定方法が何か違う? 変数の宣言を強制されていないようなので、  Option Explicit を先頭に書いてみたらどうでしょうか。nの宣言は必要になりますが、どこか別の場所で無効なプロパティの設定などがされているかもしれません。 ご参考に。

jun4791
質問者

お礼

早速の回答ありがとうございます。 試しにExcel2002でも動かしてみましたがダメでした。 そこでもう一度見直してみたところ、RowSourceにA列とB列を指定していました。 1~2ヶ月試行錯誤していたのでColumnCountを"1"にしただけで、 RowSourceの設定を忘れていたようです。 >どこか別の場所で無効なプロパティの設定などがされているかもしれません。 と言われて見直してみたので、nishi6さんのおかげでRowSourceの間違いに気がつきました。 まだ確認していませんが、たぶんこれでExcel97でもちゃんと動くと思います。 ありがとうございました。

関連するQ&A

  • リストボックスについてです。

    リストボックスについてです。 B列をダブルクリックするとリストボックスが立ち上がり、データを選択してB列に表示できるように設定されていますが、困った現象が起こっています。 例えば、sheet1のB10にダブルクリックでリストボックスを表示し、そこから「あいうえお」という名前を表示させて、sheer1編集が終わったとします。 次のsheet2でB1をダブルクリックしているのに、sheet2のB10に勝手に「あいうえお」と表示されてしまいます。 コードは以下になってます。 VBA初心者なのでエクセルのサイト等からコピペ等して作ったコードです。 どこかおかしな箇所があると思うのですが、何処がおかしいのかがわかりません。 お分かりになる方、教えていただければ助かります。 ' ◆Worksheetのコード◆ '---------------------------------------------------- '選択範囲を変更したときに実行される Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) UserForm1.ListBox1.RowSource = "データ!A1:A100"  '表示するデータ範囲 UserForm1.ListBox1.Font.Size = 12    'フォントサイズ If Target.Column = 2 Then 'B列なら 行 = Target.Row '行番号を取得する UserForm1.Show 'ユーザーフォームを表示する End If End Sub '=================================================================================== ' ◆UserForm1のコード◆ '-------------------------------------------------------------------------- Private Sub ListBox1_Click() 'クリックされたときに実行される If 行 <> 1 Then '1行目でなければ Cells(行, 2) = ListBox1.Value 'リストボックスの値をセルにセットする End If UserForm1.Hide 'ユーザーフォームを非表示にする End Sub Private Sub UserForm_Deactivate() '非アクティブになったときに実行される Unload Me 'ユーザーフォームをメモリから削除する End Sub '========================================================================================= '============================== ' ◆標準モジュールのコード◆ Option Explicit Public 行 As Variant '行番号 Sub auto_open() Load UserForm1 'ユーザーフォームをメモリに読み込む End Sub '==============================

  • VBAリストボックスで複数選んだセルの値を転記

    ActiveXコントロールで、シート内に埋め込み作成したリストボックスを、複数選択できるようプロパティを設定しました。 選択した項目の一番左の数値を、同じシートのB列の一番最後のセルから1個ずつ順番に、転記をしていきたいのです。 ★B列10行目まで埋まっていた場合、  B列 11行目 ←リストボックスで選択した1つめ  B列 12行目 ←リストボックスで選択した2つめ  B列 13行目 ←リストボックスで選択した2つめ 下記ですと、再初に選択したもののみ、転記されてしまい、1個1個入れていくことは可能なのですが、せっかく複数選択できるのに…という状況です。 同様の質問を検索してみて、真似してみたりもしましたが、うまくいきません。また、どうしても埋め込みが良くて、ユーザーフォームを別で作成はしたくはないです。 プロパティとフォームの画像を添付します。 すいません、よろしくお願いします。 Private Sub CommandButton1_Click() Dim n As Integer, s As String With ListBox1 For i = 0 To .ListCount - 1 If .Selected(i) = True Then Cells(Rows.Count, 2).End(xlUp).Offset(1, 0) = .List(i) End If Next i End With End Sub

  • リストボックスの値を拾うには

    リストボックスの値を拾うには 以下のボタンコマンドでListBox1のListIndexから配列二番目の値を「hinban」という変数に取り込みたいのですがうまくいきません。 「hinban = ListBox1.List(ListBox1.ListIndex, 1)」という行を書いてみましたが 「オブジェクトは、このプロパティまたはメソッドをサポートしていません。」とアラートが出てしまいます。 VBA初心者です。 解決法を教えてください。 Private Sub CommandButton1_Click() Dim lastRow As Long Dim i As Integer With Worksheets("Sheet1") lastRow = .Cells(Rows.Count, 1).End(xlUp).Row + 1 'For i = 1 To 3 '.Cells(lastRow, i).Value = ListBox1.List(ListBox1.ListIndex, i - 1) hinban = ListBox1.List(ListBox1.ListIndex, 1) 'Next i End With End Sub

  • 同じコンボボックス、リストボックスを使うには?

    よろしくお願いします。 今、ユーザーフォームを使って製造計画表を作っています。 コンボボックスで会社名、リストボックスで会社ごとの製品名を選択させるとこまで出来ました。 1日に3つの製品を作ることが出来るので、同じ中身のコンボボックス、リストボックスを使って3つ作りたいと思っています。 ユーザーフォームの形的にはこのような感じですが。 1. コンボボックス  リストボックス 2. コンボボックス  リストボックス 3. コンボボックス  リストボックス 今は、1.のとこだけは出来たのですが、2.3.は1.と同じコードをコピーして必要と思われるとこだけをコンボボックス2と変えたりしてみたのですが、上手くいきませんでした。こんなコードですが。 Private Sub UserForm_initialize() 'ComboBox1セット Dim ico As Long ico = 1 With ThisWorkbook.Worksheets("Sheet1") Do While .Cells(1, ico) <> "" Me.ComboBox1.AddItem .Cells(1, ico).Value ico = ico + 1 Loop End With Me.ComboBox1.SetFocus End Sub Private Sub ComboBox1_Change() 'ListBox1セット Dim ico As Long 'Me.ListBox1.Clear ico = Me.ComboBox1.ListIndex + 1 With ThisWorkbook.Worksheets("Sheet1") Me.ListBox1.List = .Range(.Cells(2, ico), _ .Cells(.Cells(Rows.Count, ico).End(xlUp).Row, ico)).Value End With End Sub VBAも初めたばかりで質問の内容もわかりづらいとも思いますが、よろしくお願いします。

  • エクセル リストボックスの複数の値を取得

    Sheet1にユーザーフォームに ListBox1とCommandButton1を配置しました。 ListBox1で複数選択した値をCommandButton1を押した後、指定のセル範囲内 (B5:B10)へ順に、1つずつ下に反映したいのですが、うまくいきません。 ListBox1 AAA BBB CCC DDD で BBBとCCCを複数選択した際に Sheet1のセルB5 へ BBB Sheet1のセルB6 へ CCC という具合です。 セルB10以下の行は他の数式等で使用しています。 Private Sub UserForm_Initialize()   With ListBox1     .AddItem "AAA"     .AddItem "BBB"     .AddItem "CCC"     .AddItem "DDD"   End With End Sub Private Sub CommandButton1_Click()   Dim lastRow As Long   With Worksheets("Sheet1")     lastRow = .Cells(Rows.Count, 1).End(xlUp).Row + 1←このあたりがさっぱり     .Cells(lastRow, 1).Value = UserForm6.ListBox1.Value←このあたりがさっぱり   End With End Sub 初心者の質問で申し訳ありませんが、よろしくお願いいたします。

  • ユーザフォームのリストボックス

    お世話になります。 ユーザフォームのリストボックス内の下記2個のどちらかを選択し Private Sub UserForm_Initialize() ListBox1.AddItem ("印刷プレビュー") ListBox1.AddItem ("印刷") End Sub CommandButton1をクリックして Worksheets("Sheet1").PrintOut か Worksheets("Sheet1").PrintPreview を実行したいのですが どうやってリストボックスとコマンドボタンを 連動できるようにすればいいのでしょうか コマンドボタンのみだったら出来るのですが、 リストボックスを使うとうまくいきません。 ご教授よろしくお願いいたします。

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

    WinXP(sp3) EXCEL2003 いつも本当にお世話になっております。 また、1つ教えていただきたいのですが、ユーザーフォームのリストボックよりデータ取得で、必ずクリック(選択) しなければ、エラーになると思うのですが、ここを選ばない場合は、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 マクロ リストボックス複数選択

    いろいろ拝見させていただいているのですが 理解が低いのが原因で困っています。 データのシートがあります。 ・B列には、起点となる人の名前が記載(300名ほど) ・データの入っている列は、A:CE データシートでB列にてオートフィルタをかけ 抽出シートに転記したい。 抽出シートでは、ユーザーフォームを組みました。 オプションボタン1 単一選択 オプションボタン2 複数選択 オプションボタン3 拡張選択 リストボックス(2・3に対して) コマンドボタン   終了 とした場合、単一選択はできたのですが 複数選択の場合 該当数が「0」の表記となってしまい、うまくいきません。 同じような質問が…というお返事があることを承知でお伺いしています。 いただいた回答を基に、勉強をしていきたいと思っていますので なにとぞよろしくお願い申し上げます。 Private Sub UserForm_Initialize() ListBox1.ColumnCount = 1 'リストボックスの列は1 ListBox1.BoundColumn = 0 'ListIndexの値(行数)を使用する ListBox1.MultiSelect = 0 '最初は単一選択状態にする ListBox1.RowSource = 'リストのソース ListBox1.ColumnHeads = True '列見出し表示 OptionButton1.Value = -1 'オプションボタン1を選択状態にする End Sub Private Sub OptionButton1_Click() ListBox1.MultiSelect = fmMultiSelectSingle '単一選択状態にする End Sub Private Sub OptionButton2_Click() ListBox1.MultiSelect = fmMultiSelectMulti '複数選択状態にする End Sub Private Sub OptionButton3_Click() ListBox1.MultiSelect = fmMultiSelectExtended '拡張(連続)選択状態にする End Sub Private Sub ListBox1_Click() 'リストボックスがクリックされたとき(単一選択) Dim 条件 As String 条件 = UserForm1.ListBox1.Text '氏名 With Worksheets("データ") .Range("A1").AutoFilter _ field:=2, Criteria1:=条件 .Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy _ Worksheets("抽出").Range("A1") .Range("A1").AutoFilter End With End Sub Private Sub CommandButton1_Click() '選択終了ボタンがクリックされたとき(複数・拡張選択) Dim 条件 As String Dim lastRow As Long With ListBox1 If .ListIndex = -1 Then Exit Sub '何も選択されていない For 条件 = 0 To .ListCount - 1 If .Selected(条件) Then '行選択あり With Worksheets("データ") .Range("A1").AutoFilter _ field:=2, Criteria1:=条件 .Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy _ Worksheets("抽出").Range("A1") .Range("A1").AutoFilter End With End If Next End With End Sub Private Sub UserForm_Deactivate() Unload UserForm1 '×ボタンを押したら、ユーザーフォームのunloadをする End Sub

  • Excel VBA リストボックスの複数列表示の方法について

    すいません、エクセルVBAのユーザーフォームのリストボックスの表示方法について質問があります。 シートのセルに    A列   D列   G列 1行 りんご  赤   120円 2行 みかん  黄   130円 3行 すいか  緑 110円 4行 りんご  赤 160円 . ・・・  ・   ・・・ . と、50行まで値を入れます。 VBAでユーザーフォームを挿入し、 Private Sub UserForm_Initialize() With ComboBox1 .AddItem "りんご" .AddItem "みかん" .AddItem "すいか" End With End Sub でコンボボックスの値を設定し、次に Private Sub ComboBox1_Change() Dim i As Integer For i = 1 To 50 If Cells(i, 1).Value = ComboBox1.Value Then With ListBox1 .ColumnCount = 3 .AddItem Cells(i, 1) End With End If Next i End Sub このときコンボボックスと同じ値の行について、 リストボックスにA列、D列、G列を表示させるにはどうしたらいいのでしょうか。 例えばコンボボックスで「りんご」を選択したときに、 リストボックスを りんご 赤 120円 りんご 赤 160円 と表示させたいのですが、 .AddItem Cells(i, 1) では一列だけしか表示できません。 Rowsorceを使ってみたりしましたが、どうにもうまく出来ませんでした。 よろしくお願いいたします。

  • ExcelVBA リストボックスの複数選択処理がうまくいきません

    こんばんは、助けてください。 EXCEL2007です。 ユーザーフォームにリストボックス(Listbox1)を複数選択可能で作成。 リストボックス各行の4列目には「A」か「B」のいずれかが入っており、選択した行の4列目が「A」ならば「B」を、 「B」ならば「A」をCommandButton1押下でセルに反映させたいのですが、うまくいきません。 [反映先のセル] ・リストボックス1行目⇒セルC4(列番号3) ・リストボックス2行目⇒セルG4(列番号7) ・リストボックス3行目⇒セルK4(列番号11) ・リストボックス4行目⇒セルO4(列番号15) ・リストボックス5行目⇒セルS4(列番号19) ・以降同規則でつづく [コード] 01 Private Sub CommandButton1_Click() 02   Dim ListRow As Integer 03   Dim Retsu As Integer 04 05   For ListRow = 0 To Listbox1.ListCount - 1 06     If Listbox1.Selected(ListRow) Then 07       Retsu = (ListRow + 1) * 3 + ListRow 08       If Listbox1.List(ListRow, 3) = "A" Then 09         Cells(4, Retsu).Value = "B" 10       Else 11         Cells(4, Retsu).Value = "A" 12       End If 13    End If 14  Next ListRow 15 End Sub [現象] 1.単一選択時は、OK。 2.複数選択時は、選択した行のうち一番はじめの行のみOK。 3.試しに、EndSub直前でListbox1.Selected(各ListRow)を検証すると、すべてFalseになってしまっている。 4.IF文(07~12行目)を削除した上で、EndSub直前でListbox1.Selected(各ListRow)を検証すると、True/Falseは意図通りになっている。 IF文(07~12行目)が悪さをしているのでしょうか? うまいやり方をご教授いただければ、幸いです。m(_ _)m