• 締切済み

ご指導願います。

エクセルのVBAを勉強中の初心者です。業務上VBAを使用することになりまして、試行錯誤を繰り返していますが、どうも思ったようにいきません。どなたかご指導願います。 現在フォームを使って外観はできています。 ○オプションボタン1  ○オプションボタン2 ○オプションボタン3  ○オプションボタン4 [テキストボックス1] [テキストボックス2] [テキストボックス3] [テキストボックス4] [テキストボックス5]   (次へ)←コマンドボタンでクリック作業が終わるようにしたい このようになっています。尚、オプションボタンの名前別に記録用のシートが用意してあります。 オプションボタンを選択し、テキストボックスを入力して[次へ]を押すと、選択したオプションボタンの名前のシート先に記入したテキストボックスの内容を転送させたいのです。 色々サイトなども調べ、マクロの記録から修正を加えても中々思うようなことができなかったり、エラーがでます。 どなたかご教授願います。よろしくお願い致します。

みんなの回答

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.6

#5です >最初に教えて頂いた、オプションコマンドでシート別にふりわけつつも、あるひとつのシートにはずっと転送されるようにしたいんです。 よく分からんが、2箇所に書き出したいの? Private Sub SetTextBoxToSelectSheet(selectSheet As Object) With selectSheet .Cells(1, 1) = TextBox1.Text .Cells(2, 2) = TextBox2.Text .Cells(3, 3) = TextBox3.Text .Cells(4, 4) = TextBox4.Text .Cells(5, 5) = TextBox5.Text End With With Worksheets("あるひとつのシート名") .Cells(1, 1) = TextBox1.Text .Cells(2, 2) = TextBox2.Text .Cells(3, 3) = TextBox3.Text .Cells(4, 4) = TextBox4.Text .Cells(5, 5) = TextBox5.Text End With End Sub

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.5

#2です userformがformであっても同じことです 結局、Sheet扱いで困っているのでは? >どのオプションコマンドを選んでも同じシートにテキストを転送するのはどうすればいいのでしょうか? Private Sub CommandButton1_Click() If (OptionButton1.Value = True) Then SetTextBoxToSelectSheet Sheet1 ElseIf (OptionButton2.Value = True) Then SetTextBoxToSelectSheet Sheet1 ElseIf (OptionButton3.Value = True) Then SetTextBoxToSelectSheet Sheet1 ElseIf (OptionButton4.Value = True) Then SetTextBoxToSelectSheet Sheet1 End If End Sub 変更する所が間違っています Sheet名はこっちのマクロで変更しています 基本的なスキルを身に付けてから、再度質問されては?

aikagi
質問者

補足

最初に教えて頂いた、オプションコマンドでシート別にふりわけつつも、あるひとつのシートにはずっと転送されるようにしたいんです。

  • don_cha
  • ベストアンサー率34% (139/407)
回答No.4

空白チェックは、例えば、次のようは方法をとります。 '1カラム目の1行目から空白セルを検索し空白セルがあれば文字列("#####")を設定する dim row as Integer for row = 1 to 65535 if (selectSheet.Cells(1, row) = "") then selectSheet.Cells(1, row) = "#####" EndIf また最初のコードは、コマンドボタンが押下されてから動作しますので大丈夫です。VBA起動中はシート自体が触れません。

aikagi
質問者

補足

遅くなりまして申し訳ありません。 まずご指導ありがとうございます。追加なんですが、どのオプションコマンドを選んでも同じシートにテキストを転送するのはどうすればいいのでしょうか? Private Sub SetTextBoxToSelectSheet○○(selectSheet As Object) selectSheet○○.Cells(1, 1) = TextBox1.Text selectSheet○○.Cells(2, 2) = TextBox2.Text selectSheet○○.Cells(3, 3) = TextBox3.Text selectSheet○○.Cells(4, 4) = TextBox4.Text selectSheet○○.Cells(5, 5) = TextBox5.Text End Sub としてもたのですがエラーがでます・・・。 また selectSheet As ObjectをselectSheet○○ としてもダメでした。 ご教授お願いします。

  • don_cha
  • ベストアンサー率34% (139/407)
回答No.3

>一度記録したセルには転送されないようにしたいんですが、cell(1,1)に変数を使えばいいんでしょうか? ご察しの通りCells(1,1)の部分に変数を使うことにより入力先のセル位置が変わります。 データを設定する前に指定位置のCellの内容を確認して空白だったら入力するということも可能です。

aikagi
質問者

補足

空白だったら入力する方法を、ぜひ教えてください。 後、最初に教えていただいたコードなんですが、私の見解ですと、記録用シートを選択したらマクロが自動で動いてしまいそうなんですが、大丈夫なんでしょうか・・・? 記録したシートを利用してオートフィルタなどで検索システムとして構築したいので・・・。 説明不足かもですが、ご教授願います。

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.2

>エクセルのVBAを勉強中の初心者です。 初心者にUserformの使用は難しいと思います まずはUserformをシートに置き換えて シート間で、処理ができるのかを確認してみては シート上で処理ができれば シ-トをUserformに セルを各コントロールに置き換えれば コードはできると思います

aikagi
質問者

補足

Userformではなくて、ツールにコントロール ツーツボックスとフォームってありませんか? そのフォームの方を使用しています。

  • don_cha
  • ベストアンサー率34% (139/407)
回答No.1

コマンドボタン(次へ)が押された際に次のような処理を行えば可能かと思います。 ' コマンドボタンが押下された際に呼び出されるイベントルーチン Private Sub CommandButton1_Click() If (OptionButton1.Value = True) Then SetTextBoxToSelectSheet Sheet1 ElseIf (OptionButton2.Value = True) Then SetTextBoxToSelectSheet Sheet2 ElseIf (OptionButton3.Value = True) Then SetTextBoxToSelectSheet Sheet3 ElseIf (OptionButton4.Value = True) Then SetTextBoxToSelectSheet Sheet4 End If End Sub ' 指定のシートに対して、テキストボックス内のデータを設定する Private Sub SetTextBoxToSelectSheet(selectSheet As Object) selectSheet.Cells(1, 1) = TextBox1.Text selectSheet.Cells(2, 2) = TextBox2.Text selectSheet.Cells(3, 3) = TextBox3.Text selectSheet.Cells(4, 4) = TextBox4.Text selectSheet.Cells(5, 5) = TextBox5.Text End Sub

aikagi
質問者

補足

むぅ。中々難しそうですね。 コード内容が理解できない部分があります。でもありがとうございます。ひとつづつ理解していこうと思います。 追加で質問いいでしょうか?一度記録したセルには転送されないようにしたいんですが、cell(1,1)に変数を使えばいいんでしょうか? またご教授お願いします。

関連するQ&A

  • ご指導お願い致します。

    データ整理で悩んでるんですが、どなたかご提案願います。 VBAは初心者なのでご指導も願います。 テキストボックスで記入する欄が8個ほどあります。 記録用シートにコマンドボタンで転送させます。その記録用シートには    A       B       C       D       F    1 テキスト1 テキスト2  テキスト3  テキスト4  テキスト8 2                         テキスト5 3                         テキスト6 3                         テキスト7 となっています。 その後登録ごとに同じような内容が転送されるようます。 転送・記録の手順は整いましたが、記録用シートで管理・検索もしようと思ったらどうしたらいいのかわからなくなってきました。 検索するときはオートフィルタなどでも良いと思いましたが、テキスト1でフィルタしてもD列にあるテキスト5~7は検索にひっかからないな・・・と思いまして。 本当は最初の転送させる前のテキストボックスにクリックなどしたら表示されたらいいんですが。説明不足だと思いますが、なにとぞご教授願います。 尚最初の転送前のシートには下記のようなフォームであります。 オプションボタン1(転送先シートを決定するため) オプションボタン2    ・    ・    ・ オプションボタン6 テキストボックス1(先ほどの転送前のテキストボックス) テキストボックス2 テキストボックス3 テキストボックス4 テキストボックス5 テキストボックス6 テキストボックス7 テキストボックス8 コマンドボタン1(クリックしたらオプションボタン別にシートを分別しているので、選択シートにテキストボックスが転送されるマクロを登録)

  • ご指導願います。

    どなたが教えてください。 エクセルのVBAです。 dim row as Integer for row = 1 to 65535 if (selectSheet.Cells(1, row) = "") then selectSheet.Cells(1, row) = "#####" EndIf をアレンジしたいのです。 上記のプログラムが構築されているコマンドボタンと同じuserformにオプションボタンを5個、コンボボックスを一つ作りました。 オプションボタン1を選択するとコンボボックスにはあ行が。 オプションボタン2を選択するとコンボボックスにはか行が。 オプションボタン3を選択するとコンボボックスにはさ行が。 オプションボタン4を選択するとコンボボックスにはた行が。 オプションボタン5を選択するとコンボボックスにはな行が。 選択できるようにしたいのです。 次に選んだオプションボタンと同名前のシートに上記の#####が入力されるようにしたいのですが、どのようにすればいいのですか? また、違うuserformでもオプションボタンで選択したシートに記入されるように選択の保持ですか? そういったことは可能なのでしょうか? どなたか教えてください。

  • 教えてください。

    vba初心者です。 エクセルのマクロです。 userformをでコンボボックスとテキストボックスを作りました。 userformを起動させ、コンボボックスで1~20のどれかを選択し、 テキストボックスに何か記入し、完了をおすと、コンボボックスで選択したシートにテキストボックスの内容を記録させたいのです。 コンボボックスには1~20までの数字を登録します。 その1~4を選択したときはシート1 5~10はシート2 6~15はシート3 15~20はシート4 と振り分けられるようにしたいのです。 現在の状況は。 userform作成 テキストボックス作成 コンボボックス作成 完了のコマンドボタン作成 完了を押すとテキストボックスが記録される ここまできています。 あとはコンボボックスの使い方がわかりません。 わかりにくい説明ではあったとは思いますが、どなたかご教授お願い致します。 よろしくお願い致します。

  • テキストボックスへにセル値の入力

    エクセルマクロの初心者で恐縮なのですが、ユーザーフォームのテキストボックスに下記のようなことは可能でしょうか? 例1)ユーザーフォーム上にある「テキストボックス」に「オプションボタン1」を選択するとワークシートのセル値を入力(反映)することは可能でしょうか? 例2)次に、「オプションボタン2」を選択すると、例1でテキストボックスに入力(反映)した値を消去し、かつ、このテキストボックスに数値を直接入力したら、ワークシートの別セルに入力した数値が反映されるようにすることは可能でしょうか? 例1・2)についてどのようなマクロを組めばよいのでしょうか? マクロにお詳しい方、大変申し訳ございませんか、ご指導お願いいたします。

  • ご教授願います。

    エクセルのVBAを多少勉強致しましたが、行き詰っていますのでどなたかご教授願います。 エクセルにコマンドボタンを二つ作成 最初のコマンドボタンをクリックするとコンボボックスが現れます。 コンボボックスには1~4があります。 1はシート1""あいう""のシート 2はシート1""かきく""のシート 3はシート1""さしす""のシート 4はシート1""たちつ""のシート を指定するようになっています。 ここでとりあえず自分の希望のしーとになるように1~4の数字を選びます。 次にもうひとつのコマンドボタンを選択するとテキストボックスが現れます。 記入し、テキストボックスと同userformにあらかじめ作っていたコマンドボタンをクリックすると先ほど選択した1~4にテキストボックスを転送するようにしたいのです。 hideを使って先ほど表示させたコンボボックスのuserformを隠して、テキストボックスのuserformを閉じる際に指定したシートをにとさせようとしましたが、 そのテキストボックスのuserformが何個かあるのでどうすればいいのかわかりません。 どなたかご教授願えませんでしょうか? よろしくお願い致します。 なお、私の説明不足で内容がよくわからなかったら一報ください。 申し訳ありませんが、どうぞよろしくお願い致します。

  • VBAでEXCELからWORDにグラフをコピー

    VBAでEXCELからWORDにグラフをコピー する方法が分かりません。 EXCELで作成した複数のグラフをWORDのテキストボックスに貼り付けるマクロを組んでいます。 「マクロの記録」を行ってもWORD側の処理がうまくカンニングできません。 処理はEXCEL側で行っています。 PasteSpecialなどを使って試行錯誤したのですがダメでした。 詳しい方がいましたら教えて下さい。

  • エクセルVBA「スピンボタンで小数を扱う」

    エクセルVBA「スピンボタンで小数を扱う」 エクセルVBAの初心者です。 スピンボタンとテキストボックスを組み合わせて使う際、「0.1、0.2・・・1.0、1.1・・・」というような数の増加を表示したいのですが、どのようなコーディングが必要でしょうか。 試行錯誤しておりましたがどうしても出来ませんのでご質問させて頂きます。

  • ご教授願います。

    エクセルのVBA初心者です。 期限が迫っているので、どなたかご指導、ご教授願います。 ここまでの経緯を説明いたします。 ユーザーフォーム1 オプションコマンド1 オプションコマンド2 ↑(楕円の○をつけるため) コンボボックス1 ↑(記録先シートを指定するため) テキスト1 テキスト2 テキスト3 テキスト4 ↑(A列の空白行を検索語A列%行にテキスト1 B列%行にテキスト2・・・) コマンドボタン1 コマンドボタン2 ↑(完了ボタンとキャンセルボタン) このようにユーザーフォーム1を構成致しました。()内は希望プログラムです。 なお、このユーザーフォーム1はシート1上に作成致しました、コマンドボタンAによって呼び出されるようにしています。 またシート1にはオプションボタン1,2と同じ名前が書いてあるセル1,2があります。 このように構成したうえで、行いたいプログラミングは下記のようになります。 コマンドボタンAでユーザーフォーム1を呼び出します。 オプションコマンド1(又は2)にチェックをいれ、テキストボックス1~4まで記入します。 そしてコマンド1でhideを使って一度隠します。 hideでユーザーフォーム1を隠しはしますが、コマンドボタン1を押すと、オプションコマンド1を同じ名前のセルには楕円の○マークがでます。テキスト1~4はコンボボックスで指定したシート先のA行の空白セルにA列%行 B列%行 C列%行 D列%行に各々記入されます。%は空白行です。 また選択したコンボボックスの内容はシート1の指定セルに記入されるようにします。 このようにしたいのですが、どなたかご教授願います。 説明が至らない点、またわがままなお願いではございますが、何卒お願い致します。

  • 条件付き書式のコピー&ペーストの簡略化について

    エクセル初心者です。具体的に書かせて頂きますと、1~31までのシートがあります。シート1のセルB1~B10に条件付き書式が入っているセルを、シート2~31までの同じ B1~B10に貼り付けする作業を、今まではマクロの記録で地道にコピペしていたのですが、VBAでもっと簡単に出来ないか、色々参考書をみながら試行錯誤しているのですが、上手く行きません。 もしよければ、ご教授ください。よろしくお願いします。

  • チェックボックス+変数+値

    flash初心者なのですが、flashのチェックボックスとボタン、ダイナミックテキストのテキストボックスを使ってチェックが入ればボタンを押すとテキストボックスに3を表示、チェックが入ってなければ5を表示させたいと考えています。 チェックボックスの名前はc_boxとしています。 テキストボックスの名前はzとしています。 どのようにすればよいか教えてください。 ボタンに on(press){if(c_box=true) {c_box=3}else{c_box=5} } などといろいろと試行錯誤を繰り返している状態です。 よろしくお願いします。

    • ベストアンサー
    • Flash

専門家に質問してみよう