• ベストアンサー

エラーメッセージをコピーするには?

例えば Sub test() Dim i As Integer i = "a" End Sub というコードは 実行時エラー13が発生します。 このエラーメッセージの内容をコピーする事は可能でしょうか? エラー処理をし err.Descriptionで取得するしかないですか?

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

  • ベストアンサー
回答No.3

[デバッグ(D)] を選択して、 Ctrl + G でイミディエイトウィンドウを出します。 そこに ?err.Description,err.Number とすれば直近のエラーの説明と番号が得られます。 ご参考まで。

lkqmpqdmb
質問者

お礼

ありがとうございました。

その他の回答 (2)

  • kkkkkm
  • ベストアンサー率65% (1620/2459)
回答No.2

そうですね。On Errorステートメントを使用してErr.Descriptionですね。

lkqmpqdmb
質問者

お礼

ありがとうございました。

  • 4017B
  • ベストアンサー率73% (1305/1776)
回答No.1

windowsのエラーメッセージ系は、ダイアログ(警告ウィンドウ)をマウスでクリックしてアクティブ状態にした後。Ctrl+C でいわゆるコピペを行う事で取得可能です。 コピーした後は、適当に新規でメモ帳(テキストファイル)を開いて、その上にそのまま Ctrl+V でペーストすれば、ダイアログ内のメッセージが普通のテキスト情報としてコピペ可能です。 基本的に種類を問わず全てのソフトで可能ですが、一部ソフト内で特殊な処理をしてウィンドウを表示させているソフトだと、何も情報が取れない事があります。MS系なら大丈夫だと思います。

lkqmpqdmb
質問者

お礼

ありがとうございました。

関連するQ&A

  • 二つのエラーを発生させたい

    ひとつのプロシージャー内で、 二つのエラートラップを仕掛ける事は出来ないのでしょうか? Sub エラーが発生した時にエラーが発生したら() Dim i As Long On Error GoTo Err1 i = "a" Exit Sub Err1: MsgBox "Err1のエラー: " & Err.Description On Error GoTo Err2 i = "b" Exit Sub Err2: MsgBox "Err2のエラー: " & Err.Description End Sub を行うと、 i = "b" で2回目のエラーが発生した時は、 実行時エラーになってしまいます。 i = "b" で2回目のエラーが発生した時に、 「Err2のエラー: 型が一致しません。」 と表示させるにはどうすればいいでしょう? Sub エラーが発生した時にエラーが発生したら() Dim i As Long On Error GoTo Err1 On Error GoTo Err2 i = "a" Exit Sub Err1: MsgBox "Err1のエラー: " & Err.Description i = "b" Exit Sub Err2: MsgBox "Err2のエラー: " & Err.Description End Sub にすると、 i = "a" のエラーで、 「Err2のエラー: 型が一致しません。」 へ移動してしまいます。

  • ループの中で何度もエラー処理をしたい場合

    サンプルコードを掲載します。 実際はセルの文字を取得するのでこのコードとは違いますが、形は同じです。 Sub test() Dim i As Long On Error GoTo Err1 For i = 0 To 5 i = "a" Err1: Debug.Print i "は、エラーになりました" Next End Sub このようなコードの場合、 i=0の時に、1回目のエラーになって 「0は、エラーになりました」が返りますが、 その後、i=1になった時に i = "a"を実行すると On Error GoTo Err1が無視され、エラーになってしまいます。 ループの中でエラーが何度発生してもエラー処理をする方法はありますか? On Error Resume Next以外の方法で教えてください。

  • ヘルプファイルはどこにあるのですか?

    VBAについて質問です。 Sub OnErrorTest() On Error GoTo ErrorTrap Dim i As Integer i = "test" ErrorTrap: MsgBox "エラー番号:" & Err.Number & vbCrLf & _ "エラー内容:" & Err.Description & vbCrLf & _ "ヘルプファイル名" & Err.HelpContext & vbCrLf & _ "プロジェクト名:" & Err.Source End Sub 上記のコードを実行すると エラー番号:13 エラー内容:型が一致しません。 ヘルプファイル名1000013 プロジェクト名:VBAProject が返ってきます。 しかしエラーなのにヘルプは表示されません。 なのにヘルプファイル名1000013となるのはどういう事なのでしょうか? この1000013と言う数字は何を表していますか?

  • エラーが発生した場合は VBA

    Sub Sample() On Error GoTo Err1 Dim i As Integer i = "あ" '←ココで構文エラーとなる。 MsgBox "あ" Debug.Print "無事終了します" Exit Sub Err1: Debug.Print "エラーになりました" i = 1 Resume Next 'エラーの発生した次の行から処理を続行します。 End Sub このようなエラー処理で エラーが発生した場合は MsgBox "あ" ではなく i = "あ" '←ココで構文エラーとなる。 に戻る事は出来ないのでしょうか?

  • VBAのUserFormでサブルーチンを用いる

    UserFormのコードに次のように書いてbuttomを押してみると コンパイルエラー:ByRef引数の型が一致しません。 と出てしまいます。 どこが間違っているのでしょうか?ご回答お願いします。 Private Sub buttom_Click() Dim i As Integer Dim name As String i = 1 name = "名前" Call test(i , name) End Sub ---------------------------------------------- Sub test(i As Integer, name As String) Cells(i , 1) = name End Sub

  • On ErrorでエラーNoが0

    On ErrorでエラーをトラップしてエラーNOとエラー内容をダイアログに表示させています。 Private Sub pv_sample() Dim errno as Long On Error GoTo ERR_END ' 処理内容略 Exit Sub ERR_END: errno = Err.Number MsgBox "システムエラー エラーNO(" & errno & ") 内容(" & Err.Description & ")" End Sub エラーが発生した場合はErr.Numberには0以外がセットされるはずですが 「システムエラー エラーNO(0) 内容()」 というメッセージが表示されることがあります。 On Eroorで飛んできたときにエラーNoが0になってしまうことはありえるのでしょうか。

  • エラーメッセージはコピペできないのでしょうか?

    MsgBoxはctrl+cでコピペできるのですが エラーメッセージはコピペできないのでしょうか? Sub Sample() Dim i As Long i = "a" End Sub でエラーを発生させて、コピーしてみても何も起こりません。

  • 「1から5の間なら」とするには?

    「1から5の間なら」とするには? エクセルvbaです。 Sub test1() Dim i As Integer i = 1 If i = 1 Or i = 2 Or i = 3 Or i = 4 Or i = 5 Then MsgBox "1-5までのどれかです" End If End Sub は、最大でも5なので手入力でできますが、 これが1から100までならor演算子で繋ぐのは大変なので Sub test2() Dim i As Integer i = 1 If i = [1-5] Then MsgBox "1-5までのどれかです" End If End Sub みたいなことをやりたいのですが、うまくいきません。 デバッグしてもエラーにもなりません。 自分でコードを書いといて聞くのもおかしいですがtest2の意味と、表題の方法を教えてください。 よろしくお願いします。

  • GetNamespaceで、コンパイルエラー

    アクセスからアウトルックの受信メールを操作しようとしているのですが Private Sub test1() Dim requestsFolder As MAPIFolder Dim appNameSpace As Namespace Dim requestMailItem As MailItem Dim i As Integer '受信フォルダの取得 Set appNameSpace = Application.GetNamepace("MAPI") Set requestsFolder = appNameSpace.GetDfaultFolder(olFolderInbox) ・ ・ ・ End Sub これを実行すると GetNamespaceで、コンパイルエラーになります。 Microsoft Outlook ○.○ Object Library で、アウトルックに参照設定はしているのですが アクセスからはGetNamespaceは使えないのでしょうか?

  • 数が多い定数をスマートに処理するには?お知恵をお貸しください。

    Visual Basic(VB)6.0 です。フォームのTextなど各種入力の状態をチェックして、 不正なら該当する(ユーザ向けの)エラーメッセージを フォームのLabelに表示する処理を書いています。 エラーメッセージは20~30程度になり、全て定数Const文で持たせました。 随時発生する入力チェックの処理の度に、エラーならLabelのCaptionの表示を 変える処理を書くのはスマートではないと思ったので、 Label表示変更専用のモジュールを作ろうと考えました。 引数に(ユーザ定義の)コードを渡して、対応する定数のエラーメッセージを 判定・表示させる処理を書こうと思ったのですが、ここでうまくいきません。 以下、簡単なコードです。 ------------------------------------------------------ '* 定数です * Public Const ERR1 = "エラー1です" Public Const ERR2 = "エラー2です" Public Const ERR1 = "エラー3です" Public Const ERR2 = "エラー4です" '-----中略----- Public Const ERR50 = "エラー30です" ------------------------------------------------------- '** メイン処理です。** Sub main() Dim i As Integer 'フォームの入力をチェックします i = Chk_Value(dummy) If i > 0 Then '0より大きかったらエラーコードとして引数を渡します Call Disp_Msg(i) Exit Sub End If End Sub ------------------------------------------------------- '入力チェック処理です Private Function Chk_Value(ByVal dummy As Integer) As Integer '空白だったらエラーなので1を返します If Text1.Text = "" Then Chk_Value = 1 End If End Function ------------------------------------------------------- 'メッセージ表示処理です Private Sub Disp_Msg(ByVal ecd As Integer) '分からない! '引数で1を受け取り、定数のERR1を表示したい '引数で2を受け取ったら、定数のERR2を表示したい End Sub ------------------------------------------------------- 列挙型やType型変数もよい使い方が思いつかず、 ループで回して配列に格納しようにも、変数と変数を組み合わせて 変数を作る(wErr = "ERR" & i と書いても定数ERR1を表せない) のも無理なようだし、ほとほと困り果てています。 拙い説明で恐縮ですが、私の考えを実装することは可能でしょうか。 または別の方法はあるでしょうか。 よろしくお願いします。

専門家に質問してみよう