• 締切済み

Excel VBA: コンボボックスの値取得

社内システムのIEブラウザからExcelに貼り付けたテキストボックスは、以下のように取得できました。 Sheets("伝票").Range("B1").Value = Sheets("伝票").HTMLText1.Value ただ、コンボボックス(ドロップダウンメニューが出てくるもの)の選択文字列は以下で取得できませんでした。取得方法はありますでしょうか? Sheets("伝票").Range("B1").Value = Sheets("伝票").HTMLSelect1.Value

みんなの回答

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.3

>コンボボックスがMultiSelect=Trueの場合や複数列格納している場合は あほな回答でした。 ListBoxはMultiSelectができますが、コンボボックスではMultiSelectは 設定できませんでした。 失礼しました。

buzhidao
質問者

お礼

いろいろ試しているのですが、まだ解決していません。 コンボボックスというのではないかもしれません。。。 一度、締め切ります。 ありがとうございました。(^^)

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.2

#1です。 コンボボックスがMultiSelect=Trueの場合や複数列格納している場合は 記述が違ってきます。

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.1

Me.ComboBox1.Value Me.ComboBox1.List(Me.ComboBox1.ListIndex) などとします。

buzhidao
質問者

お礼

ありがとうございます。 会社で試してみます。(^^)

関連するQ&A

  • Excel VBA - 繰り返し文

    以下を簡潔に繰り返し文で書きたいのですが、うまくいきません。 よろしくお願いします。 Sub Macro1() Sheets("最初").Range("M1").Value = Sheets("最初").HTMLText1.Value Sheets("最初").Range("M2").Value = Sheets("最初").HTMLText2.Value Sheets("最初").Range("M3").Value = Sheets("最初").HTMLText3.Value Sheets("最初").Range("M4").Value = Sheets("最初").HTMLText4.Value Sheets("最初").Range("M5").Value = Sheets("最初").HTMLText5.Value Sheets("最初").Range("M6").Value = Sheets("最初").HTMLText6.Value Sheets("最初").Range("M7").Value = Sheets("最初").HTMLText7.Value Sheets("最初").Range("M8").Value = Sheets("最初").HTMLText8.Value Sheets("最初").Range("M9").Value = Sheets("最初").HTMLText9.Value Sheets("最初").Range("M10").Value = Sheets("最初").HTMLText10.Value End Sub

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

    ユーザーフォーム上のコンボボックスから値を選択し、その値を変数として使いたいのですが、うまくいきません。 コンボボックスのコードで Private Sub ComboBox1_Change() moji1 = ComboBox1.Text Range("A1").Value = moji1 のようにすれば、コンボボックスから値を選んだ時点でA1セルにその値をコピーできるのですが、同じユーザーフォーム上にあるコマンドボタンをクリックして実行する「マクロ1」にてこのmoji1という変数を使いたいのです。 マクロ1にて、上記と同じ Range("A1").Value = moji1 というコードを記述しても、ユーザーフォームで選択した値が消えており、empty値となってしまいます。 原因をご存知の方はお教えください。

  • コンボボックスのvba 作成の仕方

    私は、月別にデータを作っています。なので、月ごとにデータを見られるようなボタンを作成したいです。 現在組んでいるマクロは、ボタン(普通の四角いもの)を押すごとに、翌月データをコピペするというものになっています。 (以下、現在のコード記載) Sub auto_open() Dim wkm As Long Dim wkn As Long Dim wkt As Variant Dim wks As Variant Dim dt As Date Dim mi As Integer dt = Date mi = Month(dt) wkt = Array(0, 10, 11, 12, 1, 2, 3, 4, 5, 6, 7, 8, 9) wks = Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12) wkm = wkt(mi) Call Macro1(wkm) Sheets("住宅資金").Range("A3") = wks(mi) End Sub Sub Next_Month() Dim wks As Variant Dim dt As Date Dim mi As Integer wks = Array(0, 10, 11, 12, 1, 2, 3, 4, 5, 6, 7, 8, 9) If Sheets("住宅資金").Range("A3") = 12 Then wkm = 10 Else wkm = wks(Sheets("住宅資金").Range("A3") + 1) End If Call Macro1(wkm) wks = Array(0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 1, 2, 3) Sheets("住宅資金").Range("A3") = wks(wkm) End Sub Sub Macro1(ByVal wkm As Long) With Sheets("入力") Sheets("住宅資金").Range("D5:D23").Value = .Range("C5:C23").Offset(, wkm - 1).Value Sheets("住宅資金").Range("J5:J23").Value = .Range("C28:C46").Offset(, wkm - 1).Value Sheets("住宅資金").Range("P5:P23").Value = .Range("T28:T46").Offset(, wkm - 1).Value Sheets("住宅資金").Range("O5:O23").Value = .Range("T5:T23").Offset(, wkm - 1).Value Sheets("住宅資金").Range("F5:F23").Value = .Range("O5:O23").Value Sheets("住宅資金").Range("L5:L23").Value = .Range("O28:O46").Value End With With Sheets("目標") Sheets("住宅資金").Range("C5:C23").Value = .Range("B4:B22").Offset(, wkm - 1).Value Sheets("住宅資金").Range("I5:I23").Value = .Range("B27:B45").Offset(, wkm - 1).Value End With With Sheets("前年同期") Sheets("住宅資金").Range("H5:H23").Value = .Range("C5:C23").Offset(, wkm - 1).Value Sheets("住宅資金").Range("N5:N23").Value = .Range("C28:C46").Offset(, wkm - 1).Value Sheets("住宅資金").Range("Q5:Q23").Value = .Range("T5:T23").Offset(, wkm - 1).Value End With End Sub さて、現在作りたいと思っているものを以下に記述します。 普通の四角いボタンではなく、コンボボックスを使用して、矢印(▼)を押すことによってリストが表れ、 「1月」に合わせたら1月のデータがコピペされる、「8月」に合わせたら8月のデータがコピペされる、というものを作りたいと思っています。 以下のような空欄の表を作成したシートがあります。        A    B    C   D 1      目標  実績  …   … 2 ○支所   3 △支所 4  ・ 5  ・ 6  ・ 別のシートに、手入力した月別のデータがあります。 空欄のシートのどこかにコンボボックスを作り、別シートの○月のデータを貼り付けられるようにしたいと思っています。 コンボボックスの作り方がわからず、後一歩のところでつまずいてしまいました。 知恵をお貸しください。 よろしくお願いいたします。

  • 【Excel VBA】コンボボックスで選択した値の取得

    Excel2003を使用しています。 SheetAから、あるシート(都度選択)にデータを転記するマクロを作成しています。 当初は、下記のように InputBox で、転記先のシート名を入力して、そこからシート名を取得していましたが、確実にシート名を取得するために、ユーザーフォームのコンボボックスから選択するように、変更したいと思います。  MySht = InputBox("転記するシート名を入力してください")   With Sheets("SheetA")    .Range("H6:J9").Copy     Sheets(MySht).Range("M7") ~ これを、コンボボックスで選択した値を上記のコードでいう、MySht に設定(?)したいのですが、どのようにしたらいいでしょうか? コンボボックスで選択した値をセルに転記する方法はわかるので、とりあえず、今は一旦セルに転記していますが、コード内で直接(…というと変かもしれませんが)設定できるのであれば、教えていただきたいのです。 自分だけが使用するものならば、InputBox で十分なのですが、選択するシートのシート名に数字が含まれているので、全角や半角の入力ミスを避けるために、コンボボックスで選択するようにしたらどうかと思ったのですが、何か他にも良い方法があれば、あわせて教えていただけると嬉しいです。 よろしくお願いします。

  • エクセルVBAコンボボックスについて

    図の左のように、商品リスト欄のセルA3から下方向に大分類(A16まで14種類) セルB3~O3(Bから数えて14個目のO)列から下方向に小分類があります。 P2~P11には1から10までの数字が入っています。 図の右側がユーザフォームで、コンボボックスの番号を入れています。 コンボボックス「1.4.・・・28.」までは大分類を選べるようにして、 コンボボックス「2.5.・・・29.」までは左の大分類に応じた小分類の値を表示させたいと思っています。 大分類「111」→小分類「あ~そ」 大分類「222」→小分類「た~と」といった具合です。 そのコンボボックスの値を指定したセルに入力しようと思っています。 下のように記述した結果、問題が発生しました。 (1)大分類で14個ほどあるリストの3つほどしかでてこない。 (2)Select Caseの構文を使用していて、大分類が14個だから「Case 13」までと しているが、「大分類の数-1」までの変えられる数までにしたい。 アドバイスをいただけると助かります。 ------------------------------------------------------------------ Private Sub UserForm_Initialize() Dim MyVar1 As Variant MyVar1 = Sheets("商品リスト").Range("A3:A" & Range("A3").End(xlDown).Row) Dim MyVar20 As Variant MyVar20 = Sheets("商品リスト").Range("P2:P" & Range("P2").End(xlDown).Row) '種類欄を指定 With ComboBox1 .List() = MyVar1 End With ※・・・(省略)・・・ コンボボックス4から25まで※ With ComboBox28 .List() = MyVar1 End With '数量欄を指定 With ComboBox3 .List() = MyVar20 End With ※・・・(省略)・・・ コンボボックス6から27まで※ With ComboBox30 .List() = MyVar20 End With End Sub '1番目 Private Sub ComboBox1_Change() Dim MyVar1 As Variant ※・・・(省略)・・・ MyVar2~13 As Variant※ Dim MyVar14 As Variant Dim MyVar20 As Variant MyVar1 = Sheets("商品リスト").Range("A3:A" & Range("A3").End(xlDown).Row) ※・・・(省略)・・・ B列からN列まで※ MyVar15 = Sheets("商品リスト").Range("O3:O" & Range("O3").End(xlDown).Row) MyVar20 = Sheets("商品リスト").Range("P2:P11") Select Case ComboBox1.ListIndex Case 0 With ComboBox2 .List() = MyVar2 End With ※・・・(省略)・・・ Case1~ Case12 ※ Case 13 With ComboBox2 .List() = MyVar15 End With End Select End Sub

  • コンボボックス

    コンボボックスでドロップダウンリストをつくりたいのですが、どうやってデータを入れたらよいのでしょうか。 コンボボックスができてもデータがはいりません。 教えてください。

  • エクセルVBAコンボボックスについて

    リスト欄のセルA3から下方向に大分類(A16まで14種類)があります。 コンボボックス1に大分類をリスト化して選べるようにしたいと思っています。 しかし、(1)のようにVBAを記入して、マクロを実行すると、コンボボックス1には、 大分類で14個あるリストの4つしか出てきません。 -(1)(抜粋)--------------------------------------------------------- Private Sub UserForm_Initialize() Dim MyVar1 As Variant MyVar1 = Sheets("リスト").Range("A3:A" & Range("A3").End(xlDown).Row) ------------------------------------------------------------------ (2)のように記述してマクロを実行すると、コンボボックス1には、14個全てが表示されます。 -(2)(抜粋)--------------------------------------------------------- Private Sub UserForm_Initialize() Dim MyVar1 As Variant MyVar1 = Sheets("リスト").Range("A3:A16") ------------------------------------------------------------------ 原因がわかる方、いらっしゃいませんか? 出来れば、リスト欄のA列は14個よりも増える可能性があるので、Range("A3:A" & Range("A3") .End(xlDown).Row)のような範囲の指定がしたいです。 なお、リストシートのA3を選択して、「Ctrl+↓」でA16が選択されました。

  • コンボボックスにつきまして

    JComboBoxを使って、コンボボックスを作成したいのすが、 表示は名称で、実際の値取得はコードで取りたいのですが、 可能でしょうか? 例えば、 コード  名称 001   りんご 002   ぶどう 003   パイン というデータをセットし、 コンボボックスのドロップダウンでは「りんご」を選択したときには、 「001」という値を取得したいのです。 よろしくお願いします。

    • ベストアンサー
    • Java
  • excel vba コンボボックス更新について

    お世話になります。 シート1のA1セルに 名前 B1セルに期限と入力してあり A2セル リンゴ  B2セル 1703 A3セル バナナ  B3セル 1703 A4セル ぶどう  B4セル 1704 A5セル キウイ  B5セル 1704  A6セル お米   B6セル 1706 A7セル 酒    B7セル 1708 以下 同様に入力しています。 B2以下に入力されているのは4桁の数字で 小さいほうから大きいほうに並んでいます。 同じ数字が入力されていることもあり、 また欠番も存在します。 この期限をユーザーフォームにコンボボックス設置して 重複なし表示させています。以下のコードです。 Private Sub UserForm_Initialize() Worksheets("Sheet1").Select 名前.Value = Cells(2, 1).Value 期限.Value = Cells(2, 2).Value X = 期限.Value nextGyo = Range("B:B").Find(X).Row 'Dim リスト As New Collection 'Dim 列 As String, 上端セル As String, 最下端セル As String 'Dim セル範囲 As Range, 各セル As Range 列 = "B" '※3 上端セル = 列 & "2" '※4 最下端セル = 列 & "65536" With Worksheets("Sheet1") '※5 Set セル範囲 = .Range(.Range(上端セル), .Range(最下端セル).End(xlUp)) End With For Each 各セル In セル範囲 'セル範囲の各セルについて繰り返し処理 On Error Resume Next '次行が実行時エラーならその次行から継続 リスト.Add 各セル.Value, CStr(各セル.Value) 'Collectionオブジェクトにメンバを追加 If Err.Number = 0 Then '実行時エラーが発生していなければ Me.期限.AddItem 各セル.Value 'コンボボックスのリストに項目を追加 End If On Error GoTo 0 Next End Sub 上記の例だと「1703」「1704」「1706」「1708」の 4種類から選択できる状態です。 ここでたとえば コンボボックスで1704を選択して (コンボボックスには自由に入力はさせずにリストの中から選ばせるようにしています) ユーザーフォーム上のボタンを押すと A4セル ぶどう  B4セル 1704 A5セル キウイ  B5セル 1704 を行削除して空白行を上に詰めるコードを書きました。 ただこのときコンボボックスからは リストの更新がされないので「1704」が選択できてしまいます。 削除した時点で「1704」がない状態にするには (自動更新をかける) どうしたらよいでしょうか? (削除するコードの中に  Call UserForm_Initialize と書いてみたのですが  何も変化ありませんでした) どうかよろしくお願いいたします

  • VBA コンボボックスの重複削除

    こんばんわ。 VBAをはじめたばかりで、コンボボックスで困っています。 sheet1にコンボボックスを配置して、sheet2のA列にあるデータ (例) A列          1          1          2 を コンボボックスに          1          2 というようにデータを入れたいのですが、どの様にしたらよいのでしょうか? sheet1.コンボボックス.value=workSheet("sheet2).Range(A1:A3).value とすると1・1・2というようにA列の値がすべて入ってしまいました。 これを1・2というようにコンボボックスに入れたいです。  よろしくお願いいたします。

専門家に質問してみよう