Excelオーダーフォームのテキストボックス入力の方法

このQ&Aのポイント
  • Excelのオーダーフォームでテキストボックスを2つ以上作成し、同じ行ですべてを入力できるようにしたい場合、最下位の行を探して値を入力するコマンドを作成することができます。詳細な手順について説明します。
  • Excelのオーダーフォームでテキストボックス1の値を入力するためのコマンドを作成した場合、その横の列にテキストボックス2の値を入力し、さらにその横の列にテキストボックス3の値を入力するといった具体的な方法で複数のテキストボックスの値を入力することができます。
  • Excelのオーダーフォームで複数のテキストボックスの値を一括で入力する方法について説明しました。指定されたテキストボックスに値を入力するためのコマンドを作成し、同じ行ですべてを入力できるようにしましょう。
回答を見る
  • ベストアンサー

Excel オーダーフォームのテキストボックス入力について

オーダーフォームを作成し、テキストボックスを2つ以上作成し、コマンドボタンを1つ作りました。 同じ行ですべてを入力できるようにしたいのですが、どうしたらよいでしょうか? テキストボックス1の値を入力するためのコマンドは、最下位の行を探してそこに入力するようなコマンドを作っているはずです…その横の列にテキストボックス2の値を入力し、その横の列にテキストボックス3の値を入力し…というようにしていきたいのです。 Private Sub CommandButton1_Click() Dim lRow As Long With Worksheets("sheet1") lRow = .Range("A" & Rows.Count).End(xlUp).Row .Range("A" & lRow + 1).Value = TextBox1.Value End With TextBox1.Value = "" TextBox1.SetFocus End Sub

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

  • ベストアンサー
回答No.1

.Range("A" & lRow + 1).Value = TextBox1.Valueの下に、 .Range("B" & lRow + 1).Value = TextBox2.Value .Range("C" & lRow + 1).Value = TextBox3.Value を入れればいいのでは? TextBox1.Value = ""の下にも、 TextBox2.Value = "" TextBox3.Value = "" を入れれば。

shion-sakura
質問者

お礼

ありがとうございました 解決しました。

関連するQ&A

  • コンボボックスとテキストボックスをセルへ

    コンボボックスのデータを行へ表示されるよう下記の通りやりました。 続けてテキストボックスを指定した同じ行のセルへ入力されるように したいのですが、いろいろ調べたのですが、解決できず ここで助言いただけたらと思います。 また textbox1はA列 textbox2はB列 textbox3はM列 へとコンボボックスのデータを挟む形での入力となります。 ちなみにテキストボックスのプロジェクト名は変更してあります。 Private Sub CommandButton1_Click() Dim lrow As Long, i As Long With Worksheets("製品化") lrow = .Range("F" & Rows.Count).End(xlUp).Row For i = 0 To 6    .Cells(lrow + 1, i + 6).Value = itemname.List(listno, i) Next i End With End Sub

  • エクセルマクロ_テキストボックスをシートに反映(その2)

    エクセルマクロ初心者です。(2003使用_ユーザーフォーム) 先ほどは大変お世話になりました。 複数行に応用させようとしたのですが、管理番号が余計に記載(テキストボックス(出荷日など)が空欄であっても、管理番号だけはとられてしまいます)されてしまいます。すみませんが、ご教授よろしくお願いいたします。 リストボックス1のデータは、Sheet1を表示しています。→管理番号はSheet2のA最終行に記載されます。 テキストボックス1(回答日)は、上記の管理番号記載のとなりに、 テキストボックス2(出荷日)は、テキストボックス1記載のとなりに、 ・・・とテキストボックス4(コメント)(これはK列)に1行で記載されます。 ↑ここまでは、教えていただいたので、完璧なのですが、 テキストボックス2~4までの内容を、あと複数行(4件)追加できるように試してみたのですが、空欄であっても管理番号だけは常に記載されてしまいます。 テキストボックス2と5に記載されている場合は、Sheet2に値を反映させるが、空欄の場合は、値を反映させないようにしたいのです。 (Sheet1=データベース) C5   D5 管理番号 品名 アカ12 りんご アオ56 みかん クロ34 なし クロ89 すいか アオ12 もも (Sheet2=入力シート) A(管理番号)    B(回答日)    C(出荷日)   D(数量)     K(コメント) アオ56        8月9日        8月10日      75     送り先の確認 アオ56                    8月11日      80 クロ34        9月4日        9月5日      80 (今回は、2行で作成した場合のマクロを記載しました) Private Sub UserForm_Initialize() With ListBox1 .ColumnWidths = "0;0;50;50" .ColumnCount = 4 .RowSource = "Sheet1!A5:D" & Worksheets("Sheet1").Range("C" & Rows.Count).End(xlUp).Row End With End Sub Private Sub CommandButton1_Click() If TextBox2.Value Then Dim lRow As Long With Worksheets("Sheet2") lRow = .Range("A" & Rows.Count).End(xlUp).Row .Range("A" & lRow + 1).Value = ListBox1.List(ListBox1.ListIndex, 2) If IsDate(TextBox1.Value) Then .Range("B" & lRow + 1).Value = TextBox1.Value End If If IsDate(TextBox2.Value) Then .Range("C" & lRow + 1).Value = TextBox2.Value End If If IsNumeric(TextBox3.Value) Then .Range("D" & lRow + 1).Value = TextBox3.Value End If .Range("K" & lRow + 1).Value = TextBox4.Value End With End If If TextBox5.Value Then Dim llRow As Long With Worksheets("Sheet2") llRow = .Range("A" & Rows.Count).End(xlUp).Row .Range("A" & llRow + 1).Value = ListBox1.List(ListBox1.ListIndex, 2) If IsDate(TextBox5.Value) Then .Range("C" & llRow + 1).Value = TextBox5.Value End If If IsNumeric(TextBox6.Value) Then .Range("D" & llRow + 1).Value = TextBox6.Value End If .Range("K" & llRow + 1).Value = TextBox7.Value End With End If Dim myCtrl As Control For Each myCtrl In Controls If TypeName(myCtrl) = "TextBox" Then myCtrl.Value = vbNullString End If Next End Sub (ユーザーフォーム) リストボックス1=Sheet1のデータを反映 テキストボックス1(回答日) テキストボックス2(出荷日),テキストボックス3(数量),テキストボックス4(コメント)←1件目 テキストボックス5(出荷日),テキストボックス6(数量),テキストボックス7(コメント)←2件目 ↑1件目のみでコマンドボタンを押した場合は、1件目のみの管理番号取得をしたいのです。が今は、2件目が空欄でも管理番号はとられてしまいます。 長くなってしまいすみません。 どなたかご回答いただければ幸いです。よろしくお願いいたします。

  • テキストボックス値をシートセルに連続して入力

    リストボックスあ行氏名より選択しテキストボックス1~6の値を実行2クリックでsheet1"E1"から順番に入力されるがか行選択のテキストボックス値1~4を順番に"E7"から入力させたいができるでしょうか。ちなみに下記の方法しかわかりません。また、実行2を押すと同時にテキストボックスを空白にしたいのですが。どなたかコードが解る方よろしくお願いします。 Private Sub 実行2_Click() With Worksheets("入力") .Range("E1") = TextBox1.Value .Range("E2") = TextBox2.Value .Range("E3") = TextBox3.Value .Range("E4") = TextBox4.Value .Range("E5") = TextBox5.Value .Range("E6") = TextBox6.Value .Range("E7") = TextBox7.Value .Range("E8") = TextBox8.Value .Range("E9") = TextBox9.Value .Range("E10") = TextBox10.Value End With End Sub

  • テキスト値をExcel反映空欄を無視し連続入力

    テキストボックス1~30に入力した際、テキストの3行目をクリアーした後、実行ボタンを押したらExcelsheet1のABC列に入力できるがテキストに空欄が生じた場合、以下のコードでは空欄以降の値が入力できません。空欄は無視し続けてセルに入力するコード表示はあるのでしょうか、お解りになる方宜しくお願いします。 できればコード追加入力で行いたいのですが。 Private Sub 実行_Click() Dim i As Integer Dim LRow As Long LRow = Range("A" & Rows.Count).End(xlUp).Row For i = 1 To 10 If Me.Controls("TextBox" & i).Text = "" Then Exit For Range("A" & LRow + i).Value = Me.Controls("TextBox" & i).Text Range("B" & LRow + i).Value = Me.Controls("TextBox" & i + 10).Text Range("C" & LRow + i).Value = Me.Controls("TextBox" & i + 20).Text Next End Sub

  • エクセル ユーザーフォームテキストボックスについて

    テキストボックスからセルへの入力について教えていただきたいのですが、 ネットからサンプルを落として勉強しております。 以下のコードを下の画像のように見出しを3から7まで項目を増やしたい場合、 どの部分を書き換えたらいいのでしょうか? よろしくお願いいたします。 Private Sub CommandButton1_Click() Dim LASROW As Long Dim f As Long With Worksheets("Sheet1") 'A列の最終行を取得 LASROW = .Range("A" & CStr(Rows.Count)).End(xlUp).Row 'セルに書き込み For f = 0 To 2 .Range("A" & CStr(LASROW)).Offset(1, f).Value = Me.Controls("TextBox" & f + 1).Value Next End With 'TextBox1,2,3をクリア For f = 1 To 3 Me.Controls("TextBox" & f).Value = "" Next 'TextBox1にフォーカスを移動 Me.TextBox1.SetFocus End Sub

  • ユーザーフォーム上にある「テキストボックス」に小数が入力できない

    以前にユーザーフォーム上のテキストボックスにセル値反映する方法を下記(サンプル1)のようにお教えいただいたのですが、下記のようにマクロを組むとテキストボックスに小数が入力できなくなってしまいます。 どのようにしたら、テキストボックスに小数が入力できるようになるのでしょうか? お教えください。 事例)「1.234」とテキストボックスに打ち込むと「1」    「0.856」とテキストボックスに打ち込むと「0」と    なってしまいます。 (サンプル1) 'A1のデータを反映するとした場合 'OptionButton1のコード Private Sub OptionButton1_Click() TextBox1 = Sheets("Sheet1").Range("a1") End Sub 'B1に反映するとして 'OptionButton2のコード Private Sub OptionButton2_Click() TextBox1 = "" End Sub 'TextBox1のコード Private Sub TextBox1_Change() If OptionButton2 = True Then Sheets("Sheet1").Range("B1") = TextBox1.Value End If End Sub

  • エクセルVBA テキストボックス

    いつもお世話になっております。 エクセルでVBAを使いユーザーフォームのテキストボックスで 文章入力をしようと思っているのですが、少しトラブルがありましたのでお教え願います。 エクセルシートの横がa~k、縦を9~34までのシートを結合して その中にテキストボックスで入力した文章を入れるように作っています。 MultiLineとEnterKeyBehaviorをTrueにして Private Sub CommandButton1_Click() Unload Me End Sub Private Sub TextBox1_Change() Sheets("sheet1").Range("a9") = UserForm1.TextBox1 End Sub Private Sub UserForm_Initialize() TextBox1.Value = Range("a9").Value End Sub Private Sub UserForm_Activate() With Me .Left = Application.Left .Top = Application.Top .Left = .Left + 350 .Top = .Top + 80 End With End Sub という状態になっているのですが、文章を入力して16行目で改行するとシートの方で「#VALUE!」と出てきてしまうので一旦ユーザーフォームを閉じてもう一度フォームを立ち上げると 「実行時エラー’-2147352571(80020005) Valueプロパティが設定できません。種類が一致しません。」 と出てきます。 デバッグすると  Private Sub CommandButton1_Click() → UserForm1.Show  End Sub と出てきます。 なにがおかしいのでしょうか? 今回初めてVBAを作っているので初歩的な間違いかもしれませんがよろしくお願いします

  • Excel VBA テキストボックスを検索

    テキストボックス3に数値を入力し ExcelのA列にあるか検索をかける。 ある場合は、B列の同じ行に 「みーつけた!」と入力。 その設定で組んでみたのですが、 テキストボックス3にデータを6桁入力しようとすると 6桁目にオーバーフローエラーが出ます。 このプログラムの何処がおかしいのでしょうか? Private Sub TextBox3_Change() Dim Number As Integer If TextBox3.Value <> "" Then '空じゃない場合 Number = TextBox3.Value Call 検索(Number) MsgBox TextBox3.Value End If End Sub Sub 検索(ByVal Number As Variant) Dim FoundCell As Range Set FoundCell = Range("A:A").Cells.Find(What:=Number, lookat:=xlPart) If FoundCell Is Nothing Then Else FoundCell.Activate Range("O" & ActiveCell.Row).Value = "みーつけた!" End If End Sub

  • テキストボックスの文字列の変更

    windows7 excel2007でマクロ作成中の超初心者です。 エクセルファイルを開くと、ユーザーフォームが表示され そこにテキストボックスとコマンドボタンがあります。 ーーーユーザーフォームーーーーー Private Sub UserForm_Initialize() With TextBox1 TextBox1.Value = Range("Z1").Value End With End Sub ーーーテキストボックスーーーーー Private Sub TextBox1_Change() Range("Z1") = TextBox1.Value End Sub ーーーコマンドボタンーーーーー Private Sub CommandButton83_Click() Range("Z1").Value = TextBox1.Value ActiveWorkbook.Save End Sub 以上のコード四苦八苦して考えました。 そして、常にZ1の文字列が、表示され その文字列を変更して コマンドボタンをクリックすると、変更された文字列が表示されます。 自分の思うとおりにできました。 しかし、あまりに稚拙なコードで、特に ActiveWorkbook.Save なんていうコード使用したくないのです。 もっと効率的なコードはどうしたらよろしいでしょうか。

  • EXCEL VBAのユーザーフォーム上のテキストボックスの入力方法について

    すいません教えていただきたいことがあります。 EXCEL VBAのユーザーフォームについて、 コマンドボタンにタグを設定して、これにキーボードと同じ機能を持たせて テキストボックス内に入力することは可能でしょうか。 例えばコマンドボタンを「あ」~「ん」まで作り、それぞれのボタンに「あ」~「ん」までのタグを設定する。 Private Sub UserForm_Initialize() CommandButton1.Tag = "あ" CommandButton2.Tag = "い" ・・・・「ん」までボタンを作成する。 次に、 Private Sub CommandButton1_Click() TextBox1.Value = TextBox1.Value & CommandButton1.Tag End Sub Private Sub CommandButton2_Click() TextBox1.Value = TextBox1.Value & CommandButton3.Tag End Sub ・・・「ん」まで作成する。 この設定では、コマンドボタンのクリックで文字の追加はできますが、ボタンを押すと常に文字が一番後ろに追加されるため、 テキストボックスをクリックしても文章の途中に文字を挿入することが出来ません。 通常のキーボードの入力と同じようにテキストボックス内でクリックした箇所からコマンドボタンで入力を開始するような設定は可能でしょうか。 よろしくお願いします。

専門家に質問してみよう