-PR-
解決済み

CommonDialogの、細かい使い方。

  • 困ってます
  • 質問No.9978
  • 閲覧数1436
  • ありがとう数4
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 80% (34/42)

コモンダイアログで、「ShowSave」を、やり、
保存画面を開いて、セーブさせようと思うのですが、
なぜか、保存押しても、キャンセル押しても、保存してしまいます。
学校で、MSDNをみたときには、
CommonDialog.CancelError = True
On Error GoTo ErrHandler

~中身・・保存の、コーディング~

ErrHandler:
  End sub

こういう風にやると、キャンセル押したときに、
下の、ErrHandler: この部分に、飛んで、終わるはずなんですが、うまくいきません。
誰か、
CommonDialog.ShowSave
で、開いたときのちゃんとした、保存方法おしえてください。お願いします。
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.2
レベル4

ベストアンサー率 50% (2/4)

命令の場所の問題だと思います。
結論から書きます。

CMD.CancelError = True を、
CMD.ShowSave より前に書いてください。

説明:
 まず、補足にの内容では、CMD オブジェクトのCancelErrorプロパティが、ShowSave の後に設定
されているので、Show時点では無効になっています。
先に CancelError プロパティを設定してから
ShowSave メソッドを実行すると、メソッド実行時点で
プロパティが有効になります。

後、余計なことかもしれませんが、On Error GoTo
ErrHandler も、ShowSave メソッドよりも先に記述
してください。じゃないと、エラーが起きても、エラー
ハンドルにジャンプしません。多分エラーメッセージが
出ちゃうと思います。
これも、先に説明しているように、「エラーが起きたら
ここに飛んでね」という命令がエラーが起こる個所(
ここでは ShowSave)よりも後に設定していることに
なってしまっているからです。先に設定してください。

それからもう一つ(おせっかいでごめんなさい。これで最後です)。
エラーハンドル(ここでは ErrHandler:)の前に、
Exit Sub してください。
じゃないと、エラーが起こってない場合も、エラーハンド
ルに記述した部分を実行してしまいます。

質問と関係の無いところまで書いてしまってすみません。
これで回答になっていればいいのですが。
不明な点は補足してください。
お礼コメント
mutuzi

お礼率 80% (34/42)

これを見て、早速やってみたら、うまくいきました。ありがとうございます。
おせっかいとか、余計とか、かかれてますが、逆にとっても助かりました。それがなかったら、またさまよってました。
これで,やっと完成させられます。ほんとにありがとうございました。
投稿日時 - 0000-00-00 00:00:00
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.1
レベル7

ベストアンサー率 57% (8/14)

CancelError=True ← にしておけば、キャンセルボタンでエラーが起きるはずです。

コード全体を見ないとなんともいえませんが、例えば他にもエラートラップを使っていたりしませんか?一番良い方法は、ブレークポイントを指定して1行ずつ解析していくのが良いと思います。勉強にもなるし。

出来れば、使用しているコードを見せていただきたいのですが?それが、一番早いと思います。
補足コメント
mutuzi

お礼率 80% (34/42)

早速のレスありがとうございます。
とりあえず、CancelError=True
は、やってあるんです。
それで、エラーも出るんですが、その後が、よくわかりません。
はじめたばっかで、すごく見にくいでしょうけど、乗せておきます。
最初から、やり方間違ってる可能性も・・・・。

↓これは、ほんとに、保存用のボタンの部分だけです。

Private Sub hozonn_Click()
CMD.ShowSave 'CMDは、COMMONDIALOG
save2 = CMD.FileName 'SAVE2は、string
  CMD.CancelError = True
On Error GoTo ErrHandler
If Right(save2, 4) = ".csv" Then
Open save2 For Output As #1
For i = 0 To 14 
Write #1, lbl(i).BackColor
Next i
Close #1
Else
save2 = save2 & ".csv"
Open save2 For Output As #1
For i = 0 To 14
Write #1, lbl(i).BackColor
Next i
Close #1
End If

ErrHandler: '問題の場所。
Exit Sub

End Sub
投稿日時 - 2000-10-05 03:18:33


このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


専門家があなたの悩みに回答!

-PR-

ピックアップ

-PR-
ページ先頭へ