• ベストアンサー

ユーザーフォームへのデータ入力を繰り返す方法

salfの回答

  • salf
  • ベストアンサー率42% (27/64)
回答No.3

>ユーザーフォームを使ってデータ入力をしたいと考えております。 For文を使用して上記をやるには、i が増えるたびに TextBox を入力するために処理を一旦停止しなければならないため、 その考え方は厳しいと思います。 (私が知る範囲ですが・・・。) For文を使用するとなると、登録件数分の TextBox を作成し、その値を Cell に登録していくしかないと思います。 もしくは、hana-hana3 様が提示されているようにグローバル変数として定義し、 何かの処理(ボタンを押す等)ごとに i を増やして Cell に書き込んでいく方法しか思い浮かびません。

mi158
質問者

お礼

salf様 再度の御回答ありがとうございます。 頭の中のイメージでは簡単にできそうなことなのですが、現実はそう簡単ではないのですね・・・。 現在、hana-hana3 様の御回答を参考に努力しております。 今後ともどうぞ宜しくお願い致します。

関連するQ&A

  • エクセルのユーザーフォームにあるテキストボックスへの値代入

    エクセルのユーザーフォームにあるテキストボックスへの値代入 お世話になります. エクセルのシートの入力を,ユーザーフォームを使って入力させています. 新規の場合は空欄のフォームがでるのですが,既存の列を編集するには編集用のフォームで行っています. フォームにはテキストボックスが15個(Textbox1からTextbox15まで)あり,Textbox1はCells(*,1)Textbox2はCells(*,2)というふうにセルの列との関連付けがあります. この規則性を上手く使おうと,For Nextを使っていきたいのですが, Dim r As Integer Dim i As Integer Dim t As String r = ActiveCell.Row For i = 1 To 15 t = "TextBox" & i t = Cells(r, i).Value Next i と,ここまで入力をしてみたものの,値の代入がうまくいきません. MsgboxでCells(r, i)の動きは確認できているので,おそらく,TextBox & iのところが原因と思われますが・・・ どのように修正すればよろしいでしょうか?教えてください.

  • 業務日報データベースにフォームから入力

    すいません。初心者なもので何が違うのか、足りないのかわからないので教えてください。  1行目はデータベースタイトル行となり以下、A列に日にち、B列に仮に「text1」という商品の売買数、C列に「text2」の売買数が並びます。  とりあえず、件数入力というユーザーフォームを作成しました。 入力後「入力完了」ボタンでフォームのtextbox「入力」の日にちとA列が合致したところの行にデータベースにコピー(転記)されるものを作りたいのです。 以下はわからないまま作った(いろいろ写した)コードです。 Private Sub 入力完了_Click() Dim i0 As Integer For i0 = 2 To 400 If Sheets("入力").Cells(i0, 1).Value = 件数入力.入力.Value Then 件数入力.textbox_1.Value = Sheets("入力").Cells(i0, 2) 件数入力.textbox_2.Value = Sheets("入力").Cells(i0, 3) End If Next i0 End Sub ???何が足りないのかわかりません。あとこれを修正すれば、修正用に「入力」(日にち)を入れれば、セルの値が「textbox_1」「textbox_2」に表示されるようになりますか?

  • エクセルマクロ・ユーザーフォームの初期設定

    マクロのユーザーフォームを使って、書式を作っています。 ユーザーフォームを開くと、自動的にシリアルナンバーが出るようにしたいのですが、出てきません。 どのように訂正すれば宜しいでしょうか? ※マクロのテキストを元に、値のみ変更して入力しています。 -----Private Sub UserForm7_Initialize()----- Dim myRow As Long '行番号の変数 Dim mySno As Integer '登録開始番号の変数 Dim myMaxNo As Integer '最大登録件数の変数 With Worksheets("規定") '規定'シートで担当者の入力が始まる行 myRow = 4 '登録開始番号と最大登録件数をセット mySno = 1 myMaxNo = 4 '担当者データを読み込みコンボボックスに登録 Do Until .Cells(myRow, 2).Value = "" omboBox1.Value.AddItem .Cells(myRow, 2).Value myRow = myRow + 1 Loop End With '「精算書」シートの1件目の行番号をセット myRow = 12 '「精算書」データシートの登録No.の新規入力行を求める。 Do Until Cells(myRow, 22).Value = "" myRow = myRow + 1 Loop '登録No.テキストボックスに新規の番号をセット TextBox1.Value = mySno + myRow - 12 ----End Sub------

  • エクセルのフォーム入力について

    初心者です。 フォームから自動でシート入力をしたいのですが、最下行の取得が出来ません。教えて下さい Private Sub CommandButton1_Click() '登録ボタンの動作 Dim myDCount As Long Worksheets("全体売上").Activate myDCount = Range("扱い月").Rows.Count myDCount = Range("扱い月").Cells(myDCount, 1).EntireRow.Insert 'データの最終行+1を取得 'データの入力(フォームからセルへ) With Worksheets("全体売上") .Cells(myDCount, 1).Value = TextBox1 .Cells(myDCount, 2).Value = TextBox2 .Cells(myDCount, 3).Value = TextBox3 .Cells(myDCount, 5).Value = TextBox4 .Cells(myDCount, 6).Value = TextBox5 .Cells(myDCount, 9).Value = TextBox6 .Cells(myDCount, 13).Value = TextBox9 .Cells(myDCount, 7).Value = TextBox10 .Cells(myDCount, 8).Value = TextBox11 .Cells(myDCount, 21).Value = TextBox12 End With Me.Hide End Sub

  • エクセルVBAのユーザーフォームにセルデータを

    Excel2007を使っています。 VBA初心者ですがユーザーフォームのテキストフォームにエクセル内のセルデータを表示させたいと考えています。 以下のコードをユーザーフォームのコードに書いてユーザーフォームを走らせましたがユーザーフォームは表示するのですがデータがまったく表示されません。 どなたかご教授いただけませんでしょうか。 Sub Farst() Dim Data1 As String Dim Data2 As String Dim Data3 As String Dim Data4 As String Dim Data5 As String Dim Data6 As String Dim Data7 As String Dim Data8 As String Dim Data9 As String Dim Data10 As String Dim ActiveRow As String ActiveRow = 4 With Worksheets("MDH,MDO") Data1 = .Cells(ActiveRow, 1) Data2 = .Cells(ActiveRow, 2) Data3 = .Cells(ActiveRow, 3) Data4 = .Cells(ActiveRow, 4) Me.TextBox1連番.Text = Data1 Me.TextBox2品番.Text = Data2 Me.TextBox3品番2.Text = Data3 Me.TextBox4品番3.Text = Data4 End With End Sub

  • VBAユーザーフォームを使った入力で文字列になる

    お世話になります。 ユーザーフォームを使った入力で日付や金額を入力する箇所があります。 例えば日付で2019/12/2と入力したところ、反映されるExcelシートには日付ではなく文字列で入力されたことになります。 セルの書式設定を日付にしていても文字列になってしまいます。 下記にコードを入力しておきます。 ご教示のほど宜しくお願い致します。 Sub Registration(Row As Long) ' Dim Col As Integer Dim TCount As Integer Dim CCount As Integer ' TCount = 1 ' For Col = 2 To Len(Table) ' If Mid(Table, Col, 1) = "T" Then TCount = TCount + 1 Cells(Row, Col) = Controls("TextBox" & TCount) Controls("TextBox" & TCount) = "" Else CCount = CCount + 1 Cells(Row, Col) = Controls("ComboBox" & CCount) Controls("ComboBox" & CCount) = "" End If Next Col End Sub

  • ユーザーフォーム作成後の入力方法

    まだ初心者で本を片手に作成しております。 今回ユーザーフォームで入力致しました。 エクセルのD1のセルにカウントが入力され、 順次にA3.B3,A4.B4に入力されています。 それをアクティブセルの入力出来るように変更したいのですが、 わかりませんので、宜しく教授ください。 ※range・cellsをactiveに変更しましたが、うまくいきませんでした。 下記はmoduleにしました。 Option Explicit Sub ShowForm() Worksheets("高").Activate Call 画面初期化 会員登録.Show End Sub Public Sub 画面初期化() Worksheets("高").Activate 会員登録.会員番号.Value = Application.WorksheetFunction.Max(Range("A3:A65536")) + 1 会員登録.氏名カナ.Value = "" End Sub こちらはフォームに記入しました。 Option Explicit Private Sub CommandOK_Click() Dim Row As Integer Row = Range("d1").Value + 3 If 会員登録.氏名カナ.Value = Empty Then MsgBox ("氏名カナが空欄です") Exit Sub End If Cells(Row, 1).Value = 会員登録.会員番号.Value Cells(Row, 2).Value = 会員登録.氏名カナ.Value Range("D1").Value = Range("d1").Value + 1 Call 画面初期化 End Sub

  • マクロのユーザーフォームについて(エラー)

    現在、エクセルのマクロ・ユーザーフォームを使って書式を作っています。 ユーザーフォームを幾つか使っているのですが、ある一つのフォームを開こうとするとそれだけ”インディックスが有効範囲にありません。”とエラーが出ます。 他のフォームと構文の内容はほぼ同じなのですが、それだけ開かないのです。どこが間違っているのか、教えていただけないでしょうか? ■ユーザーフォーム2からユーザーフォーム7を開きたい■ -----ユーザーフォーム2の構文----- Private Sub CommandButton2_Click() '出張期間を閉じて業務内容を開く Unload UserForm2 Dim myRow As Long Dim myMaxNo As Integer   myRow = 12 myMaxNo = Worksheets("規定").Range("E25").Value Do Until Cells(myRow, 22) = "" myRow = myRow + 1 Loop If (myRow - 12) >= myMaxNo Then MsgBox "入力できる件数を超えています。" Else UserForm7.Show ※←ここで止まってしまいます。 End If End Sub

  • vba ユーザーフォームにて質問

    勉強のためにvbaにユーザーフォームを作っています。 画像のとおり青色が塗られている箇所に、ユーザーフォームで社員名、件数を 転記したいです。 ユーザーフォーム 社員名 件数 を入力したら範囲はC3からC15転記されます。 転記終わったら、D3からD15に転記。この作業をH列まで行いたいのですが、 C3の列以降転記できません。 お答えできる方いればよろしくお願いします。 Private Sub CommandButton1_Click() Dim rc As Long Dim retu As Long Dim Ctrl As Control If Me.txtComboBox1.Value = "" Then MsgBox "社員名を選択してください!", vbOKOnly Me.txtComboBox1.SetFocus Exit Sub End If rc = MsgBox("件数を入力しますか?", vbYesNo) If rc = vbYes Then MsgBox "実行する" Else MsgBox "中止しました" Exit Sub End If retu = Cells(2, Columns.Count).End(xlToLeft).Column + 1 Cells(3, retu).Value = Me.txtComboBox1.Value ←社員を選択 Cells(4, retu).Value = Me.txtsuzuki.Value  ←売れた件数 Cells(5, retu).Value = Me.txttoyota.Value  ←売れた件数 Cells(6, retu).Value = Me.txthonnda.Value   ←売れた件数 For Each Ctrl In Me.Controls If Ctrl.Name Like "txt*" Then Ctrl.Value = "" End If Next Ctrl End Sub

  • ユーザーフォームの入力先が複数さらに集計手に負えません教えて下さい

    Worksheets("全体売上").Activate If TextBox1 = 1 Then myDCount = Range("あ").Rows.Count Range("あ").Cells(myDCount, 2).EntireRow.Insert With Range("あ") .Cells(myDCount, 2).Value = TextBox2 .Cells(myDCount, 3).Value = TextBox3 .Cells(myDCount, 5).Value = TextBox4 .Cells(myDCount, 6).Value = TextBox5 .Cells(myDCount, 9).Value = TextBox6 .Cells(myDCount, 13).Value = TextBox9 .Cells(myDCount, 7).Value = TextBox10 .Cells(myDCount, 8).Value = TextBox11 .Cells(myDCount, 21).Value = TextBox12 End With Me.Hide ElseIf TextBox1 = 2 Then myDCount = Range("い").Rows.Count Range("い").Cells(myDCount, 2).EntireRow.Insert With Range("い") .Cells(myDCount, 2).Value = TextBox2 .Cells(myDCount, 3).Value = TextBox3 .Cells(myDCount, 5).Value = TextBox4 .Cells(myDCount, 6).Value = TextBox5 .Cells(myDCount, 9).Value = TextBox6 .Cells(myDCount, 13).Value = TextBox9 .Cells(myDCount, 7).Value = TextBox10 .Cells(myDCount, 8).Value = TextBox11 .Cells(myDCount, 21).Value = TextBox12 End With Me.Hide と続いてます。フォームから各範囲には入力が出来るようになったのですが、文字列となってしまい計算が出来ません。 数値として入力をしたいのが、TextBox2、TextBox3、TextBox4、TextBox9、TextBox12です。 TextBoxからセルに転記させる時に数値に変換する方法はありますでしょうか? End If Unload Me End Sub 又、セル範囲が”あ”~”し”とあります。例、範囲 あはB1~V2です。(1行目は項目)それぞれ条件に合った時にTextBoxから行を足してセルに入力されるのですが 行が変動するのでsumでは計算出来ません。ユーザーフォームのTextBox12からセルに入った数値の合計を求めるプログラムがありましたら、どなたかお知恵を下さい。 ちなみにセル範囲あの時、TextBox12はV2に入ります。範囲い~しの時も教えて頂きたいです。同じシートで入力される範囲が12か所あるので私では分りません。よろしくお願いします。