エクセルVBA コンボボックスの値の転記

このQ&Aのポイント
  • エクセルVBAでユーザーフォームを表示し、コンボボックスで年と月を選択させる方法について教えてください。
  • 選択された年と月を元に、ユーザーフォームを閉じるときにシート1のC2セルに値を入力するマクロの作成方法を教えてください。
  • 現在のコードでは値の入力がうまくできないようです。修正方法を教えてください。
回答を見る
  • ベストアンサー

エクセルVBA コンボボックスの値の転記

エクセルVBAの質問です。 ユーザーフォームを表示し 年を選択するコンボボックス1 月を選択するコンボボックス2 を入力してもらい ユーザーフォームを閉じるときに sheet1のワークシートのC2セルに 「コンボボックス1の値」+「年」+と「コンボボックス2の値」+「月」をつなげて 入力できるというようなマクロを考えています。 下記の様に考えてみたのですが、 うまく入力できませんでした。 Private Sub UserForm_Initialize() With ComboBox1 .AddItem "2021" .AddItem "2022" .AddItem "2023" .AddItem "2024" End With With ComboBox2 .AddItem "1" .AddItem "2" .AddItem "3" .AddItem "4" .AddItem "5" .AddItem "6" .AddItem "7" .AddItem "8" .AddItem "9" .AddItem "10" .AddItem "11" .AddItem "12" End With Private Sub CommandButton1_Click() 'ユーザーフォームを閉じる Unload UserForm1 'ユーザーフォームの値をセルC2に入力 With Worksheets("sheet1") .Cells(2, 3).Value = "ComboBox1.Text" & "月" & "ComboBox2.Text" & "日" End With End Sub どのように修正すればいいでしょうか? よろしくお願いします。

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率65% (1614/2452)
回答No.1

コントロール(ComboBox)の値ところは「"」で囲まなくていいので .Cells(2, 3).Value = "ComboBox1.Text" & "月" & "ComboBox2.Text" & "日" を .Cells(2, 3).Value = ComboBox1.Text & "月" & ComboBox2.Text & "日" にしてみてください。

nenosuke
質問者

お礼

回答いただきありがとうございます。 試してみたところうまくいきました。 どうもありがとうございました

関連するQ&A

  • エクセルVBAのコンボボックス

    エクセル2002使用です。 生年月日とかを入力できるコンボボックスを作っているのですが、同じコンボボックスを5つ作ろうとしています。例えば和暦を入力するには Private Sub userform_initialize() With ComboBox(1) .AddItem "昭和" .AddItem "平成" End sub でうまくいくのですが、2個目から5つ目まで同じものを作成する場合、 With ComboBox(2) ・・・ With ComboBox(3) ・・・ と、コードを記述していかないと駄目なのでしょうか? できれば With ComboBox(1: 5) とか、 変数を使って Private Sub userform_initialize() Dim i As Integer For i = 1 To 5 With ComboBox(i) .AddItem "昭和" .AddItem "平成" End With Next End sub といった具合にまとめたいのですが、コンパイルエラーとなってしまいます。 初歩的な質問で申し訳ないのですが、よろしくお願いします。

  • コンボボックスにリストが表示されません・・・

    ユーザーフォーム(UserForm)にコンボボックス(ComboBox1)を作ってリストを入れました。 しかしユーザーフォームを実行してもコンボボックスに何もリストが出てきません。 なにが悪いのでしょうか?チュートリアルどおりにやっているのですが・・・(T T) Private Sub UserForm_Initialize() With ComboBox1 .AddItem "東京" .AddItem "名古屋" .AddItem "福岡" End With End Sub Windows2000+Excel2000です。

  • EXCEL VBA コンボボックスでのLISTINDEXの値

    初めて質問させていただきます。 EXCEL VBAでコンボボックスを設定したときのLISTINDEXの値についてですが、 コンボボックスがフォーム内に3つ(ComboBox1,2,3)あり、次のようなコードの入力を行い、 ComboBox1 Sub Userform_Intialize()  With CcomboBox1   AddItem"AAA" '・・・ここの値は0ですね   AddItem"BBB" '・・・ここの値は1ですね  End With End Sub sub ComboBox1_Change()  Me.combobox2.Clear  Select Case Me.ComboBox1.ListIndex   Case 0   Me.ComboBox2.AddItem "2AAA" '・・・ここの値は0ですね    Me.ComboBox2.AddItem "2BBB" '・・・ここの値は1ですね   Case 1   Me.ComboBox2.AddItem "2CCC" '・・・ここの値は何になりますか?   Me.ComboBox2.AddItem "2DDD" '・・・ここの値は何になりますか?  End Select End Sub このcombobox2の4つの項目から、 更にcombobox3の選択項目に分岐するように設定したいのです。 わかりやすいように、ComboBox3もComboBox2のように作成したいのですが、 このように入力した場合、ComboBox2で"2CCC"を選択した場合、 ListIndexの値が2ではないようなのです。 この"2CCC"と"2DDD"のListIndex値はいくつになるのでしょうか? どなたか教えて下さい。

  • VBA コンボボックス項目追加?

    エクセル VBA コンボボックスの項目入荷についてですが 入力フォームを開いたときに Private Sub UserForm_Activate() ComboBox1.AddItem ("本社") ComboBox1.AddItem ("東京支社") ComboBox1.AddItem ("大阪支社") End sub のようにコンボボックスに項目をだすことはわかったのですが、 フォームをを開いたときにワークシートを全てを自動で 項目に表示する方法はありますでしょうか? 宜しくお願いいたします。

  • VBA コンボボックスのコード記述位置について

    初心者です。初歩的な質問でお恥ずかしいのですが、コンボボックス用のコードを 記述するには「Private Sub UserForm_Initialize()」の下に記述するしかないのでしょうか。 例えば、縦長のユーザーフォームに上からコンボボックス1、コマンドボタン、コンボボックス2を 配置した場合、コードの記述をコンボボックス1の処理、コマンドボタンの処理、コンボボックス2の処理と、順番通りに記述することは出来るのでしょうか? 現在はこのようにコードを記述しています。 Private Sub UserForm_Initialize() With ComboBox1 .AddItem "赤色" .AddItem "青色" .AddItem "黄色" End With With ComboBox2 .AddItem "緑色" .AddItem "黒色" .AddItem "紫色" End With End Sub Private Sub CommandButton1_Click() MsgBox "テスト" End Sub 本当であれば、下記のように順番通りに記述したいです。 Private Sub UserForm_Initialize() With ComboBox1 .AddItem "赤色" .AddItem "青色" .AddItem "黄色" End With End Sub Private Sub CommandButton1_Click() MsgBox "テスト" End Sub With ComboBox2 .AddItem "緑色" .AddItem "黒色" .AddItem "紫色" End With End Sub With ComboBox2の上に、必要なコードを記述すればできるのでしょうか。 ご教示下さい。

  • Excel VBAでコンボボックスで選択

    コンボボックスで選択したいと思っていますがうまくいきません。 教えてください。 Private Sub userform_initialize()  With ComboBox2   .Font.Size = 12   .AddItem "A"   .AddItem "B"   .AddItem "C"  End With If ComboBox2 = "A" Then  With ComboBox3   .Font.Size = 12  .AddItem "a-1"  .AddItem "a-2"  End With ElseIf ComboBox2 = "B" Then With ComboBox3   .Font.Size = 12  .AddItem "b-1" .AddItem "b-2" End With Else: ComboBox2 = "C" With ComboBox3 .Font.Size = 12 .AddItem "c-1" .AddItem "c-2" End With End If End Sub コンボボックス2で"A"を選んだら、コンボボックス3には"a-1とa-2"の選択したい のですが、"c-1,c-2"しかでません。よろしくお願いします。

  • 同じコンボボックスを二つ以上作る方法

    今同じ内容を表示するコンボボックスを二つ作ろうと思っているのですがつくり方がわかりません。 どのようにすれば一つのプログラムで二つのコンボボックスを作れるのでしょうか 例: 表示では はい いいえ プログラム: Private Sub UserForm_Initialize() ComboBox1.AddItem "はい" ComboBox1.AddItem "いいえ" End Sub Private Sub UserForm_Initialize() ComboBox2.AddItem "はい" ComboBox2.AddItem "いいえ" End Sub ↑のような作り方ではなく簡略化して Private Sub UserForm_Initialize() ComboBox●.AddItem "はい" ComboBox●.AddItem "いいえ" End Sub ●部を変更できれば一つのプログラムでコンボボックスを2つ操作できると思うのですがどのようにすればよろしいでしょうか?

  • Excel コンボボックス2つ以上の時のコード

    ユーザーフォームでコンボボックスを2つ作ったのですが、1つだけのときはうまくいったのですが、二つ目をつくったら、エラーが出てしまいました。 コード入力は、Initializeに入力してあります。 Private Sub UserForm_Initialize() ComboBox1.Style = fmStyleDropDownCombo ComboBox1.RowSource = "sheet1!F2:F7" ComboBox1.ListIndex = -1 End Sub Private Sub UserForm_Initialize() ComboBox2.Style = fmStyleDropDownCombo ComboBox2.RowSource = "sheet2!B2:B3" ComboBox2.ListIndex = -1 End Sub コンボボックス1だけはうまくいったのですが、コンボボックス2をつくったら名前が適切でありませんとエラーがでました。 どのようにしたらいいですか?教えてください。

  • コンボボックスから検索するVBA(エクセル)

    sheet1にメニュー画面 sheet2に一覧表を作成しました。 (1)sheet1でユーザーフォームを起動させる。 (2)ユーザーフォームにはコンボボックスを1つ、コマンドボタンを2個配置しました  (3)コンボボックスのプルダウンメニューはsheet2の一覧表より取得しました (4)sheet2の一覧表は今後データが増えていきます(データは4行目以降) という条件で以下のコードを作成しました。 (1)と(2)のコマンドボタンは正常に作動しています。 コンボボックスのコードのみ書いています。 Private Sub UserForm_Initialize() Dim i As Long With Worksheets("sheet2") For i = 4 To .Cells(Rows.Count, 3).End(xlUp).Row ComboBox1.AddItem Cells(i, 3).Value Next i End With End Sub このときプルダウンメニューを押しても空欄が表示されてしまいます。 できない理由が分かりません。よろしくお願いします。 また、Private Sub ComboBox1_Change()とは何が違うのでしょうか? 最近 VBAを始めた初心者です。よろしくお願いします。

  • エクセルVBAのユーザーフォームのコンボボックス

    エクセルVBAのユーザーフォームのコンボボックスの入力と ファイルの保存で質問です。 エクセルVBAで ユーザーフォームのコンボボックスを使用して 1月から12月までを選択してもらい、 選択した月を コマンドボタン押した際に、 セルにその値を入力するような マクロを作成しようとしています。 またコンボボックスは標準で6月が表示されるようにしたいと思います。 ユーザーフォームのコードの一部です。 Private Sub UserForm_Initialize() Dim m As Integer For m = 1 To 12 UserForm1.ComboBox1.AddItem m Next ComboBox1.ListIndex = 6 Private Sub CommandButton1_Click() 'ユーザーフォームを閉じる Unload UserForm1 mold  '↑フォームを閉じた後に実行される標準モジュールのマクロ名です End Sub 標準モジュールのコード 名称 「mold」 Sub mold() ActiveWorkbook.SaveAs _ Filename:="C:\_" & UserForm1.ComboBox1.Text & "月", _ FileFormat:=xlOpenXMLWorkbook ActiveWorkbook.Close ThisWorkbook.Activate ' End Sub の様に作成して実行してみたのですが、 コンボボックスで11月を選択しても 6月のままのファイルになってしまいます。 どのようにしたら、 コンボボックスで選択した値を ファイル名として保存できるでしょうか? 全部のコードを記載しますと 長くなってしまうと思い、 関連するコードを記載して質問しました。 分かりづらい所もあるかと思いますが よろしくお願いします。

専門家に質問してみよう