1

フォームを作成していて、VBAウィンドウで最初の関数を作成しました。この関数はボタンを作成します。「Endfunction」の後に何かを入力すると、「コメントのみが..の後に表示されます」というエラーが表示されます。何が問題なのですか。関数を間違った領域に配置していますか?

これが私のコードです:

Option Compare Database 
Option Explicit

Function MainMenuOptions()

Dim frm As String
frm = "Main"

Dim SCFormB As Control
Dim SCSearchB As Control
Dim SCReportB As Control

Set SCFormB = CreateControl(frm, acOptionButton, , , , 0.5, 0.6, 1.5, 0.55)
Set SCSearchB = CreateControl(frm, acOptionButton, , , , 0.5, 1.5, 1.5, 0.55)
Set SCReportB = CreateControl(frm, acOptionButton, , , , 0.5, 2.4, 1.5, 0.55)


End Function
4

4 に答える 4

4

私は最近この問題を抱えています。私は新しい株式/デリバティブ取引および管理アプリケーションを作成しており、フォームの作成で素晴らしい進歩を遂げています。ある時点で、フォームのコントロールのすべての_Click()ハンドラーでこのエラーが発生し始めました。 。ただし、フォームのフィールドの1つに対する_Enter()ハンドラーでは発生しませんでした。'End'ステートメントの後に余分なテキストはありませんでした-まったく!どういうわけか、間違ったLINEENDINGSが'End'ステートメントの終わりに到達したことを発見しました。

修正:各'End'ステートメントの最後に移動し、次のSubステートメントがカーソルに到達するまでDELETEを押します(つまり、前のprocのEndステートメントと同じ行に次のプロシージャの開始があります) )、Enterキーを押して、次のSubステートメントを独自の行に戻します。これにより、各イベントハンドラーの最後に正しいCR / LF(またはそのエディター/コンパイラーに必要なもの)があることが保証されます。

于 2017-11-27T18:54:38.480 に答える
2

どうやら、関数またはサブの外にあるモジュールに余分なコードがあります。VBAエディターで[デバッグ]->[コンパイル]を選択すると、削除または修正できる問題のあるコードが強調表示されます。

参考:CreateControlは、左、上、幅、高さにtwip(1440分の1インチ)を使用します。使用している数値に約1440を掛けることができます。

于 2012-09-08T03:59:10.367 に答える
1

このエラーメッセージについてMicrosoftOfficeDev Centerを確認すると、次の説明が表示されます。

実行可能コードをプロシージャの外に配置しました。プロシージャの外側の非宣言行は、コメント区切り文字(')で始める必要があります。宣言ステートメントは、最初のプロシージャ宣言の前に表示する必要があります。コードの実行時にコメントは無視されます。

これは、SubまたはFunctionの外部で記述できるコードのタイプが制限されていることを意味します。

于 2012-09-08T03:58:10.037 に答える
0

このエラーが発生し、解決策は簡単でしたが、VBAのデバッガーがしばらくの間私を香りから遠ざけました。「EndSub」の後に削除(コピーアンドペーストエラー)が必要な余分なコードがありましたが、「End Sub」ステートメントの後に余分なコードを強調表示するのではなく、デバッガーがSubプロシージャの先頭を強調表示したため、エラーは、強調表示されたサブプロシージャの冒頭陳述とその上の「EndSub」の間にありましたが、実際には、強調表示されたサブプロシージャの「End Sub」の後にエラーがあったため、強調表示されたテキストの下をよく見る必要がありました。したがって、事実上、VBAは、直後の問題ではなく、完全に問題のないサブプロシージャの開始を強調しました。

誰かが玄関のすぐ外にゴミ袋を置いて、ドアを通り抜けるとすぐにゴミの中に入って、ドアを指さしながら「ええと、ゴミを移動する必要があります」と言うようなものです。

于 2021-12-07T22:29:29.577 に答える