• 締切済み

テキストボックスから、複数のシートに転記する方法・・・

初心者でございます。 テキストボックスに入力したデータを、データベースに行を挿入してその行の各セルへ転記する方法として、以下の方法をとっています。 Private Sub 登録Button1_Click() Dim rowscount As Long rowscount = Range("データ範囲").Rows.Count Range("データ範囲").Cells(rowscount, 1).EntireRow.Insert Range("データ範囲").Cells(rowscount, 2) = TextBox1.Text このテキストボックスに入力したデータを別の2つのシートへも転記したいのですが、どのように複数の転記先を指定してよいかわかりません。どうかご教授お願いいたします。(Excel2003を使用しております)

みんなの回答

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

(1)Dim Sh1,Sh2 Set Sh1=Worksheets("Sheet1”)   Set Sh2=Worksheets("Sheet2”) と定義し  Sh1. Sh2.  をそれぞれセル指定の頭につける (2)Worksheets("Sheet1"). Worksheets("Sheet2"). をそれぞれセル指定の頭につける (3)Sheets(1).、Sheets(2). をそれぞれセル指定の頭につける。 2シートのシートタブを左に寄せておく必要がある。 -- 上記はシートの特定方法の解説そのものである。 シートの指定にはほかに、Next,Previousもあるが、使わないでよいだろう。 ーー それぞれ、Range(・・)やCells(・・)がコード上で出てきたら しつこいぐらい念入りに、どちらのシートか判断して、上記シートの名前をつけること。 ーーー ActiveSheetは処理してるうちにどちらがアクチブになっているか 判別はむつかしい場合があり、あまりお勧めしない。 ーー 第三者で良くわからないが、質問のコードは行挿入しているが、ほんとにする必要があるのかな。 最終行の次の行に、テキストボックスから、値代入ではダメなのかな。そういうケースが多いので、ちょっと疑問に思ったので。

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

シート名を指定してあげればよいだけでは? 例えばsheet1とう名のシートのレンジは  Worksheets("sheet1").Range("○○") のようになります。(シート、Rangeなどは変数でも可)  Set sht = AvtiveSheet や Set sht = Worksheets("sheet1") とすることで、対象のシートがsht(変数)に代入されますので、  sht.Range("A1") = sht2.Range("B2") のような記述で、シート間にまたがった処理を行うことも可能になります。

関連するQ&A

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

    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か所あるので私では分りません。よろしくお願いします。

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

    コンボボックスのデータを行へ表示されるよう下記の通りやりました。 続けてテキストボックスを指定した同じ行のセルへ入力されるように したいのですが、いろいろ調べたのですが、解決できず ここで助言いただけたらと思います。 また 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

  • Excel VBA 別ブックを開かずに転記

    Excel2007のユーザーフォームについて教えてください。 ユーザーフォームを以下のように作成しました。 ■テキストボックス6つ テキストボックス2→件名 テキストボックス3→数 テキストボックス4→名前 テキストボックス5→備考1 テキストボックス6→備考2 ■コマンドボタンが1と3の2つです。 コマンドボタン1→転記と印刷 コマンドボタン3→終了 ■シートの構成  sheet"作成と一覧"   1行目を以下の項目で使用しています。  A1→番号(テキストボックス1を表示)  B1→件名(テキストボックス2を表示)  C1→数(テキストボックス3を表示)  sheet"印刷"  A1→番号(テキストボックス1を表示)  A2→件名(テキストボックス2を表示)  B2→数(テキストボックス3を表示)  A3→名前(テキストボックス4を表示)  A4→備考1(テキストボックス5を表示)  A5→備考2(テキストボックス6を表示) テキストボックスに入力した値を2つのシートにそれぞれ転記して、 シート"印刷"を2部印刷しています。 ここまで以下のコードで行いました。 Private Sub CommandButton1_Click() '入力値を作成と一覧シートに転記 行 = ActiveCell.Row 列 = ActiveCell.Column Cells(行, 列) = UserForm1.TextBox1.Value Cells(行, 列 + 1) = UserForm1.TextBox2.Value Cells(行, 列 + 2) = UserForm1.TextBox3.Value '入力値を印刷シートにに転記 Worksheets("印刷").Range("A1") = UserForm1.TextBox1.Value Worksheets("印刷").Range("A2") = UserForm1.TextBox2.Value Worksheets("印刷").Range("B2") = UserForm1.TextBox3.Value Worksheets("印刷").Range("A3") = UserForm1.TextBox4.Value Worksheets("印刷").Range("A4") = UserForm1.TextBox5.Value Worksheets("印刷").Range("A5") = UserForm1.TextBox6.Value 部数 = 2 Worksheets("印刷").PrintOut Copies:=部数, Collate:=True UserForm1.TextBox1.SetFocus Cells(行 + 1, 列).Select End Sub Private Sub CommandButton3_Click() '終了ボタンで値をクリアしてウィンドウを閉じる Dim Ctrl As Control For Each Ctrl In Controls If TypeName(Ctrl) = "TextBox" Then _ Ctrl.Value = "" Next Ctrl Unload Me End Sub 教えて頂きたい事なのですが・・・ コマンドボタン1の入力値を作成と一覧シートに転記の所なのですが、 アクティブセルではなく、常にA列の最後の値の次の空白行に転記するようにしたい場合、 どのように書き換えればいいのでしょうか? もう一点ですが、 別ブックにテキストボックス1から6が入力された一覧があります。 この別ブックを開かずに、 テキストボックス1に入力された番号を探して、 テキストボックス2から6に表示されるようにしたいのです。 うまく説明できないのですが・・・ 別ブックの名前は"たちつ" 別ブックは、あいうサーバーの かきくフォルダの中のさしすフォルダです。 ブック"たちつ"に"一覧"というシートがあります。 一覧のシートのD列の3行目以降には番号が入力されており、日々増えています。 テキストボックス1に入力された番号を、 一覧のD列から探し、 I列の値をテキストボックス2へ K列の値をテキストボックス3へ L列の値をテキストボックス4へ M列の値をテキストボックス5へ J列の値をテキストボックス6へ転記させたいのです。 同じブックの別シートを参照するときには Application.VLookupで出来たのですが、 マクロの記録でやってみても、解決できませんでした。 コードをご覧いただいてお分かりの通り、 VBA超初心者です。 ネットを見ながら試行錯誤している状況です。 コードの間違い等あるかもしれませんが、 ご教示よろしくお願いいたします。

  • 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

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

    初心者です。 フォームから自動でシート入力をしたいのですが、最下行の取得が出来ません。教えて下さい 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

  • excel VBA リストボックス複数選択後の処理

    どなたか教えてください。 Sheet1にユーザーフォームを使用しデータを入力しています。 リストボックスが複数選択した後にコマンドボタンをクリックした際、 選択項目を1行のセル[Cells(myRow, 16)~Cells(myRow, 20)]に左詰めで表示したい場合はどのようにするのでしょうか? 例:リストボックスには10項目あるとして、そのうち1行目、3行目、5行目だけが選択された場合のパターンで、1行目がCells(myRow, 16)、3行目がCells(myRow, 17)、5行目がCells(myRow, 18)に表示したいのですが・・・。 最大5項目選択とみています。 ※コマンドボタンは他のTextBox等も含まれ、下記のような感じです。 Private Sub CommandButton1_Click() Dim myRow As Long Sheets("Sheet1").Select myRow = Range("A65536").End(xlUp).Offset(1, 0).Row '各テキストボックの値をセルに入力 Cells(myRow, 1).Value = TextBox1.Value Cells(myRow, 2).Value = TextBox2.Value Cells(myRow, 3).Value = ComboBox1.Value Cells(myRow, 4).Value = TextBox3.Value Cells(myRow, 5).Value = TextBox4.Value . . . Cells(myRow, 16).Value = Cells(myRow, 17).Value = Cells(myRow, 18).Value = . . . 'セルに入力が各テキストボックの値をクリア TextBox3.Value = "" TextBox4.Value = "" ComboBox2.Value = "" ComboBox3.Value = "" 'フォーカスをTextBox3に移動 TextBox3.SetFocus 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

  • エクセルVBA,シート間転記でエラー1004

    皆様宜しくお願いします。 以下の記述で 「実行時エラー1004アプリケーション定義 またはオブジェクト定義のエラーです」が 出てきます。 やりたい作業としては「週入力」シートの D5セルから下に入力されている内容を 「転記」シートの同じセル範囲へ転記したいです。 現在、転記先開始位置としてD5セルを決め打ちしています。 D行は固定ですが 列は変更になる可能性があるので ゆくゆく変数で書きたいと思っています。 以前はfor next で1行ずつ転記していてたのですが データが多すぎて時間がかかるので すこしでも時間短縮できればと 思いコードをあれこれ考えています。 どうかよろしくお願いします。 Sheets("週入力").Select Dim aa As Long      'A行の最終取得 aa = Range("A" & Rows.Count).End(xlUp).Row Dim 人数 As Long     '変数「人数」を定義 人数 = aa - 4 Dim wsデータ As Worksheet Dim ws結果 As Worksheet Set wsデータ = ActiveWorkbook.Worksheets("週入力") Set ws結果 = ActiveWorkbook.Worksheets("転記") ws結果..Range(Cells(5, "D"), Cells(人数 + 5 - 1, "D")) =ws結果.Range(Cells(5, "D"), Cells(人数 + 5 - 1, "D")).Value

  • マクロ 行挿入で数式も反映する方法

    マクロのフォームを使ってデータ入力・行の挿入を登録したのですが、 シートに入力した計算式が反映されません。 insertRow = Range("登録品目データ").Rows.Count Range("登録品目データ").Rows(insertRow).Insert Shift:=xlDown Range("登録品目データ").Cells(insertRow, 1) = ModelNameBox.Text Range("登録品目データ").Cells(insertRow, 2) = PartNumberBox.Text Range("登録品目データ").Cells(insertRow, 3) = PartNameBox.Text Range("登録品目データ").Cells(insertRow, 4) = StockingPriceBox.Text Range("登録品目データ").Cells(insertRow, 5) = PackingAmountBox.Text Sheets("品目一覧").Protect Unload AddCommodityDlg End Sub 上記Box5に入力したデータを元に、VLOOKUP関数で別のシートの情報を 反映させる式を入力しているのですが、フォームを使って情報入力し、 最下行に挿入すると計算式が反映されません。 どうすればいいか教えて下さい。 宜しくお願いします。

専門家に質問してみよう