ユーザーフォームからワークシートへの転記について

このQ&Aのポイント
  • エクセルVBAの初心者がユーザーフォームからデータベースへの転記のコードを記述しましたが、CelDataのところでコンパイルエラーが発生しています。
  • 質問文章の主な内容は、CelDataのコンパイルエラーの修正方法とユーザーフォームからワークシートへの転記ができるかどうかです。
  • 質問に関するオブジェクト名は、「入力No.」=TextBox3、「入力日」=txtdate、「データベース入力」=CommandButton3
回答を見る
  • ベストアンサー

ユーザーフォームからワークシートへの転記について

●質問の主旨 エクセルVBAの初心者です。 添付画像のユーザーフォームからデータベースへの転記の コードを記述しましたが、実行しようとすると15行目の「CelData」のところが 選択され、コンパイルエラー(変数の定義がされていません) が返されます。 1.「CelData」のコンパイルエラーはどのように修正すれば   よいでしょうか? 2.またこのコンパイルエラーを修正すれば、ユーザーフォームから   ワークシートへの転記ができるでしょうか? ●質問の補足 1.ユーザーフォームにある「入力No.」と 「入力日」(赤色で囲った部分)をそれぞれ A2セル、B2セル(青色で囲った部分)に転記しようと 考えています。 2.添付画像のワークシートには手入力で「柴田8月分」 というシート名が予めつけられています。 3.ユーザーフォームやワークシートには 他に入力、転記する個所がありますが質問を 簡単にするため省略しています。 4.この質問に関するオブジェクト名は以下の 通りです。 ・「入力No.」=TextBox3 ・「入力日」=txtdate ・「データベース入力」=CommandButton3 エクセルVBAにお詳しい方ご教示願います。 使用機種はWindows Vista Excel2007です。 なお、コードは以下の通りです。 1 Option Explicit 2 'ユーザーフォームの初期化 3 Private Sub UserForm_Initialize() 4 TextBox3.Value = 1 5 txtdate = Date 6 End Sub 7 'ユーザーフォームからデータベースへの転記 8 Private Sub データベース入力_Click() 9 Dim RowPos As Integer 10 Dim ColPos As Integer 11 RowPos = 2 12 ColPos = 1 13 Do 14 RowPos = RowPos + 1 15 CelData = Worksheets("柴田8月分").Cells(RowPos, _ 16 ColPos) 17 Loop While CelData <> "" 18 With Worksheets("柴田8月分") 19 .Cells(RowPos, ColPos) = TextBox3.Value 20 .Cells(RowPos, ColPos + 1) = txtdate.Value 21 End With 22 End Sub

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

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

#1です。 ーー 私が言っているのわかってないようだ。 例えば ユーザーフォームに テキストボックス1つ コマンドボタン1つ(クリックイベントでも良いがこちらにする) (これら部品2つはコントロールといわれる。) を設ける。 ーー Private Sub CommandButton1_Click() rowpos = rowpos + 1 MsgBox rowpos Worksheets("Sheet1").Cells(rowpos, "A") = TextBox1.Value End Sub をつくり実行すると テキストボックスにaと入れてボタンクリックーー>A1がaになる。 テキストボックスにbと入れてボタンクリックーー>A1がbになる。 こン名ことの繰り返しで良いのか・ ーー 私が rowpos = Worksheets("Sheet1").Range("A10000").End(xlUp).Row と入れた意味を無視している。 rowpos という変数の有効性の場面を考える必要がある。

dradra33
質問者

お礼

たびたびのご回答ありがとうございます。 imogasiがANo.1のコードの通り、改めてユーザーフォーム及び コードを作成するとデータベース形式で入力ができ、 常に最下行にテキストが入力できるようになりました。 rowpos = Worksheets("Sheet1").Range("A10000").End(xlUp).Row というコードの意味が良く分かりました。

その他の回答 (1)

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

質問文は長いが (1)「フォームのコントロールの構成  が不明 txtdate はテキストボックスなのか、外のものか。 (2)フォームにはデータ入力後表示するのか >ユーザーフォームからデータベースへの転記の・・ とあるが、フォーム入力ーー>シート転記なら、 クリックごとにシートに書き出す行が1行下をさす(か最終行の次の行)を指さないとならないが それらしいコードが無い。 根本的に欠陥は無いか?クリック1回するごとにRowPosなどは前回の値とは無関係になるが。 この間の変数地の受け渡しは、初心者には難しい。 本件VBAの学習として、背伸びしすぎだと思う。 (3)フォームにデータを入力後、シートにそれらデータを転記するのか 根本的なことが文章で説明されて無い。 そうでないなら毎回繰返して、CelDataという1つの変数に何回も値を代入して、セルにセットはしないのか。 フォームに表示だけか? ーー 一例 フォーム テキストボックス1  番号入力用 テキストボックス2  日付用 テキストボックス3  その他データ用 入力用のボタンを1つ設けボタンのクリックにしたほうが良いのでは? ーー Private Sub UserForm_Click() 'Private Sub データベース入力_Click() rowpos = Worksheets("Sheet1").Range("a10000").End(xlUp).Row 'データ最終行の取得 ColPos = 1 'A,B,C・・で指定したほうがわかりやすいのでは rowpos = rowpos + 1 With Worksheets("Sheet1") .Cells(rowpos, ColPos) = TextBox1.Value 'A列 .Cells(rowpos, ColPos + 1) = TextBox2.Value 'B列 .Cells(rowpos, ColPos + 2) = TextBox3.Value 'C列 End With End Sub

dradra33
質問者

お礼

ご回答ありがとうございます。 補足質問についてもご確認いただければ幸いです。 よろしくお願い申し上げます。

dradra33
質問者

補足

いつもご指摘ありがとうございます。 また拙い説明ながらお付き合いいただきありがとうございます。 imogasi様のご確認について以下の通りお答え申し上げます。 >(1)「フォームのコントロールの構成  が不明 >txtdateはテキストボックスなのか、外のものか。 txtdateはユーザーフォームの一部を構成する テキストボックスで、オブジェクト名をtxtdateにしています。 >(2)フォームにはデータ入力後表示するのか 原則は開発タブ→マクロ→マクロ実行後に ユーザーフォームを表示させリストボックス、テキストボックス等に 入力してていきます。 ただし「入力No.」と「入力日」は初期値を 表示させておいて、他の項目の入力が完了したときに同時に転記します >(3)フォームにデータを入力後、シートにそれらデータを転記するのか ご推察の通り、フォームにデータを入力後、シートにそれらデータを転記します。 転記の完了後は新しい番号で、「入力No.」と「入力日」以外は空白のユーザーフォームを 表示させて、再度、入力→転記の作業の繰り返しを行うつもりです。 初心者には難しいことなのは、重々承知ですが、 ひとつひとつ問題をクリアしていこうと思っています。 それで今回はフォームからワークシートへの転記作業の コードを記述しようと思い、質問しました。 imogasi様から頂いた例に基づきコードを 以下の通り、書き換えをしてみました。 エラーやデバックはなかったものの、 「入力No.」と「入力日」のワークシートへの 転記ができませんでした。 先のご回答でヒントが含まれているのかも知れませんが、 何分初心者でimogasi様の意図が読み切れていないと 思います。たびたびの質問で恐縮ですが、 再度ご教示いただければ幸いです。 以上よろしくお願い申し上げます。 Private Sub UserForm_Initialize() TextBox3.Value = 1 txtdate = Date End Sub Private Sub データベース入力_Click() rowpos = Worksheets("柴田8月分").Range("a10000").End(xlUp).Row ColPos = 1 rowpos = rowpos + 1 With Worksheets("柴田8月分") .Cells(rowpos, ColPos) = TextBox3.Value .Cells(rowpos, ColPos + 1) = txtdate.Value End With End Sub

関連するQ&A

  • ユーザーフォームをWorkSheet(1)に固定

    ●質問の主旨 WorkSheet(1)(「柴田8月分」)にユーザーフォームを固定的に 表示させつつ、WorkSheet(1)以降のWorkSheet(2)、 WorkSheet(3)、WorkSheet(4)の表を参照しながら ComboBox1、ComboBox2、ComboBox3にリストを 選択して、データベースに入力したいと考えています。 以下のコードをどのように書き換えれば良いでしょうか? ご教示のほどよろしくお願い申し上げます。 ●質問の補足 現在のコードでは、ComboBox1、ComboBox2、ComboBox3を それぞれ選択しているとユーザーフォームがそれぞれ WorkSheet(2)、WorkSheet(1)(顧客リスト)、WorkSheet(3)(社員名)、 WorkSheet(4)(大分類)にとんでしまいます。 転記入力が終了すると、また手作業でWorkSheet(1)に戻らなければなりません。 その手作業を回避したいと考えています。 なお添付画像はComboBox1の選択前なのでWorkSheet(1) に留まってくれています。 ●コード Option Explicit 'ユーザーフォームの初期化 Private Sub UserForm_Initialize() Dim r As Range Dim n As Range Dim d As Range With Worksheets(2) Set r = .Range("C3", .Cells(.Rows.Count, 2).End(xlUp)) End With With Me.ComboBox1 .ColumnCount = 2 .ColumnWidths = ";0" .List = r.Value End With With Worksheets(3) Set n = .Range("C3", .Cells(.Rows.Count, 2).End(xlUp)) End With With Me.ComboBox2 .ColumnCount = 2 .ColumnWidths = ";0" .List = n.Value End With With Worksheets(4) Set d = .Range("C3", .Cells(.Rows.Count, 2).End(xlUp)) End With With Me.ComboBox3 .ColumnCount = 2 .ColumnWidths = ";0" .List = d.Value End With Set r = Nothing Set n = Nothing Set d = Nothing TextBox3.Value = Worksheets(1).Range("A2").Value + 1 txtdate = Date OptionButton1.Value = True End Sub 'ComboBox1をクリックしたときの処理 Private Sub ComboBox1_Click() Worksheets(2).Select With Me.ComboBox1 Me.Label19.Caption = .List(.ListIndex, 1) Worksheets(2).Select Replace:=False End With End Sub 'ComboBox2をクリックしたときの処理 Private Sub ComboBox2_Click() Worksheets(3).Select With Me.ComboBox2 Me.Label20.Caption = .List(.ListIndex, 1) Worksheets(3).Select Replace:=False End With End Sub 'フォームからデータベースへの転記 Private Sub CommandButton3_Click() Dim Rowpos As Long Dim ColPos As Long Rowpos = Worksheets("柴田8月分").Range("a10000").End(xlUp).Row ColPos = 1 Rowpos = Rowpos + 1 With Worksheets("柴田8月分") .Cells(Rowpos, ColPos) = TextBox3.Value .Cells(Rowpos, ColPos + 1) = txtdate.Value .Cells(Rowpos, ColPos + 2) = Label19.Caption .Cells(Rowpos, ColPos + 3) = ComboBox1.Text .Cells(Rowpos, ColPos + 4) = ComboBox2.Text .Cells(Rowpos, ColPos + 5) = Label20.Caption .Cells(Rowpos, ColPos + 6) = ComboBox3.Text End With 'Noの加算 Dim i As Long For i = 1 To 1 Step 1 TextBox3.Value = TextBox3.Value + 1 Next Call Clearcmb End Sub 'データベース入力後にコンボボックスを空欄にする Private Sub Clearcmb() ComboBox1.Text = "" ComboBox2.Text = "" ComboBox3.Text = "" End Sub 'ユーザーフォームの終了 Private Sub CommandButton5_Click() Unload UserForm1 End End Sub 以上よろしくお願い申し上げます。使用機種はWindowsVistaで、 Excel2007です。私はVBA初心者です。

  • データベースの番号を1つずつ加算していくには?

    ●質問の主旨 データベースにデータを入力していくたびに そのデータに「入力No.」1を振り、以後データが増えるたびに 番号を1つずつ増やしていきたいと考えています。 A2→1 A3→2 A4→3 A5→4 という具合に、途中でブックを保存して再度立ち上げても 常に連続した数字を入力したいと思っています。 以下のコードをどのように書き改めばよいでしょうか? ご教示願います。 ●現在の問題点 1.「データベース入力」のボタンを押すと A2セルに「入力No.」2が入力されてしまう 2.ブックを閉じない限り、入力した番号は 2のままで転記されてしまう。 3.ブックを保存して閉じた後、再度立ち上げ「入力No.」を 入力しようとすると今度は4が入力される。 4.その後はブックを保存して閉じた後、再度立ち上げても 4が入力され続ける。 ●コード Option Explicit 'ユーザーフォームの初期化 Private Sub UserForm_Initialize() TextBox3.Value = Worksheets(1).Range("A2").Value + 1 txtdate = Date Call No End Sub 'フォームからデータベースへの転記 Private Sub CommandButton3_Click() Dim Rowpos As Long Dim ColPos As Long Rowpos = Worksheets(1).Range("a10000").End(xlUp).Row ColPos = 1 Rowpos = Rowpos + 1 With Worksheets(1) .Cells(Rowpos, ColPos) = TextBox3.Value .Cells(Rowpos, ColPos + 1) = txtdate.Value End With End Sub 'Noの加算 Private Sub No() Dim i As Long For i = 1 To 1 Step 1 TextBox3.Value = TextBox3.Value + 1 Next End Sub 'ユーザーフォームの終了 Private Sub CommandButton5_Click() Unload UserForm1 End End Sub 以上よろしくお願い申し上げます。使用機種はWindowsVistaで、 Excel2007です。私はVBA初心者です。

  • ユーザーフォームの内容が一部だけ残らない。

    VBAを始めてまだ1週間ほどなのでどの部分を変えればよいのかわかりません。 どなたかわかる方が居れば回答をお願いします。 問題:下記の構文でTextBox2の内容だけが残らない。 UserFoem1で記入場所が7つあり、ボタン1(入力)を押すと 7つの内容がSheet(履歴表)に転記されます。 ボタン2(終了)を押すとUserFormが消えます。 そして転記された後、内容をそのまま7つのTextBoxに残したいと思っています。 TextBox1(txtDate)日付を自動で表示して、 TextBox3~7までは転記後も内容は残るのですが、 TextBox2の内容だけが残らないのです。 下記の構文はネット上でいろんな方のものをコピペして製作したので、 訳の分からない文字がたくさんあり理解をしていない部分はあります。 ですので回答をいただけるならTextBox2の問題解決と 下記の内容をもっとスマートな形に変えて 不要な部分を削除して頂けたらと思っています。 宜しくお願い致します。 Sub ユーザーフォームで履歴表へ入力する() End Sub Private Sub CommandButton1_Click() Dim n As Long With Worksheets("履歴表") n = .Range("B" & Rows.Count).End(xlUp).Row  'Bの一番下を検索する Cells(n + 1, 2).Value = txtDate.Value    'テキストボックス2に自動で日付を入れてB列へ Cells(n + 1, 3).Value = TextBox2.Value 'C列へ代入 Cells(n + 1, 4).Value = TextBox3.Value 'D列へ代入 Cells(n + 1, 5).Value = TextBox4.Value 'E列へ代入 Cells(n + 1, 6).Value = TextBox5.Value 'F列へ代入 Cells(n + 1, 7).Value = TextBox6.Value 'G列へ代入 Cells(n + 1, 8).Value = TextBox7.Value 'H列へ代入 Range(Cells(n + 1, 2), Cells(n + 1, 2)).Offset(, -1).Value = Range(Cells(n + 1, 2), Cells(n + 1, 2)).Row - 4   'A列に番号を順番に入れる End With TextBox2.Value = "" TextBox2.SetFocus End Sub Private Sub TextBox2_Change() '商品名 End Sub Private Sub TextBox3_Change() '型式・形式 End Sub Private Sub TextBox4_Change() '数量 End Sub Private Sub TextBox5_Change() '客先 End Sub Private Sub TextBox6_Change() '担当 End Sub Private Sub TextBox7_Change() '備考 End Sub Private Sub txtDate_Change() End Sub Private Sub UserForm_Click() End Sub Private Sub UserForm_Initialize() UserForm1.txtDate.Value = Date End Sub Private Sub CommandButton2_Click() Me.Hide 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 ここまでやってみたのですが「参照が不正または不完全です」 と出てしまいます。 どなたかご教示願います。 よろしくお願いします。

  • コンボボックスの値で参照するワークシートを変えたい

    ●質問の主旨 ComboBox3で選択した文字列によって、参照するワークシートを 変え、そのワークシートからComboBox4に代入するには、以下の コードをどのように書き換えればよいでしょうか? ご教示願います。 ●質問の補足 添付画像でComboBox3に「営業」、「技術」、「総務」まで 入力することによってそれぞれ3つのワークシートを参照 させたいと考えています。 ・「営業」→中分類(営業)シート ・「技術」→中分類(技術)シート ・「総務」→中分類(総務)シート そして各シートにはそれぞれ異なった仕事内容の表が 既に作成されています。もしComboBox3で「営業」を 選択したなら、ComboBox4で中分類(営業)シートに 記載されている仕事内容を選択できるようにしたいと 考えています。 そのためSelect Caseステートメントを使って ComboBox3の内容によってComboBox4の内容を変える コードを作成したつもりです。 ●現在の問題点 1.下記のコードを実行しようとすると、 「実行時エラー91 オブジェクト変数またはWithブロック変数が設定されていません」 というエラーが返されます。 2.デバックするとユーザーフォームではなく、 標準モジュールの2行目 UserForm1.Show が黄色くなります。 ●コード (標準モジュール) Sub 日報記入ダイアログ() UserForm1.Show End Sub (ユーザーフォーム) Option Explicit Private Sub ComboBox4_Change() End Sub 'ユーザーフォームの初期化 Private Sub UserForm_Initialize() Dim r As Range Dim n As Range Dim d As Range Dim t As Range With Worksheets(2) Set r = .Range("C3", .Cells(.Rows.Count, 2).End(xlUp)) End With With Me.ComboBox1 .ColumnCount = 2 .ColumnWidths = ";0" .List = r.Value End With With Worksheets(3) Set n = .Range("C3", .Cells(.Rows.Count, 2).End(xlUp)) End With With Me.ComboBox2 .ColumnCount = 2 .ColumnWidths = ";0" .List = n.Value End With With Worksheets(4) Set d = .Range("C3", .Cells(.Rows.Count, 2).End(xlUp)) End With With Me.ComboBox3 .ColumnCount = 2 .ColumnWidths = ";0" .List = d.Value End With '中分類のComboBox4は「大分類」の選択内容によって参照するワークシートが変わる Select Case t Case Is = ComboBox3("営業") With Worksheets(5) Set t = .Range("C3", .Cells(.Rows.Count, 2).End(xlUp)) End With With Me.ComboBox4 .ColumnCount = 2 .ColumnWidths = ";0" .List = t.Value End With Case Is = ComboBox3("技術") With Worksheets(6) Set t = .Range("C3", .Cells(.Rows.Count, 2).End(xlUp)) End With With Me.ComboBox4 .ColumnCount = 2 .ColumnWidths = ";0" .List = t.Value End With Case Is = ComboBox3("総務") With Worksheets(7) Set t = .Range("C3", .Cells(.Rows.Count, 2).End(xlUp)) End With With Me.ComboBox4 .ColumnCount = 2 .ColumnWidths = ";0" .List = t.Value End With End Select 'メモリの解放 Set r = Nothing Set n = Nothing Set d = Nothing Set t = Nothing 'その他の初期値 TextBox3.Value = Worksheets(1).Range("a10000").End(xlUp).Row txtdate = Date End Sub 'ComboBox1をクリックしたときの処理 Private Sub ComboBox1_Click() With Me.ComboBox1 Me.Label19.Caption = .List(.ListIndex, 1) End With End Sub 'ComboBox2をクリックしたときの処理 Private Sub ComboBox2_Click() With Me.ComboBox2 Me.Label20.Caption = .List(.ListIndex, 1) End With End Sub 'ComboBox2をクリックしたときの処理(中分類の仕事によってスターマークが変わる) 'フォームからデータベースへの転記 Private Sub CommandButton3_Click() Dim Rowpos As Long Dim ColPos As Long Rowpos = Worksheets(1).Range("a10000").End(xlUp).Row ColPos = 1 Rowpos = Rowpos + 1 With Worksheets(1) .Cells(Rowpos, ColPos) = TextBox3.Value .Cells(Rowpos, ColPos + 1) = txtdate.Value .Cells(Rowpos, ColPos + 2) = Label19.Caption .Cells(Rowpos, ColPos + 3) = ComboBox1.Text .Cells(Rowpos, ColPos + 4) = ComboBox2.Text .Cells(Rowpos, ColPos + 5) = Label20.Caption .Cells(Rowpos, ColPos + 6) = ComboBox3.Text End With 'Noの加算 TextBox3.Value = TextBox3.Value + 1 Call Clearcmb End Sub 'データベース入力後にコンボボックスを空欄にする Private Sub Clearcmb() ComboBox1.Text = "" ComboBox2.Text = "" ComboBox3.Text = "" End Sub 'ユーザーフォームの終了 Private Sub CommandButton5_Click() Unload UserForm1 End End Sub 以上よろしくお願い申し上げます。使用機種はWindowsVistaで、 Excel2007です。私はVBA初心者です。添付の画像でのユーザーフォームは プリントスクリーンでWorksheet(1)に貼り付けています。

  • ユーザーフォームをWorksheet上で表示

    数日前、このカテゴリで相談した事の続きです。 以前の相談は、次の通りです。 http://okwave.jp/qa/q8892460.html この相談の中で出来たことは 1 ユーザーフォームを保存終了 2 Worksheet上にボタンを作成、そのボタンをクリックでユーザーフォームを表示 以上のことはできました。 作成したコードは次のとおりです。   '// Private Sub UserForm_Initialize() With Worksheets("Sheet1")  TextBox1 = .Cells(1, 1).Value  TextBox2 = .Cells(2, 1).Value TextBox3 = .Cells(3, 1).Value TextBox4 = .Cells(4, 1).Value TextBox5 = .Cells(5, 1).Value ).Value End With End Sub Private Sub UserForm_Terminate() With Worksheets("Sheet1")  .Cells(1, 1).Value = TextBox1  .Cells(2, 1).Value = TextBox2 .Cells(3, 1).Value = TextBox3 .Cells(4, 1).Value = TextBox4 .Cells(5, 1).Value = TextBox5 End With End Sub '// Private Sub cmdsyuuryo_Click() Unload Me End Sub Private Sub UserForm_Click() Myform.Show vbModeless End Sub そこで質問です。 現在Worksheet上にボタンを作成、クリックしてユーザーフォームを表示しているの を、WorksheetのセルA1(名前を記述してある)をクリックするだけでユーザーフォー ムを表示する方法はありませんか? ユーザーフォームの保存先は「Sheet1」のA1からA5までです。 できれば、この設定で具体的なコードの記述をお願いします。 Excel2013です。 よろしくお願いします。

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

    excel vbaでユーザーフォームを作りました。 その中で ComboBox1に「青」を選択すると(TextBox1、TextBox2)がSheet1に ComboBox1に「赤」を選択すると(TextBox1、TextBox2)がSheet2に 転記されるようにしたいと思っています。 (ComboBox1の青や赤は転記する必要なし) どのようにすればいいのか、どなたかご教示願います。 よろしくお願いします。

  • 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 申し訳ないですがよろしくお願い致します。

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

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

  • 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

専門家に質問してみよう