2012-01-19 13 views
0

エラーが発生した場合、私は自分のuserformに戻り、フォームに入力された情報を変更してマクロに渡してから続けます:If Len(Dir sFilePath & newfol、vbDirectory))= 0 ...VBA - Excel - On Error goto userform

If Len(Dir(sFilePath & newfol, vbDirectory)) = 0 Then 
      MkDir sFilePath & newfol & "\" 
      On Error GoTo UserForm1 
     Else 
      MsgBox ("Folder already exists please re enter new folder name") 
      'End 
      UserForm1.Show 
      MoveAndSave_Reports 
End If 

上記は私にエラーメッセージを与える:コンパイルエラー: "オンエラーGOTOのUserForm1"

答えて

3

で定義されていないラベルを使用すると、「オンを使用する場合エラーGoTo "ステートメントは、エラーが発生したときに、現在のプロシージャ内の特定の行にスキップすることをプログラムに指示しています。たとえば、次のコードがエラーに当たる。この例では

On Error GoTo ErrorHandler 
x = 10/0 
msgbox "x = infinity!" 

ErrorHandler: 
msgbox "Cannot divide by zero" 

、(私の「のOn Error」ステートメントの後に)、それはそれはやっているものを停止して、ErrorHandlerのラベルでコードの実行を開始しますのため(それはラベルです終わりのコロン)。このコードを実行すると、x = infinityというメッセージボックスは表示されません。ゼロで除算しようとするとエラーになると、ErrorHandlerラベルにジャンプし、ゼロで除算できないというメッセージが表示されます。

チップピアソンは基本的なエラー処理についてよく紹介していますhere

+0

Craigが言っていることを付け加えて、ラベルを作ってから、ユーザーフォームを呼び出して何をする必要があるかを示すコードを書いてください。 –

関連する問題