[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2007/03/05(Mon) 18:02
投稿者名:べた
Eメール:
URL :
タイトル:
コモンダイアログ (CommonDialog) コントロールでのファイルオープン
コモンダイアログ (CommonDialog) コントロールを使用してファイルを
オープンしようとしています。

コモンダイアログを表示した際、キャンセルボタンが押下されたら処理を
中断したいのですが、処理をどのようにしたらよいのですか。

「On Error GoTo ErrHandle」で、エラーが発生したら飛ばして終了か。
「On Error Resume Next」で、エラーが発生しても処理を継続か。

考え方の問題でしょうか。

-----
Private Sub Command1_Click()
On Error GoTo ErrHandle

    CommonDialog1.CancelError = True
    CommonDialog1.Filter = "すべてのファイル(*.*)|*.*|テキストファイル(*.txt;*.csv)|*.txt;*.csv"
    CommonDialog1.ShowOpen
    
    FN = CommonDialog1.FileName
    If FN = "" Then
        Exit Sub
    End If

    :
    :

    Exit Sub

ErrHandle:
    If Err = cdlCancel Then
        Exit Sub
    Else
        Err.Eaise Err
        errmsg = Err.Description
        MsgBox errmsg, vbOKOnly + vbCritical, "VBエラーメッセージ"
        Exit Sub
    End If
End Sub

-----
Private Sub Command1_Click()
On Error Resume Next

    CommonDialog1.CancelError = True
    CommonDialog1.Filter = "すべてのファイル(*.*)|*.*|テキストファイル(*.txt;*.csv)|*.txt;*.csv"
    CommonDialog1.ShowOpen
    If Err = cdlCancel Then
        Exit Sub
    End If

    FN = CommonDialog1.FileName
    If FN = "" Then
        Exit Sub
    End If

    :
    :

End Sub

投稿時間:2007/03/06(Tue) 03:14
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re: コモンダイアログ (CommonDialog) コントロールでのファイルオープン
> 「On Error GoTo ErrHandle」で、エラーが発生したら飛ばして終了か。
> 「On Error Resume Next」で、エラーが発生しても処理を継続か。
どちらでもお好きなように、ということで。

なお、私個人としては、ShowOpen 直前に On Error Resume Next して、パスの取得後には、
すぐに元の状態(On Error GoTo 0 あるいは On Error GoTo ラベル名)に戻すという
書き方をする事が多いですね。


> 考え方の問題でしょうか。
エラー処理については、ヘルプの『コードのデバッグおよびエラー処理』の項に、
具体例付きで幾つかのパターンが紹介されていますよ。


-- 以下、本題から外れる部分として --

> If Err = cdlCancel Then
その記述(Err関数)は、旧形式の記述です。
VB4以降では、Err.Number を使う事が推奨されています。
# VB4 以降で Err と書くと、ErrObject の既定のプロパティ呼び出しと判定されます。

>    MsgBox errmsg, vbOKOnly + vbCritical, "VBエラーメッセージ"
MsgBox 関数の第2引数はビットフラグなので、本来は + 演算子による加算ではなく、
Or 演算子による論理和として扱うべきかと。

投稿時間:2007/03/06(Tue) 12:09
投稿者名:べた
Eメール:
URL :
タイトル:
Re^2: コモンダイアログ (CommonDialog) コントロールでのファイルオープン
ありがとうございます。

解説、及び、ご指摘ありがとうございます。
勉強になります。