• 締切済み

VBA シート毎にユーザーフォームを作成する方法

VBAの初心者です。記載内容に不備があるかもしれませんが、ご了承下さいませ。 エクセルのシート毎に異なったデータを簡単に入力したいと思っています。それをVBAを使って作成したいのですが、シート毎のユーザーフォーム作成方法(オブジェクトのWorksheetやモジュールの記載内容など)がわかりません。一つのシートに対しては、なんとかユーザーフォームを作成でき、データ集計できています。 ネットで検索しても、思い通りのサイトが見つかりませんでしたので、質問させていただきます。 教えて下さい。宜しく御願い致します。

みんなの回答

回答No.2

>2つ目のフォームを作成し、実行を押すと… という部分に、誤りがあります。 先の回答をもう一度確認して頂きたいのですが、ご紹介したコードはイベントドリブン型なので、「実行を押す」という操作を必要としません。ワークシートがアクティブになった時に起動するものとお考えください。 それから、エラー部分が黄色く反転している状態の時に、他の画面に切り替えると、画面上見えなくなっても中断状態が継続しており、すぐまたエラーで止まってしまいます。実行メニュー→リセットとし、中断状態を解除してから、次の操作に移ってください。 再度、整理すると、 (1)UserForm1を作り、実行は押さない。 (2)UserForm2を作り、実行は押さない。 (3)Excelに戻って、シート1のシート見出しから入ってコードを書き、実行は押さない。 (4)Excelに戻って、シート2のシート見出しから入ってコードを書き、実行は押さない。 (5)Excelに戻って、シート1、2を切り替えるとUserFormが現れる。 (6)途中、コードが黄色くなった時は、実行メニュー→リセットとしてから続きの操作をする。 といった感じの流れで、再挑戦してみてください。

ppp327akt
質問者

お礼

解決しました。ありがとうございました。

回答No.1

例えば、あらかじめUserForm1、UserForm2を作っておき、シート1のシート見出しを右クリック→コードの表示、で現れた画面に、 Private Sub Worksheet_Activate() UserForm1.Show End Sub として、同様に、シート2のシート見出しを右クリック→コードの表示で、 Private Sub Worksheet_Activate() UserForm2.Show End Sub とすれば、 シート1がアクティブになればUserForm1、シート2に切り替えればUserForm2、と、シートに対応したそれぞれのUserFormを呼び出す事が可能になります。

ppp327akt
質問者

お礼

アドバイスありがとうございます。 早速試してみましたが、2つ目のフォームを作成し、実行を押すと「実行時エラー 424 オブジェクトが必要です。」とエラーがでてきます。 デバックしますと、2つ目のマクロ登録したモジュールのフォーム名が黄色になりました。フォームのオブジェクト名をコピペしたのですが、解決方法が解らず、困っています。

関連するQ&A

  • Excel VBA ユーザーフォームについてs

    ExcelVBAでユーザフォームを作成していますが行き詰まっています。 お助け下さい m(__)m VBAの処理内容を新Sheetへ保存し、 その内容をユーザフォームへWorkSheetとして表示させて エンドユーザに直接編集してもらおうと思っています。 ユーザフォームの『コントロールの追加』で「Microsoft Office Spreadsheet XX.X」を追加して 空のWorkSheetを追加することは出来たのですが、 このWorkSheetを空でなく前出の処理内容を反映したSheetにすることは出来るでしょうか? VBA処理 ⇒ 結果反映WorkSheet(1)作成 ↓ ユーザフォーム表示 : (1)を表示したい よろしくお願いします。

  • EXCELのVBAで、あるワークシートでのみ使うユーザーフォームを作り

    EXCELのVBAで、あるワークシートでのみ使うユーザーフォームを作りました。そのワークシート上での定数や、プロシージャや関数をワークシートのモジュールに置いています。そして、その定数や関数などをユーザーフォームのイニシャライズなどで使いたいと思いますが、ユーザーフォームのモジュールはワークシートのモジュールとは別なので、使えません。他への影響を考えると、標準モジュールには、置くのは不適切だと思います。 特定のワークシート上でのみ使うユーザーフォームと、そのワークシートとで、共通の定数や関数などを使う方法は、あるのでしょうか。どのようにすればよいのでしょうか。

  • EXCEL VBA 保護したシートを読込みしたい

    お世話になります。 EXCEL VBAで「データ」というシートあります。ここの100件ほどのデータが入っており、もう1つの「集計」というシートにフォームを作成してそのフォームからVBAを使って集計するのですが、この「データ」シートはユーザーにいじられたくないので保護もしくは非表示にしたいと思っています。 しかし「データ」シートを保護してしまうとVBAで「データ」シート読み込む際にエラーになってしまいます。 何かよい方法はありますでしょうか? 環境 WindowsXP SP3 Excel2003

  • VBA ユーザーフォームを使って

    簡素化して書きますがエクセルシートのA1からZ100までデータがあります。(行は増え続けます) A1からZ1までの1行のデータをまとめて1画面に表示したくてユーザーフォームで作ってみました。(ラベル使用) ユーザーフォーム上で「次へ」ボタンを作成し、それをクリックすると次は A2からZ2までを表示させたいのですがやりかたがわかりません。 (また、「戻る」ボタンを作成し、それをクリックすると1行上へ戻るようにしたいです) VBAは初心者もいいところでネットで調べまくってやっています。 が、なかなか思うような結果にならずみなさんのお力をお貸しいただきたいと思います。 実際のデータは色々複雑なのでソースをあえて載せていませんのでご了承ください。 こういうやり方があるよって事を教えて頂けたらと思います。 よろしくお願いします。

  • VBAでのユーザーフォームの使い方

    VBAのマクロでユーザフォームにボタンを配して、それによってエクセルシートのデータを更新するようなマクロを作りたいのですが、ユーザフォームの挿入でボタン配置まではできるのですけど、どのようにリンク付けするのかコーディング等、解りません。お教え下さい。簡単なサンプルコーディングがあれば助かります。

  • エクセルVBA ユーザーフォームをオブジェクトとしてセットする書き方?

    いつもご回答頂きありがとうございます。 エクセルVBAでユーザーフォームをオブジェクト変数として セットする書き方を教えていただけないでしょうか? エクセルVBAでAファイルとBファイルがあり AファイルのVBAからBファイルを開いて、データを取得し Aファイルに記入していく。と言うVBAを作成しました。 ただ、BファイルにはopenイベントでBファイルに作成された ユーザーフォームがloadされるようになっていて、 AファイルからBファイルを開けたとき、そのユーザーフォームを 消したいのですが、消す方法が分かりません。 AファイルからBファイルをopenメソッドを用いたあと、ユーザー フォームを消せばいいと思うのですが、書き方が分からず困って おります。 オブジェクトとしてセットして、そのオブジェクトをunloadすれば いいかな?とか思っているのですが、セットの仕方もわからず、、、 宜しくお願いいたします。 それぞれのファイル名を「ファイルA」、「ファイルB」、 ユーザーフォーム名を「UserFormB」としたとき、どのように 書けばよろしいでしょうか?

  • ユーザーフォームでチェックしたシートを保存する方法

    「台帳」というExcelのブックに「リスト」「印刷用1」「印刷用2」「印刷用3」…というように複数のシートがあります。「印刷用1」…はVLOOKUP関数を用いて「リスト」に入力したデータを参照しています。 現在ユーザーフォームを用いてチェックを入れたシートを出力できるようになっているのですが、このユーザーフォームを利用してチェックを入れたシートをリンクを外した状態で1つのブックとして保存させる方法はないでしょうか? 詳しく言うと、例えば「印刷用1」「印刷用3」をコピーして新しいブック(ファイル)を作成し、シート名はそのまま維持してファイル名は「A1」セル(全シート共通です)の内容に、加えてVLOOKUP関数で取得しているデータはリンクを外してテキストに変換し、現在のフォルダに保存するという作業をVBAを使用して自動化させたいのです。(上司の要望です) もともとあるユーザーフォームは前任者が作成したもので、当方はVBAは用語もろくにわからない全くの初心者ですので、詳しい解説も添えていただけると勉強にもなり非常に助かります。 よろしくお願いいたします。

  • ユーザフォーム(VBA)で入力した内容をシートへコピーするには

    ユーザフォーム(VBA)でテキストボックスとボタンを作成しました。 このテキストボックスに入力した内容をボタンを押すことでシート1のA1セルにコピーしたいのです。こんな簡単な感じなのですが、 プログラムはどのようにしたらよいのでしょうか?教えてください。 それと、このエクセルファイルを開き、マクロを有効にするのボタンを押すと思うのですが、そのときにすでにユーザフォームが表示されているようにしたいのですが・・・どうすればいいのでしょうか? ※できたらでよいのですが、もう一つボタンを作成し『クリア』ボタンということで、テキストボックスに入力した内容だけをクリアさせるボタンも作ろうとおもうのですが、それはどうしたらよいのでしょうか? 困っています。教えてください。

  • VBAで作成したユーザーフォームについて

    エクセル2003のVisualBasicでカレンダーコントロールを使ったユーザーフォームを作成し使用していたのですが、先日購入したミニPC(EeePC 1000HE)にインストールされてるエクセル2007では使用できず、Visual Basicを開きユーザーフォームを校正しようと開きますと、下記のダイアログが出て使用できません。メッセージの内容からするとPCの問題の気もするのですが、使用できない理由と対処法をわかる方いましたらどなたか教えてください。よろしくお願いします。 Microsoft Formsダイアログ ↓ !はこのマシンでは利用できないため、オブジェクトを読み込めませんでした。

  • エクセルのユーザーフォームについて

    エクセルのユーザーフォームについて教えてください。 ユーザーフォームにてメニュー画面を作成しました。 ユーザーはメニューからの操作だけでエクセルシートを作成できるようなマクロをつくりました。 ユーザーフォームのコマンドボタンでEXCELを終了させることはできますか? VBAの記述方法も教えてください。

専門家に質問してみよう