• ベストアンサー

Excel2010 VBA ユーザーフォーム

コンボボックスのリストに表示されているときはA列とB列が表示されているのに、 1つをクリックして選択した後はA列しか表示されません 選択した後もそのまま表示を維持したいのですが… ↓こんな感じでやりました Private Sub UserForm_Initialize()   Dim lRow As Long     With Worksheets("Sheet1")       lRow = .Range("A" & Rows.Count).End(xlUp).Row     End With     With ComboBox1       .ColumnCount = 2       .ColumnWidths = "50"       .RowSource = "Sheet1!A2:B" & lRow     End With End Sub よろしくお願いします

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

  • ベストアンサー
  • TAKA_R
  • ベストアンサー率32% (26/79)
回答No.2

回答は1番さんと同じです。 でも、表したいんですよね。 ユーザーフォームの選択後、表示できる列は1列だけです。 なので、どうしてもというなら、2列を1列にして書くしかないです。

yamazaki_s
質問者

お礼

ありがとうございました

その他の回答 (1)

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

>選択した後もそのまま表示を維持したいのですが 出来ません。

yamazaki_s
質問者

お礼

ありがとうございました

関連するQ&A

  • VBAを使用しコンボボックスにリストを設定する方法

    いつもお世話になっております。 現在コンボボックスにリストを設定する方法について悩んでいます。 バージョンはExcel2003です。 コンボボックスに指定したい列がA列とB列なら通常下記のようにすると思います。     With ComboBox1       .ColumnCount = 2       .ColumnWidths = "50;50"       .RowSource = "Sheet1!A2:B5"     End With ただ今回はA列とC列をリストに設定したいと思い、下記のような設定にしたのですがうまく設定できません。     With ComboBox1       .ColumnCount = 2       .ColumnWidths = "50;50"       .RowSource = "Sheet1!A2:A5;C2:C5"     End With そもそもRowSource は連続的なデータを設定する場合のプロパティだと思うのですが、このように飛んだ列のデータを効率的に指定するにはどのようにするのが一番いいのでしょうか? 分かる方がいっらしゃいましたらご教授願います。

  • VBA コンボボックスの条件分岐

    コンボボックスの条件分岐のコードが間違っているみたいで 調べても分からなかったので質問します。 やりたいこと 『マスタ』という名前のシート内のセルを参照し マスタシートには C2セル『A』C3セル『B』C4セル『C』と それぞれアルファベットがあります。 そこでコンボボックスを使用し コンボボックス22にC2~C4セルを選択できるようにし 例えばC2セルを選択したら コンボボックス21の参照範囲をマスタシート内の D2~D13セルを選択できるようにし C3セルを選択したら コンボボックス21の参照範囲をマスタシート内の E2~E13セルを選択できるようにしたいのです。 すいませんがコードを記載して頂けますと 助かります。 Private Sub UserForm_Activate() '----------------------- With ComboBox22 .ColumnCount = 2 .ColumnWidths = "90;10" .RowSource = "マスタ!C2:C4" End With '↑こうすればコンボボックス22のマスタシートのC2からC4まで値を選択できるようになります。 '------------------------わかりやすく区切っています。 '--------------------------------------- If UserForm1.ComboBox22 = "A" Then With ComboBox21 .ColumnCount = 2 .ColumnWidths = "90;10" .RowSource = "マスタ!D2:D13" End With End If '↑コンボボックス22の値が(C2セルの値がAなら)コンボボックス21をマスタシートのD2からD13までを選択できるようにしたい If UserForm1.ComboBox22 = "B" Then With ComboBox21 .ColumnCount = 2 .ColumnWidths = "90;10" .RowSource = "マスタ!E2:E13" End With End If '↑コンボボックス22の値が(C3セルの値がBなら)コンボボックス21をマスタシートのE2からE13までを選択できるようにしたい '----------------------------------------区切っています。 End Sub

  • エクセルVBAユーザーフォーム・リストボックスについて

    エクセルVBAにてユーザーフォームを作りリストボックスにSheet1、AからEのデータすべてを 表示させることは出来るのですが、E行にデータがある物のみ表示する方法をご存じの方教えて頂けないでしょうか。 入力したソースは下記のとおりです。 Private Sub UserForm_Click() Dim lastRow As Long With Worksheets("Sheet1") lastRow = .Cells(Rows.Count, 5).End(xlUp).Row End With With ListBox1 .ColumnCount = 5 .ColumnWidths = "35;25;30;100;25" .RowSource = "Sheet1!A2:E" & lastRow .ColumnHeads = True End With End Sub

  • VBAでオプションボタン変更によって・・・

    エクセルVBAのユーザーフォーム内にあるコンボボックス3つを選択することによりデータ入力を行っています。 この度選択肢を増やすことになり、オプションボタンを2つ追加しようと思っています。 オプションボタンはどちらかを決定することで、コンボボックスの選択内容を変更する予定です。 コンボボックスは大中小分類としており、シート2から抽出したものをシート1に落としている現状をオプションボタン新設により、ボタン1は従来通りシート2から、ボタン2選択時はシート3にあるリストからコンボボックスへ繁栄させようとしたいのですが、方法が分かりません。 どなたか、教えていただけると助かります。 よろしくお願いします。 現在のコードを下記に記します。 Private Sub UserForm_Activate() With UserForm3 .OptionButton1 = True *この段階でボタン2を選択時は、シート3にあるリストよりコンボボックスの内容を抽出したい。 以下中小分類も同様としたい。 .ComboBox1.RowSource = "シート2!A3:A15" .ComboBox1.SetFocus End With End Sub Private Sub ComboBox1_Change() Dim myLlist As String myLlist = ComboBox1 With UserForm3 .ComboBox2.Text = "" .ComboBox3.Text = "" Select Case myLlist Case "大1" .ComboBox2.RowSource = "シート2!B21:B26" Case "大2" .ComboBox2.RowSource = "シート2!B27:B28" End Select End With End Sub Private Sub ComboBox2_Change() Dim myMlist As String myMlist = ComboBox2 With UserForm3 .ComboBox3.Text = "" Select Case myMlist Case "中1" .ComboBox3.RowSource = "シート2!C101:C111" Case "中2" .ComboBox3.RowSource = "シート2!C121:C124" End Select End With End Sub Private Sub OKボタン_Click() With UserForm3 ActiveSheet.Unprotect 行 = ActiveCell.Row 列 = ActiveCell.Column Cells(行, 列) = UserForm3.ComboBox1.Value Cells(行, 列 + 1) = UserForm3.ComboBox2.Value Cells(行, 列 + 2) = UserForm3.ComboBox3.Value ActiveSheet.Protect End With End Sub

  • ユーザーフォーム

    こんばんは。 またまた教えていただきたく思います。ユーザーフォームにリスト ボックスをセットし、シート(商品一覧)のa2からy10までを表示 させたいのですがcまでしか表示できません。宜しくお願いします。 Sub リスト読み込み() Dim myDCount As Long, myDRange As String Worksheets("商品一覧").Activate myDCount = Worksheets("商品一覧").Range("b1").CurrentRegion.Rows.Count + 1 myDRange = "a2:y" & myDCount ListBox1.ColumnCount = 3 ListBox1.ColumnWidths = "60;60;60" ListBox1.RowSource = myDRange End Sub

  • リストボックスに複数シートのデーターを表示させる。

    リストボックスに複数シートのデーターを表示させる。 下記の構文で複数表示はできたのですが、このListBox1のColumnCount7つ目に シートBのC列のデーターを表示させる方法をお教えください。 With ListBox1 .ColumnCount = 7         ↓ .ColumnWidths = "0;100;120;0;0;0;120" .RowSource = "シートA!B5:G" & Worksheets("シートA").Cells(Rows.Count, 5).End(xlUp).Row        → .RowSource = "シートB!C5:C" & Worksheets("シートB").Cells(Rows.Count, 5).End(xlUp).Row .MultiSelect = fmMultiSelectMulti .ListStyle = fmListStyleOption End With よろしくお願いします

  • コンボボックス or リストボックス (複数列表示→値の取得)

    マクロ初心者です。(エクセル2003使用-ユーザーフォーム) 先日はお世話になり、ありがとうございました。 作成していくうちにさらに改良を加えたく、再質問させていただきます。 ※コンボボックス内の表示を複数行表示(Sheet1の管理番号,品名,注文数量)し、そのデータをSheet2のセルA(管理番号),セルB(品名),セルC(注文数量)と貼り付けようとしております。 が、本で探したところ複数行表示のやり方がリストボックスでしかのっていなく、さらに自分で作成したマクロでは動きませんでした。 すみませんが、お力をお貸しください。 (Sheet1) 担当課 客先 管理番号 品名 注文数量 出荷数量 A 岡田さん 1324 りんご 30 20 B 山田さん 1554 みかん 250 70 C 岡田さん 7634 なし 40 25 B 金子さん 4653 みかん 75 70 A 金子さん 6675 りんご 170 60 C 杉浦さん 7789 りんご 200 120 (↓こちらは、前回質問させていただいた内容です。) Private Sub UserForm_Initialize() ComboBox1.RowSource = "Sheet1! C2:C" & Worksheets("Sheet1").Range("C" & Rows.Count).End(xlUp).Row ←ここを複数行用に変更するのでしょうか?いろいろ試したのですがダメでした。 ComboBox1.ListIndex = -1 ComboBox1.SetFocus End Sub Private Sub CommandButton1_Click() Dim lRow As Long With Worksheets("Sheet2") lRow = .Range("A" & Rows.Count).End(xlUp).Row .Range("A" & lRow + 1).Value = ComboBox1.Value End With End Sub (↓こちらは、リストボックスでのマクロですが、動きません) Private Sub UserForm_Initialize() With UserForm2.ListBox1 .ColumnWidths = "70;50;50" .ColumnCount = 3 End With With Worksheets("Sheet1") Dim MyA As Variant Dim i As Long For i = 2 To UBound(MyA, 1) .AddItem .List(i - 2, 0) = Cells(i, 1).Value .List(i - 2, 1) = Cells(i, 2).Value .List(i - 2, 2) = Cells(i, 3).Value Next End With End Sub Private Sub CommandButton1_Click() Dim lRow As Long With Worksheets("Sheet2") lRow = .Range("A" & Rows.Count).End(xlUp).Row .Range("A" & lRow + 1).Value = ListBox1.Value End With End Sub 教えていただけましたら幸いです。 よろしくお願いいたします。

  • ユーザーフォームのコンボボックスでINDIRECT関数を使うにはどのよ

    ユーザーフォームのコンボボックスでINDIRECT関数を使うにはどのようにすればいいでしょうか? Private Sub UserForm_Initialize() Me.ComboBox1.RowSource = "sheet1!B1:C1" ComboBox2 = "=INDIRECT(?)" End Sub ComboBox1で種類のリストが表示され、選んだ項目により ComboBox2のリストが表示されるようにしたいのですが うまくいきません。   1   2    3    4 A 種類 果物   野菜 B 果物 りんご  たまねぎ C 野菜 いちご  ピーマン D    みかん  レタス   (すべて名前を定義しています。) VBAでINDIRECT関数を使うにはどのようにすればよいでしょうか?

  • エクセルVBAについて教えてください

    エクセル2003です。 Sheet1     A    B    C     D 1 種類1 商品1 商品A  商品あ 2 種類2 商品2 商品B  商品い 3 種類3 商品3 商品C  商品う  4      商品4 商品D  商品え 5  商品5 商品E  商品お Sheet2   AB CDF     G    H     I 1         種類表示     商品表示  2         種類表示     商品表示  3         種類表示     商品表示  4         種類表示     商品表示  5         種類表示     商品表示  *Sheet2のG1をダブルクリックでSheet1のA列をユーザーフォームのコンボボックス1にてセルに表示  の上挿入 *コンボ1の選択によりコンボ2(Sheet2のI1をダブルクリック)の表示を変更する *コンボ1 種類1 → コンボ2 Sheet1のB列を表示の上セルに挿入 *コンボ1 種類2 → コンボ2 Sheet1のC列を表示の上セルに挿入 *コンボ1 種類3 → コンボ2 Sheet1のD列を表示の上セルに挿入 までは、出来きたのですが、Sheet2の2行目以降も同作業をしたいのですが、、、 Offset等を使用するのでしょうか? あまりわかっていないので詳しく教えて頂ければ幸いです コード Sheet2のコード Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Cancel = True With Target If .Address = "$F$1" Then UserForm1.Show ElseIf .Address = "$H$1" Then Dim k As Long, myFlg As Boolean, myArray myArray = Array("種類1", "種類2", "種類3") myFlg = False For k = 0 To UBound(myArray) If Range("F1") = myArray(k) Then myFlg = True End If Next k If myFlg = False Or Range("F1") = "" Then MsgBox "種類を選択して", vbOKOnly Range("F1").Select Exit Sub End If UserForm2.Show End If End With End Sub ユーザーフォーム1のコード Private Sub UserForm_Initialize() ComboBox1.RowSource = "sHEET1!A1:A3" End Sub コンボ1のコード Private Sub ComboBox1_Change() Worksheets("Sheet2").Range("F1") = UserForm1.ComboBox1.Text Worksheets("Sheet2").Range("H1") = "" Unload Me End Sub ユーザーフォーム2のコード Private Sub UserForm_Initialize() With UserForm2.ComboBox1 Select Case Worksheets("Sheet2").Range("F1") Case "種類1" .RowSource = "Sheet1!B1:B5" Case "種類2" .RowSource = "Sheet1!C1:C5" Case "種類3" .RowSource = "Sheet1!D2:D5" End Select End With End Sub コンボ2のコード Private Sub ComboBox1_Change() Worksheets("Sheet2").Range("H1") = UserForm2.ComboBox1.Text Unload Me End Sub このコードをいじくってSheet2以降も同作業できるようにお願いします

  • ComboBox1_Changeについて

    Private Sub ComboBox1_Change() Dim si As Integer With UserForm1 .ComboBox2.Text = "" si = .ComboBox1.ListIndex ' ComboBox1 の何番目が選択されたかを得る Select Case si Case 0 ' 0番が選択されていたらComboBox2 の内容をC列から作成する .ComboBox2.RowSource = "Sheet1!C1" Case 1 .ComboBox2.RowSource = "Sheet1!C2" End Select End With End Sub コンボボックス1で選択された値に対して『Sheet1!C1』が 表示されるようにするには、『.RowSource』の部分に 適切な言語がありますでしょうか。 また、『.RowSource』は、こういう効果がある等 紹介しているサイトをご存知あれば教えてください。 (探してみたのですが、めぐり合えず)

専門家に質問してみよう