• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAでコードから新規フォームを作成する時にコードが見えてしまう)

VBAでコードから新規フォームを作成する際にコードが見えてしまう

このQ&Aのポイント
  • VBAで新規フォームを作成する際に、コードが見えてしまう問題について解決方法を教えてください。
  • フォーム作成時にコードが表示される問題を解決する方法を教えてください。
  • VBAのコードの一部を抜粋して新規フォームを作成する際に、コードが表示される問題について解決方法を教えてください。

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

  • ベストアンサー
  • keikan
  • ベストアンサー率42% (75/176)
回答No.3

>'新規フォーム作成 >Set myFrm = CreateForm この処理の時点ですでにフォームオブジェクト自体は作成されていると思いますが、この直後にデザインで開く分には問題ないと思うのですが。 また、新規フォームを作成するにあたりコード類もペースとされておられると思いますが、 myMdl.AddFromFile "ファイル名" 等を用いて一括入力されると処理が簡素化されませんか? (既知であられましたらご容赦を)

saimon296
質問者

お礼

Set myFrm = CreateForm のすぐ下に DoCmd.OpenForm myFrm.Name, acDesign, , , , acHidden とやってみましたが何も変わりませんでした。 確かに一時的にフォームが隠れたかもしれませんがコード(新規フォーム作成コーディング)までは隠れてなかったみたいです。 新規フォームでは不特定多数のコマンドボタンを作成しており、そのコマンドボタン一つ一つにイベント処理コードを埋め込んでいるので、その埋め込んでいる途中経過がどうしても出てしまうんですね。 おそらくラベルだけを貼り付ける新規フォームなら、コードを埋め込む必要は無かったので、ここまで問題にはならなかったと思いますが、今回の場合新規作成フォームのコーディング処理まで埋め込まないといけないことがネックになっていることがわかりました。 フォームが見える見えないの処理方法の問題ではなく、コーディング作成経過処理を見せない方法が本当の問題だということにようやく気づきました。 やはりこれを解決する方法なんてないですよね。 >myMdl.AddFromFile "ファイル名" のファイル名の中にはどの様なコードを記述すればいいんですか?コマンドのクリックイベントみたいなイベントものを入れるんですか?

saimon296
質問者

補足

訂正 Set myFrm = CreateForm DoCmd.Save , "フォーム名" 'の下にデザインビューで開く DoCmd.OpenForm myFrm.Name, acDesign, , , , acHidden Set myMdl = myFrm.Module <これ以下はラベルとコマンドボタンの配置のコード> DoCmd.OpenForm myFrm.Name 'そして最後にフォームビューで開いています。 です。DoCmd.Save , "フォーム名"を入れておかないとフォーム名を自分で決めれないので入れてます。 Set myMdl = myFrm.Module以下のコードは全てファイルに記述できるんでしょうか?

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

  • keikan
  • ベストアンサー率42% (75/176)
回答No.4

>myMdl.AddFromFile "ファイル名" のファイル名の中にはどの様なコードを記述すればいいんですか?コマンドのクリックイベントみたいなイベントものを入れるんですか? フォーム完成した時点必要な最終的なコードをすべて書いておきます。(完成させたフォームのモジュールの中身をコピーアンドペーストでテキストファイルにコピーしてみましょう) そのファイルに記述されたコードがコードモジュールのシステム宣言のすぐあとに挿入されるはずです。 フォーム作成→すべてのアイテムを追加→コードを一括で貼り付け みたいな感じになると思います。 ただ、テキストファイルでおいておくとコードを覗かれてしまうので、どこかの時点で内部的に持っておいたコードをテキストファイルに書き出すか、あらかじめコードを暗号化して使用時にテキストファイルを生成するかしないとコードをあとで見られてしまうので注意が必要。 また、生成したテキストファイルの削除もお忘れなく。

saimon296
質問者

お礼

なるほどわかりました。 でもコマンドボタンを不特定多数作らなければならず、その数はレコード数によって変わって来るので、コマンドがいくつできるかなんてわかりません。 だからコードをあらかじめコマンドの数だけ用意しておかなければならないその方法は無理ですよね?クリックイベントの内容は同じなのですが・・・

全文を見る
すると、全ての回答が全文表示されます。
  • keikan
  • ベストアンサー率42% (75/176)
回答No.2

DoCmd.OpenForm myFrm.Name, acDesign, , , , acHidden モジュールを追加する等の操作をする前に一度隠してしまうのはだめですか?^^ myFrmは設問上のmyFrmですので、呼び出したあとのフォームになるはずです。

saimon296
質問者

補足

問題となっているのは新規フォームを作成する過程でコードが見えてしまうことなので、フォーム作成イベントが終了するまでは、フォーム自体がまだできていないのでフォームを開く処理は使えません。 既に開いているフォームのコマンドボタン押下でフォーム作成イベントを発生させて、新規フォームが完成すると呼び出し側のフォームを閉じています。

全文を見る
すると、全ての回答が全文表示されます。
  • keikan
  • ベストアンサー率42% (75/176)
回答No.1

myFrm.visibile = false で、隠れていませんか?^^

saimon296
質問者

お礼

やってみましたが隠れてないみたいです。 myFrmのフォームは新規フォーム作成中のフォームでいいんですか? それとも新規フォーム作成する関数を呼び出し側のフォームでいいんですか?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • フォームを作成すると同時にイベントを作成する方法は

    フォームを作成すると同時にイベントを作成する方法は? アクセスなのですが 標準モジュールで Sub フォームを作成() Dim myForm As Form Set myForm = CreateForm DoCmd.Close acForm, myForm.Name, acSaveYes End Sub をしたと同時に、 そのフォーム内に Private Sub Form_Open(Cancel As Integer) MsgBox "開きました" End Sub のようなイベントを同時に生成するにはどうすればいいでしょうか? クラスモジュールを使うのですか? クラスモジュールの使い方がまったくわからないのですが サンプルコードを頂けないですか?

  • フォームを作成してフォームビューで表示するには?

    Sub Sample01() Dim myForm As Form Set myForm = CreateForm DoCmd.RunCommand acCmdFormView End Sub vbaでフォームを作成し、フォームビューで作成したいのですが これだと何も起きないのですが、表示されるにはどうすればいいでしょうか?

  • vbaでフォームを作成しつつ、指定した名前で保存す

    vbaでフォームを作成しつつ、指定した名前で保存するには? Sub フォームを作成する() Dim myBtn As TextBox Dim myForm As Form Set myForm = CreateForm myForm.DefaultView = 1 ' 帳票フォーム DoCmd.Save acForm, "F帳票" End Sub これを実行すると 実行時エラー2489 オブジェクト ’F帳票’が開いていません。 になってしまうのですが、新規でフォームを作り名前を付けて保存する方法はありますか? ご回答よろしくお願いします。

  • エクセルでユーザーフォームをvbaで作る

    アクセスでフォームをvbaで作る時はCreateFormメソッドで出来ましたが エクセルでユーザーフォームを作る場合はどうすればいいですか? エクセルのオブジェクトブラウザでMSFormsライブラリでCreateで検索しても何もヒットしないことから Createじゃないメソッドで行うと思うのですがどのメソッドでしょうか?

  • VBA

    VBEの標準モジュール(例Module1)にVBAのプログラムを書き、 実行した時、ワークシート(例Worksheets(”sheet1”)のウインドウを自動的に開くには(前面に持ってくるには)どのようにコーディングすれば良いのでしょうか。今は実行後確認するため、プロジェクトのSheet1で右クリックして「オブジェクトの表示」でSheet1を出したり、タスクバーをクリックしていますが。まずSheet1を前面に出して処理をしたい。Activate,Select、Showなど試しても効果がありません。

  • VBAのフォームについて

    今、悩んでいるというか、不思議に思っていることがあります。 ACCESS2003 VBAで、VBAコードでメインのフォームから、ある帳票フォームのインスタンスを作成しています。メインフォームのモジュールに以下のように記述し、 Dim 帳票1 as Form で、ボタンのクリックイベントで、 set 帳票1 = New Form_帳票の元フォーム とインスタンスを生成します。更に、この帳票フォームには、同様に子フォームを持っています。こちらも同様に帳票フォームモジュールに、 Dim 詳細1 as Form として、あるボタンのクリックイベントに、 set 詳細1 = New Form_詳細フォーム と、しています。ここで、帳票1の閉じるボタンを押しても、詳細1のフォームは、閉じません。 同様に、帳票の元フォームに Dim 帳票2 as form ボタンクリックで、 Set 帳票2 = New Form_帳票2の元フォーム とします。さらに帳票2の元フォームには、 Dim Child帳票 as Form ボタンクリックで、 Set Child帳票 = New Form_帳票2の元フォーム としています。 これで、Child帳票は、いくつもいくつもインスタンス化されます。そこで、今までの動作に準じて、たくさんあるChild帳票の大元を閉じると、こちらは子フォームが全部閉じます。例えば10個子フォームを作って、途中を閉じるとちゃんとその子だけが閉じます。最初の例の帳票1フォームを閉じても、詳細1フォームが閉じないのと、何が違うのか分かりません。私は、フォームが閉じるときには、そのメンバクラス(フォーム)は、破壊されるものだと思っていたのですが、そうでもないようです。どなたかわかりやすく、教えていただけないでしょうか?

  • VBAのコードを書くところ(初心者)

    今仕事でExcelでVBAを使って物を作っているのですが、コードはどこに書くのが一番よいのでしょうか?。たとえば、本を見ると標準モジュールに書いていっているのですが、自分は今ユーザーフォームでコマンドボタンを作ったりコンボボックスを作って、そのボタンをクリックすると自然とPrivate sub オブジェクト名_Click()と出て、その中に書いているのですが、そうすると標準モジュールに書く必要がなくなってしまう気がするのですが・・・。なので一応標準モジュールに内容を移して、フォームのところで関数として呼び出すようにしたのですが、どのように書くのがよいのでしょう?長々すいませんわかりづらかったら後で補足します。 後、今までCを勉強していたのでオブジェクト?メソッド?プロパティ?の書き方が今ひとつ覚えづらいのは慣れでしょうか?

  • VBとVBAのコードの違い プロシージャー呼び出し方法

    何度かお世話になっておりおります 毎回アドバイスありがとうございます 早速なのですがまた躓いてしまいアドバイスお願いします。 ~質問内容~ 標準モジュールからフォームのプロシージャーを呼び出す エラー内容 オブジェクトが必要である       オブジェクト修飾が必要など 出てきました オブジェクト修飾 というのが もう理解出来ず 本当にスタートの時点ではありますが アドバイスお願いします VBのコード 標準モジュール Sub Main() MainForm.Initialize End Sub フォームのコード Public Sub initialize()  ”コード内容”  End Sub ↑上記で記入しました フォームで宣言されているInitialize を呼び出したいのですが VBでは このままで出来るはずなのですが VBAでは オブジェクト修飾が必要です CALL をつけても エラーのままでした 少し質問がわかりにくくなってしまいましたが 標準モジュールから フォームのプロシージャーを呼び出すには なんと入れれば宜しいでしょうか? アドバイスお願いします

  • (Access) VBA イミディエイトの使い方を教えてください。

    (1)標準モジュールにある時は、イミディエイトウィンドウにうまく表示されます。しかし、フォームオブジェクトの中に作成したときは、実行しても何も表示されません。なぜなのですか? (実行したコード) Sub test() Dim i, s s = 0 For i = 1 To 10 s = s + i Debug.Print s Next i End Sub 本などを読みましたが、いまいちイミディエイトが、どういう場面で使えるのかよく分りません。 (2)もし、初心者でも参考になるようなサイトなどが有れば、そちらもぜひ教えてください。 宜しくお願いします。

  • EXCEL VBAモジュール間のデータ受け渡し

    ユーザーフォームでセットした値を他のモジュール(Module1など)で参照するにはどうしたらいいでしょうか?

このQ&Aのポイント
  • この質問は、鼻の形状によって人間が似ているかどうかを判断することについて言及しています。
  • 鼻の形状は個人によって異なるため、鼻が似ているからといって他の特徴も似ているとは限りません。
  • 似ているかどうかは全体的な顔の特徴や輪郭とのバランスなどを総合的に判断する必要があります。
回答を見る