• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:publicプロシージャの記述方法で教えてください。)

publicプロシージャの記述方法で教えてください。

このQ&Aのポイント
  • 非連結テキストボックスのクリアを複数のフォームで行いたい為、標準モジュールに下記のコードを作成し、各フォームの削除ボタンを押しCallで呼び出すと [Meキーワードが不正] とエラーが出てしまいます。
  • 公開プロシージャの記述方法について教えてください。
  • 公開プロシージャを使用して非連結テキストボックスを複数のフォームでクリアする方法を教えてください。

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

  • ベストアンサー
  • sykt1217
  • ベストアンサー率34% (277/798)
回答No.2

Object型なので、 For Each txtclear In objForm.Control を For Each txtclear In objForm.Controls 'Control"s"に変更 にしてやれば大丈夫です。(たぶん・・) また未検証ですが・・・^^;

KOUSUKE0409
質問者

お礼

ありがとうございます。 バッチリです! 早急かつ丁重なアドバイスありがとうございました、 まだまだ解らない事だらけなので、御力添えよろしくお願いいたします。

その他の回答 (1)

  • sykt1217
  • ベストアンサー率34% (277/798)
回答No.1

[Meキーワードが不正] というのは、フォームモジュールではなく、標準モジュールでMeキーワードを使用した際に出るエラーです。 そのプロシージャを共通的に使いたい場合は、「txtクリア」プロシージャを標準モジュールに記述、そのうえで「()」の引数部分に「どこのフォームから呼ばれたか」を追加してやる必要がでてきます。 Public Sub txtクリア(objForm As Object) 'オブジェクト名をobjForm変数に格納 Dim txtclear As Control For Each txtclear In objForm.Control '呼び出し元フォームのコントロール If txtclear.ControlType = acTextBox Then txtclear = Value = Null End If Next End Sub これでプロシージャは共通的に使えます。 加えて、クリア処理側の引数が増えたので、呼び出し側も引数を与える必要が出てきます。 フォームモジュール側でクリア処理を呼び出したい場合は Call txtクリア(Me) これで大丈夫だと思います。(動作確認等はしていません。)

KOUSUKE0409
質問者

お礼

早急な対応ありがとうございます。 早速やってみたのですが、今度は For Each txtclear In objForm.Controlの所で 「アプリケーションの定義またはオブジェクト定義」 でエラーが出てしまいます、攻略お願いいたします。 ※先ほどのコードのNull列が間違っていました、再度記述いたします。 Public Sub txtクリア(objForm As Object) Dim txtclear As Control For Each txtclear In objForm.Control If txtclear.ControlType = acTextBox Then txtclear.Value = Null End If Next End Sub 自分はド素人なのでお手数掛けますが 返答お願いいたします。

専門家に質問してみよう