• ベストアンサー

【Excel・マクロ】コンボボックス・テキストボックスからのデータの入力について

jindonの回答

  • jindon
  • ベストアンサー率43% (50/116)
回答No.2

ComboBoxを2つ (ComboBox1, ComboBox2) TextBoxを1つ (TextBox1) CommandButtonを1つ (CommandButton1) をフォームに配置してください。 該当シートをSheet1にしてあります。 Private Sub UserForm_Initialize() Dim ws As Worksheet, r As Range Set ws = Sheets("sheet1") For Each r In ws.Range("a2", ws.Cells(Rows.Count, 1).End(xlUp)) If Not IsEmpty(r) Then Me.ComboBox1.AddItem r.Text Next With Me.ComboBox2 .Column = ws.Range("b1", ws.Cells(1, Columns.Count).End(xlToLeft)).Value End With Set ws = Nothing End Sub Private Sub CommandButton1_Click() Dim ctrl As Control, tst1 As String, txt2 As String Dim ws As Worksheet, r As Long, c As Long Set ws = Sheets("sheet1") For Each ctrl In Me.Controls Select Case ctrl.Name Case "ComboBox1", "ComboBox2", "TextBox1" If Me.Controls(ctrl.Name).Value = "" Then txt1 = txt1 & ctrl.Name & vbLf Else txt2 = txt2 & Me.Controls(ctrl.Name).Value & vbLf End If End Select Next If Len(txt1) > 0 Then MsgBox "以下の値を入力してください" & vbLf & txt1, vbExclamation Exit Sub Else ret = MsgBox("以下の値を入力します" & vbLf & txt2, vbOKCancel) If ret <> vbOK Then Exit Sub r = ws.Columns(1).Find(Me.ComboBox1.Value, , xlValues).Row c = ws.Rows(1).Find(Me.ComboBox2.Value).Column ws.Cells(r, c) = Me.TextBox1.Text End If Set ws = Nothing End Sub

froma_a
質問者

お礼

こういうやり方もあるんですねー。 勉強になります。 ありがとうございました◎

関連するQ&A

  • コンボボックスからテキストボックスに連続して値を出したい

    エクセルVBAのユーザーフォームで、コンボボックスで選択したものをコマンドボタンを押すことで、同じフォーム上のテキストボックスに表示するところまではできたのですが、同じテキストボックスに追記する形でコンボボックスで選択したものを表示したいのですが、可能でしょうか。テキストボックスは複数行表示できるようにプロパティのMultiLineはTlueに設定することはしたのですが、2回目以降コンボボックスで選択した後コマンドボタンを押してもそのまま上書きするようなコードしかわかりません。 テキストボックスに、20回目まで選択項目を追加表示し、最後にはエクセルのシートにそのデータをコピーしたいのです。果たして、そのようなことは可能でしょうか。可能であればどのように記述すればよいのでしょうか。ぜひ諸先輩方のお知恵をお貸しください。よろしくお願いします。

  • ExcelVBA コンボボックスに入力があったらリンクしてテキストボックスを更新したい

    フォームで入力画面をつくっています。 あるコンボボックスのリストから項目が選択されたら、一覧からリンクさせてテキストボックスの内容を更新がしたいのです。 例えば「社員コード」のコンボボックスで「3」が選択されたら、「社員名」のテキストボックスに別シートに作成してある社員一覧から「太郎」が表示されるというようにです。 セルA1とコンボボックスをリンクさせ、セルB1にVLOOKUP(A1,一覧,2)で一覧から名前を抽出しました。コンボボックスのChangeイベントでB1の内容をテキストボックスへ送っているのですが、カーソルを別の項目へ移動するまではテキストボックスの内容が更新されません。 コンボボックスのリストを選択した時点でテキストボックスを更新する方法はないでしょうか?

  • Excel ユーザーフォームでコンボボックスを使用してデータ入力

    Excelのユーザーフォームでコンボボックスを使用して、シートのデータを表示しています。 コンボボックス:ComboBox1 テキストボックス1-3:TextBox1-3 コンボボックスのRowSource:シート名!A2:C100 コンボボックスの変更時の動作: Me!TextBox1.Value = ComboBox1.Value とここまではできたんですが、テキストボックス2にシートのB列の値を、テキストボックス3にシートのC列の値を入れたいのですが、 どのようにしたらいいのでしょうか?

  • テキストボックスとコンボボックス

    こんにちは、Accessのフォームにテキストボックスとコンボボックスを設置して、以下のような事ができないかと悩んでおります。 フォーム内には、テキストボックスとコンボボックスが設置してありまして、コンボボックス内にDB(会社名テーブル)から取得した全ての会社名が入っています。 しかし、そのレコード数が300件近くあるため、コンボボックス内から探し出すのに手間が掛かります。 そこで、コンボボックスの隣にテキストボックスを設置し、テキストボックス更新後に会社名テーブルの検索を行い、条件に合った会社名だけをコンボボックス内に入れることを考えているのですが、上手く行きません。 動作のイメージとしては下記のようになります。 (1)初期表示時はテキストボックス内に何も入力されていないので、全レコードがコンボボックス内に表示される。 (2)テキストボックスに「有限」と入力して、テキストボックスからフォーカスを移動させると、コンボボックス内に「有限」が会社名に含まれているレコードのみが入っている。 (3)テキストボックスを空白に戻すと、コンボボックス内には全レコードが表示 以上、どなたかご教授よろしくお願いします。

  • excel 2003 vba コンボボックス 日付

    始めまして初心者です。よろしくお願いします。 ワークシートのA列に日付、B列に作業内容、C列に作業人員が入力されているとします。 それをユーザーフォームから操作したいです。 ユーザーフォーム上にコンボボックスとテキストボックス1,2を設置しています。 コンボボックスのRowSourceにA列日付をセットしています。 コンボボックスを操作すると、その日付のB列、C列の内容をそれぞれテキストボックス1,2に表示させたいです。

  • アクセス97のコンボボックスについて

    OSはACCESS97です フォーム上のコンボボックスに 2列 リスト表示できるようにしています。 1列目を選択するのに 2列目も表示させている状態です。 選択すれば1列目の値は取得できます。 今回 その同じ行の1列目と2列目を それぞれ別のテキストBOXに 格納することは できるのでしょうか? 例えば 1列目に A 2列目に AA とデータがあれば Aを テキストBOX1 に AAをテキストBOX2に 格納したいのです。 宜しくお願いします。

  • Excel2010のコンボボックスについて

    ActiveXコントロールのコンボボックスについて質問です。 ListFillRangeに一番上に文字列・以下は日付の入ったセル(日付の書式はyyyy/mm/dd)を設定しています。 コンボボックスで選択する際にリストの表示は設定したセルの通りなのですが、日付を選択するとコンボボックスのテキストエリア?の表示が標準に(41172のように)なってしまいます。 これをyyyy/mm/ddのように表示することは可能でしょうか? プロパティのどこをどのようにしたら良いのでしょうか? お願いします。

  • コンボBOXで抽出した値をテキストBOXに表示したい

    入力用フォームで注文フォームを作成しているのですが、コンボBOXで商品Noを抽出し、テキストBOXに商品名を表示したいのですが、 Private Sub コンボ1_AfterUpdate() Me!テキスト1 = Me!コンボ1.column(1) End Sub と入力したのですが、他の行にも同じ商品名が表示されます。 商品NoをコンボBOXで指定し、数量を手入力という入力フォームを作成したいのです。 作成方法を教えてください。 よろしくおねがいします

  • Access テキストボックスとコンボボックス

    Access初心者で、勉強がてらデータ登録フォームを作成しています。 フォーム上にコンボボックスを設置し、 テーブルに保存されているデータを検索できるようにしたのち、 テキストボックスのコントロールソースには簡単に 「=[コンボボックス].[column](2)」としています。(それぞれの名前は仮称です) 後から、テキストボックスひとつで 「コンボボックスからの検索結果を表示させる」と 「テキスト入力も可能とする」 を共存させたいと思い始めたのですが、可能になりますでしょうか。 ただし「コンボボックスからの検索結果表示」をしたテキストボックスに対し、 その情報をフォーム上で書き換えたとしても、テーブル側のデータ書き換えは行いたくありません。 よろしくお願いいたします。

  • コンボボックスに、組み込むマクロ

    こんにちは。 一人ではどうしたらよいか、わからないので、お判りの方がいらっしゃいましたら、お願い致します。 コンボボックスで、選択したIDで、別シートからの数値が表示されるシートがあります。 総計は、今のままでも出るのですが、あるカテゴリー: 例えば(会社ID)<H1,H2,H3>を小計1、<H1,H2,H3,H4>を小計2として表示させたいのです。 関数でも、マクロでも構いませんので、方法があれば教えてください。 Sheet1(集計表) A1:コンボボックス(会社名)選択  B1:会社ID(=VLOOKUP(A1,CD表!A:D,4,FALSE)             C2:科目(10) A3:項目名 B3:項目ID C3:件数 D3:金額 (人件費)   (455)  (12) (500000) ★SUMIF関数で、各数値をdataシートから持ってきています。 Sheet2(data) A列(ID) B列(会社名) C列(科目)D列(項目名) E列(項目ID)F列(件数) G列(金額) Sheet3(CD表) A列(ID)B(会社名)C(会社ID)