2010-11-26 21 views
-2

メートルの誤差である 無効なプロシージャ呼び出しまたは引数無効なプロシージャ呼び出しまたは引数 Text1.SetFocus を使用しているときにエラーを取得

+0

は、この行を削除し、のTabIndexを設定しますテキスト1を0に設定してください。 – Mudassir

+0

あなたの質問を編集し、レビューするためのコードを投稿することができますか?これはvb6ですか? –

答えて

1

あなたがいないフォームコードから、すなわち、モジュールからこれを呼び出している場合は、 text1が置かれているフォームオブジェクトを参照する必要があります。 あなたがする必要があるかもしれないもう一つのことは、持続性の錠剤を得ること、より頻繁にF1を押すこと、そして助けを求めるときに豊富な言葉を使うことです。あなたがのForm_LoadからForm_ActivateからText1.SetFocusを参照していないする必要が

+1

"エラーが発生しました。お手伝いできますか?" –

+0

最初に薬を飲んではいますが、それは正しい言葉です。答えは「はい、できます。さようなら」です。 – jpinto3912

0

-

http://www.vb6.us/tutorials/understanding-forms-vb6-tutorial

Form_Activate

対のForm_Load Form_Loadイベントでは、あなたは通常通り、初期型のタスクを実行しますあなたがすべき。ただし、Loadイベントが完了した後にのみフォームが完全にロードされるため、Loadイベントでは特定の種類のアクションを実行できません。 1つは、Loadイベントで実行されたときに、フォームへの印刷は機能しません。さらに、Loadイベント中にフォーム上の特定のコントロールにフォーカスを設定しようとすると、実行時エラー '5'というメッセージが表示されます。プロシージャコールまたは引数が無効です。たとえば、フォームにText1というテキストボックスがあるとします。次のコードは、そのエラーになり:

Private Sub Form_Load() 

' other initialization stuff 

Text1.SetFocus ' causes an error 

End Sub 

エラーの原因は、フォームが完全にロードされていないので、どちらも€âその上のコントロールのいずれかをされていない「とあなたがにフォーカスを設定することができないということですまだ利用できないコントロールです。 この問題を解決するには、Activateイベントなど、他のフォームイベントのいずれかを使用する必要があります。 (VBがフォームをロードすると、実際にはInitialize、Load、Resize、Activate、GotFocus、Paintのようないくつかのイベントが繰り返されます)これらのうちLoadとActivateがおそらく最も一般的に使用されます。 Form_Activateイベントで動作するコントロールにフォーカスを設定する:

Private Sub Form_Activate() 

' other statements 

Text1.SetFocus ' no problem here 

End Sub 

activateイベントについての注意を:それはその形にするたびに、アプリケーション・スイッチを起動します。たとえば、Form1とForm2の間を行き来する場合、これらのフォームのActivateイベントに含まれるコードは、そのフォームに切り替えると実行されることに注意してください。したがって、「初めて」実行したいだけのActivateイベントのコードがある場合は、ブールスイッチで実行を制御する必要があります。たとえば、フォームの一般宣言に次の変数を定義することができます。以下のように

Private mblnFormActivated As Boolean ' will be initialized to False by default 

その後、Activateイベントでは、このスイッチを使用することができます。

Private Sub Form_Activate() 

If mblnFormActivated Then Exit Sub 

' statements you only want to execute once, including the following 
' statement to turn the switch on: 

mblnFormActivated = True 

End Sub