• ベストアンサー

ユーザーフォームの入力をシートに反映

かなりの初心者(始めて3日)ですが宜しくお願いします。 しかも2点あります。。。 (1)ユーザーフォームにある大量のテキストboxないし、optionboxをエクセルのsheet2に反映させたいです。 で、地道に With Sheets(2) .Range("A22").Value = OptionButton184.Value .Range("A23").Value = OptionButton185.Value .Range("A24").Value = OptionButton186.Value .Range("A25").Value = OptionButton187.Value とAの行を手で直していたのですが、途中で間違えて、手直しは断念しました。そこで、思いついたのが、「ひとつ下のセルに記述する」ということでした。 で、本を見ながら考えたのが、 With Sheets(2) Range("A1").Select ActiveCell.Offset(1, 0).Value = TextBox1.Text ActiveCell.Offset(1, 0).Value = TextBox2.Text ActiveCell.Offset(1, 0).Value = TextBox3.Text まずA1を指定させて、下にずらしていけるかと思ったのですが、全然上手くいきません。しかもsheet1のA1を選択してるようです。どうしてでしょうか??? (2)フォームOKボタンを押して、上記の処理をしても、フォームに記入したものが次にフォームを開いた時に消えていないように、 Me.Hide End Sub で終わらせたのですが、次に開いても残っていません。 無知でお恥ずかしいですが、宜しく御願い致します。

noname#40795
noname#40795

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

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.3

>まずA1を指定させて、下にずらしていけるかと思ったのですが、全然上手くいきません。しかもsheet1のA1を選択してるようです。どうしてでしょうか???   With Sheets(2)     Range("A1").Select     ActiveCell.Offset(1, 0).Value = TextBox1.Text 多分、Sheet1からこのユーザーフォームが開かれているのでは? 『Range("A1").Select』があり『ActiveCell』を基準にしているので、『With Sheets(2)』が意味をなしていません。 書くなら、   Sheets(2).Activate   With Sheets(2).Range("A1")     .Offset(1, 0).Value = TextBox1.Text これでSheet2のA2から書き出すはずです。(未確認です) >で終わらせたのですが、次に開いても残っていません。 『残っていない』のではなく、最初にデザインした状態が再度表示されているわけです。 残すためには、プロパティ『ControlSource』にセルを指定する必要があります。 または、下の例示のように『Initializeイベント』で値を取得する必要があるでしょう。 質問では、オプションボタンやテキストボックスが沢山あるみたいですが、一括で処理する例です。 オプションボタン1~80の値をA1~A80に、 テキストボックス1~80の値をB1~B80に 書き込んでいます。 説明を簡略化するために、オプションボタン等の番号と書き出すセルの行番号を一致させています。 終了後、最後フォームを開いた時に書き込んだ値を取得するために、『Unload』で終わり、 『UserForm_Initialize』で取り込んでいます。コード表現は書き込みと逆ですね。 'Sheet2へ書き込む Private Sub CommandButton1_Click()   Dim i As Integer   With Worksheets(2)     'オプションボタンの値を書き出し     For i = 1 To 80       .Range("A" & i) = UserForm1.Controls("OptionButton" & i).Value     Next     'テキストボックスの値を書き出し     For i = 1 To 80       .Range("B" & i) = UserForm1.Controls("TextBox" & i).Text     Next   End With End Sub 'Formを呼び出したとき、Sheet2から読み込む Private Sub UserForm_Initialize()   Dim i As Integer   With Worksheets(2)     'オプションボタンの値を読み込み     For i = 1 To 80       UserForm1.Controls("OptionButton" & i).Value = .Range("A" & i)     Next     'テキストボックスの値を読み込み     For i = 1 To 80       UserForm1.Controls("TextBox" & i).Text = .Range("B" & i)     Next   End With End Sub '終了ボタン Private Sub CommandButton2_Click()   Unload Me End Sub

noname#40795
質問者

お礼

ばっちり出来ました! ありがとうございます!! 本当に本当に助かりました!

noname#40795
質問者

補足

長い回答ありがとうございます。 ご指摘の通り、sheet1にフォームを開くボタンがあって、そのフォームに記入した内容をsheet2に記述させたいのが全体の流れです。 つまり、長々と500行近くコードにA1、A2...と記述するのではなく、変数を使って変化させると言う認識で良いのでしょうか? と言うことは、全部Aの列に入れたい私はtextboxとoptionbuttonも数字をならびにしないといけないと言うことですか?(今はぐちゃぐちゃ状態です。1~766まで。。。) でも、記述がその分、短くて良いと言うことですよね。今の番号ぐちゃぐちゃ状態でやるには、Do...Loopとかいうのを使って可能ですか?(本を見ました。)

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

VBAプログラムを組みたいのかもしれませんが、 この件では、エクセルVBAならプログラムにしないで処理できます。 テキストボックス、オプションボタンともデザインモード でマウス右クリックすると「プロパティ」が出てきて、 その中の項目に「LinkedCell」があります。 これにA22やA23を入れていけば、連動します。 この辺を操作ですませ、プログラムにしないこと(コントロールも手で貼りつけたでしょう)こそVBなどの目指しているところだと思います。 VBならコントロール配列がつかえること、コントロールを配列にすることを思い出してください。 また私はOFFSETはCells(i+1,j+1)とかすれば良いので、使いません。

noname#40795
質問者

補足

お返事有り難うございます。 それも考えたのですが、社内のエクセル苦手な人々に記入してもらう為、いじられないように&全角とかで記入されないようにユーザーフォームにしてみたのですが・・・逆に大変な事始めちゃったかしら。。。

  • postpapa
  • ベストアンサー率41% (27/65)
回答No.1

初めて3日ですでここまで考えられたら大したものです。 さて >With Sheets(2) >Range("A1").Select >ActiveCell.Offset(1, 0).Value = TextBox1.Text >ActiveCell.Offset(1, 0).Value = TextBox2.Text >ActiveCell.Offset(1, 0).Value = TextBox3.Text With Sheets(2) Range("A1").Select Selection.offset(1).Select Selection.Cells.Value = TextBox1.Value Selection.Offset(1).Select Selection.Cells.Value = TextBox2.Value . . . Ene With offsetは行方向、列方向に移動出来ます。 offset(1).Selectは、行方向に一つ移動します。 offset(,-1).Selectは、列方向に一つ移動します。 今アクティブなセルを基準に考えれば 上に一つ移動は offset(-1).Select 下に一つ移動は offset(1).Select 右に一つ移動は offset(,1).Select 左に一つ移動は offset(,-1).Select 上に移動し右に移動する場合はoffset(-1,1).Selectとなります。 あと個人的には、TextBoxの値を取る場合、Valueで収得した方が良いですよ。特にセルの値を取る場合は必ずValueで設定して下さい。 ユーザーフォームを非表示は Unload命令で、オブジェクトをメモリーから削除します。 Hideメソッドはメモリー上から削除されませんから、マクロで操作可能ですので少し工夫して下さい。 プログラミングは、100人いれば100通りのやり方がありますのでこれが正解だとは言い難いです。 工夫次第では素人のアルゴリズムの方が優れている場合もありますよ。 どんどん自分で工夫して頑張って下さい。

noname#40795
質問者

補足

お返事有り難うございます。 activecellじゃなくて、selectionなのですね。 勉強になります。

関連するQ&A

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

    以前にユーザーフォーム上のテキストボックスにセル値反映する方法を下記(サンプル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

  • excel ユーザーフォームでシートごとに転記2

    先日ユーザーフォームへの転記について質問させていただきました。 ご回答いただき、ありがとうございました。 今度はオプションボタンで選択したときに、シートごとに転記する方法を 教えていただけますでしょうか。 ユーザフォーム上で、オプションボタンを選択。 OptionButton1・・・シート1へ転記 OptionButton2・・・シート2へ転記 これをOKボタンを押したときに転記するようにしたいと思っています。 Private Sub OK_Click() Dim CLrow As Long Dim KYrow As Long CLrow = Worksheets("Sheet1").Range("A65536").End(xlUp).Row KYrow = Worksheets("Sheet2").Range("A65536").End(xlUp).Row If OptionButton1.Value = True Then Worksheets("Sheet1").Range("A" & CLrow).Value = .TextBox1.Value ElseIf OptionButton2.Value = True Then Worksheets("Sheet2").Range("A" & KYrow).Value = .TextBox1.Value End With End Sub ここまでやってみたのですが「参照が不正または不完全です」 と出てしまいます。 どなたかご教示願います。 よろしくお願いします。

  • エクセルマクロが重い

    こんにちは。 ご教授くださいませ。 すでに先方が作っているエクセルのシートがありまして、 そのシートの表組み規則にのっとって入力するユーザーフォーム を私のほうで作ったのですが、重いです。 selectの多用はだめ!というところまでは調べたのですが じゃあどうしたらいいかわかりません。 ■ '--------------------8時から If OptionButton1.Value = True Then ActiveCell.Offset(3, -1).Range("A1").Select ActiveCell = UserForm3.TextBox1.Value ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell = UserForm3.TextBox2.Value ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell = UserForm3.TextBox3.Value ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell = UserForm3.TextBox4.Value ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell = UserForm3.TextBox5.Value ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell = UserForm3.TextBox6.Value ActiveCell.Offset(3, 0).Range("A1").Select ActiveCell = UserForm3.TextBox12.Value ActiveCell.Offset(0, -1).Range("A1").Select ActiveCell = UserForm3.TextBox11.Value ActiveCell.Offset(0, -1).Range("A1").Select ActiveCell = UserForm3.TextBox10.Value ActiveCell.Offset(0, -1).Range("A1").Select ActiveCell = UserForm3.TextBox9.Value ActiveCell.Offset(0, -1).Range("A1").Select ActiveCell = UserForm3.TextBox8.Value ActiveCell.Offset(0, -1).Range("A1").Select ActiveCell = UserForm3.TextBox7.Value ActiveCell.Offset(3, 0).Range("A1").Select ActiveCell = UserForm3.TextBox13.Value ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell = UserForm3.TextBox14.Value ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell = UserForm3.TextBox15.Value ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell = UserForm3.TextBox16.Value ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell = UserForm3.TextBox17.Value ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell = UserForm3.TextBox18.Value ActiveCell.Offset(3, 0).Range("A1").Select ActiveCell = UserForm3.TextBox24.Value ActiveCell.Offset(0, -1).Range("A1").Select ActiveCell = UserForm3.TextBox23.Value ActiveCell.Offset(0, -1).Range("A1").Select ActiveCell = UserForm3.TextBox22.Value ActiveCell.Offset(0, -1).Range("A1").Select ActiveCell = UserForm3.TextBox21.Value ActiveCell.Offset(0, -1).Range("A1").Select ActiveCell = UserForm3.TextBox20.Value ActiveCell.Offset(0, -1).Range("A1").Select ActiveCell = UserForm3.TextBox19.Value ActiveCell.Offset(3, 0).Range("A1").Select ActiveCell = UserForm3.TextBox25.Value ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell = UserForm3.TextBox26.Value ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell = UserForm3.TextBox27.Value ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell = UserForm3.TextBox28.Value ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell = UserForm3.TextBox29.Value ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell = UserForm3.TextBox30.Value 'ActiveWorkbook.Save MsgBox "入力しました。", vbInformation, "確認" End If '--------------------8時から(END ■ 基本の流れは... 最初にオプションボタン3つのどれか1個の 選択を求め、その条件に応じて 始基点となるセルが変わります。 で、あとは与えられた表組みを縦や横に 移動しながら、対応するテキストボックスの 値を入れる、という 我ながら頭の悪い方法で^^; .selectではない、スマートな方法があればと思います。 ぜひお知恵を!

  • ユーザーフォーム オプションボタン について

    ユーザーフォーム内にオプションボタンを21個作っており、 Private Sub CommandButton1_Click() Dim SerchArea As Range '検索範囲(シート名指定) Set SearchArea = Sheets("1").Range(Range("A:A"), Range("A:A").End(xlDown)) '検索処理(引数:LookAt に xlWhole で完全一致 Set FoundCell = SearchArea.Find( _ What:=Me.TextBox1.Value, _ SearchOrder:=xlByRows, _ LookAt:=xlWhole, _ LookIn:=xlValues, _ MatchCase:=False) '商品コードが無い場合の処理 If FoundCell Is Nothing Then MsgBox "ありません!", vbCritical GoTo ExitHandler End If '見つかった場合の処理 With FoundCell Me.TextBox1.Value = .Offset(0, 0).Value Me.TextBox2.Value = .Offset(0, 11).Value Me.TextBox3.Value = .Offset(0, 12).Value Me.TextBox4.Value = .Offset(0, 4).Value テキストボックスにセルの値が入るようにしており、追加でオプションボタンを付けて更新としたいのですが、21個のうちどれか一つを選択して、その値をZ列に反映させたいのですが Private Sub CommandButton2_Click() With FoundCell .Offset(0, 13).Value = Me.TextBox20.Value .Offset(0, 4).Value = Me.TextBox4.Value .Offset(0, 5).Value = Me.TextBox5.Value ここの追加でオプションボタンを設定するにはどうすれば良いでしょうか?

  • ユーザーフォームからコメントを入力

    ユーザーフォームを作成し、フォームからシートのセルへコメント入力しようと考えております。 もともとシートにあるコメントの情報をユーザーフォームに表示させるまで至りましたが、ユーザーフォームからシートへ転記が出来ません。 ちなみにユーザーフォームからシートへの転記方法は、 ActiveCell.Offset(1,0)で一列ずつずらしながら転記しています。 自分で試した方法ですが、 コードを一部抜粋 ActiveCell.Offset(1,0) ActiveCell.value = NyukinForm.Kingaku.value ActiveCell.Offset(1,0) ActiveCell.value = NyukinForm.Seikyugaku.value ActiveCell.Comment = NyukinForm.SeikyugakuComment.value 上記コードだとまったく反映されません。 ActiveCell.Offset(1,0) ActiveCell.value = NyukinForm.Kingaku.value ActiveCell.Offset(1,0) ActiveCell.value = NyukinForm.Seikyugaku.value ActiveCell.AddComment = NyukinForm.SeikyugakuComment.value この方法だとコメントの赤マークは出ますが、内容がまったく表示されません。 どなたかフォームから入力したコメントをうまくシートへ反映させる方法をご存知でないでしょうか? よろしくお願い致します。

  • VBAでフォームからシートへ入力

    シートが「回答フォーム」と「用語」と言うのがあります。 (1)「回答フォーム」シートに"入力"ボンタをクリックすると「用語」のシートに入力される。 (2)回答フォーム」シートに"検索"ボンタをクリックすると「用語」のシートからフォームへ表示される。 用語のシートに項目は、A列から、ナンバー、検索、フリガナ、用途、用語、意味とあります。 TextBox1に用語、TextBox2に用途、TextBox3に意味 とあります。 (1)には Private Sub 入力_Click()   Sheets("用語").ActiveSheet・・・ここがエラーになります。 「オブジェクトはこのプロパティまたはメソッドをサポートしていません。」 行 = ActiveCell.Row 列 = ActiveCell.Column Cells(行, 列) = UserForm1.TextBox1.Value Cells(行, 列 + 1) =UserForm1.TextBox2.Value   Cells(行, 列 + 2)=UerForm1.TextBox3.Value UserForm1.TextBox1.SetFocus Cells(行 + 1, 列).Select End Sub (2)には Private Sub CommandButton1_Click() Set sh1 = bk.Worksheets("回答フォーム") Set sh5 = bk.Worksheets("用語") cnt1 = 2 UserForm1.TextBox1.Value・・・・ここのVALUEがエラーになります。 「コンパイルエラー プロパティの使い方が不正です。」 ActiveCell.FormulaR1C1 = "=MATCH(RC[-1],用語!C[-5],0)" n = ActiveCell.Value '用語 sh5.Cells(n, 2).Value = sh1.TextBox1.Value '意味 sh5.Cells(n, 3).Value = sh1.TextBox3.Value '用途 sh5.Cells(n, 4).Value = sh1.TextBox2.Value End Sub 申し訳ないですがよろしくお願い致します。

  • オートフィルタでデータを抽出する方法

    今ある下のコードを実行すると、 別のシートに表示はされるのですが、 同じデータしか表示されない状態です これをすべての条件のヒットするデータを 表示して、別シートにコピーしたいのですが・・・ レイアウトは、 使用者名 メーカー 車種 ナンバー   初年度登録   車検日   備考 です A列の「使用者名」のところに同じ「使用者名」で、それ以降のB列の内容が違うデータが 複数あるので、「使用者名」が同じデータは、すべて表示されるようにしたいのですが、 これ以上どうしたらいいかわかりません。 つたない説明で大変申し訳ないのですが、ご教授願います Sub CommandButton1_Click() Dim 使用者名 As Variant Dim cnt As Variant With Worksheets(3) .Select .Range("A6").AutoFilter _ Field:=7, _ Criteria1:="=" & UserForm4.TextBox1, Operator:=xlAnd .Range("A6").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy _ Worksheets("出力").Range("A6") End With Worksheets("出力").Activate Columns("A:O").EntireColumn.AutoFit With ActiveSheet.UsedRange MaxRow = .Find("*", , xlFormulas, , xlByRows, xlPrevious).Row End With cnt = 6 For 基点 = 1 To MaxRow MsgBox (基点 & "です") 'まず検索用テキストボックスの中に文字の入力があるかどうかをチェックします。 If Not txtsiyousya.Value = Empty Then '氏名の列であるA列の中に検索する氏名があるかどうかをチェックします。 Set 使用者名 = Columns("A:A").Find(txtsiyousya, LookIn:=xlValues) '検索結果が発見できれば、そのセルをアクティブにします。 If Not 使用者名 Is Nothing Then 使用者名.Activate Unload UserForm2 UserForm4.TextBox1.Text = ActiveCell.Offset(0, 0).Value UserForm4.TextBox2.Text = ActiveCell.Offset(0, 1).Value UserForm4.TextBox3.Text = ActiveCell.Offset(0, 2).Value UserForm4.TextBox4.Text = ActiveCell.Offset(0, 3).Value UserForm4.TextBox5.Text = ActiveCell.Offset(0, 4).Value UserForm4.TextBox6.Text = ActiveCell.Offset(0, 5).Value UserForm4.TextBox7.Text = ActiveCell.Offset(0, 6).Value UserForm4.TextBox8.Text = ActiveCell.Offset(0, 7).Value UserForm4.TextBox9.Text = ActiveCell.Offset(0, 8).Value UserForm4.TextBox10.Text = ActiveCell.Offset(0, 9).Value UserForm4.TextBox11.Text = ActiveCell.Offset(0, 10).Value UserForm4.TextBox12.Text = ActiveCell.Offset(0, 11).Value UserForm4.TextBox13.Text = ActiveCell.Offset(0, 12).Value UserForm4.TextBox14.Text = ActiveCell.Offset(0, 13).Value UserForm4.Show cnt = cnt + 1 MsgBox (cnt) '検索結果が発見できなければ、次のメッセージを表示します。 Else MsgBox "検索した使用者は登録されていません" txtsiyousya.Value = Empty End If Else MsgBox "検索する使用者を入力して下さい" End If Next 基点 Range("A6").AutoFilter Field:=1, Criteria1:=UserForm4.TextBox1.Text Worksheets("出力").Activate Worksheets("ライフ").Activate End Sub

  • Excel ユーザーフォームの入力値をシートに転記

    Excelでユーザーフォームを作りました。 ユーザーフォームには、テキストボックスを2個、ボタンを1個("記入"という文字が入っています)置いてあります。 テキストボックスに入れた数値をSheet1のセル"C24","C25"に転記したいので、ユーザーフォームのコードを次のようにしましたが、エラーメッセージは出ないかわりに何も動いてくれません。 「どこ」と「なに」が違いどうするのが正しいのか教えて下さい。よろしくお願いします。 Private Sub Tbox1_Change() a = Tbox1.Value End Sub ---------------------------- Private Sub Tbox2_Change() b = Tbox2.Value End Sub ---------------------------- Sub 記入Button_Click() '入力値をSheet1に転記 Dim a As Range Dim b As Range Sheets("Sheet1").Select Set a = Range("C24") Set b = Range("C25") End Sub

  • 条件で印刷シートを別けたい。

    データシート"みかん・りんご"に入力データがあり、"C列の'りんご(特定)''りんご(その他)''みかん(特定)''みかん(その他)'を検索。 (特定)がついているのは"D列"産地ごとにシート別に記入し、印刷をしたいのです。 ifを使っても2条件しか識別できないので、困っています。 りんご(長野)、りんご(青森)、りんご(その他)の3種類。 みかん(和歌山)、みかん(愛媛)、みかん(静岡)、みかん(その他)の4種類。 別々のシートに入力し印刷するにはどうしたら良いか教えてください。 コマンドボタンは1つにこだわりはないです。(エクセルの添付画面には、1つしかつけてないですが) 途中まで作成したマクロを載せています。 Range("A2").Select '仕入れ番号をこの次の"A3"セルより転記される。 Do '↓ 'アクティブセルを1つ下に移動 ActiveCell.Offset(1, 0).Select '空欄であれば、プログラムを終了する 'Trim関数は前後のスペースを消去する If Trim(ActiveCell.Value) = "" Then Exit Do End If '非表示セルは印刷の対象としない If ActiveCell.EntireRow.Hidden = False Then If ActiveCell.Offset(, 2).Value = "りんご(その他)" Then 'C列でリンゴかみかんの判断をする With Worksheets("りんご(その他)") 'シートへ記入 .Range("C18").Value = ActiveCell.Offset(0, 0).Value '仕入番号 .Range("C19").Value = ActiveCell.Offset(0, 2).Value '種類 .Range("C20").Value = ActiveCell.Offset(0, 3).Value '産地 .Range("E3").Value = ActiveCell.Offset(0, 4).Value '購入日 .Range("F3").Value = ActiveCell.Offset(0, 5).Value '外観 .Range("G5").Value = ActiveCell.Offset(0, 6).Value '重量 .Range("H5").Value = ActiveCell.Offset(0, 7).Value '単価 .Range("D5").Value = ActiveCell.Offset(0, 9).Value '個数 '繰返し処理をしているので一度に印刷される。 .PrintOut End With ElseIf ActiveCell.Offset(, 2).Value = "りんご(りんご(特定)" Then With Worksheets("りんご(特定)") 'シートへ記入 .Range("C20").Value = ActiveCell.Offset(0, 0).Value '仕入番号 .Range("C21").Value = ActiveCell.Offset(0, 2).Value '種類 .Range("C22").Value = ActiveCell.Offset(0, 3).Value '産地 .Range("E4").Value = ActiveCell.Offset(0, 4).Value '購入日 .Range("F4").Value = ActiveCell.Offset(0, 5).Value '外観 .Range("G7").Value = ActiveCell.Offset(0, 6).Value '重量 .Range("H7").Value = ActiveCell.Offset(0, 7).Value '単価 .Range("D7").Value = ActiveCell.Offset(0, 9).Value '個数 .Range("D8").Value = ActiveCell.Offset(0, 10).Value '送料 '繰返し処理をしているので一度に印刷される。 .PrintOut End With End If End If Loop 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か所あるので私では分りません。よろしくお願いします。

専門家に質問してみよう