Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


10244 / 13646 ツリー ←次へ | 前へ→

【22926】エラー行番号の取得 4−236 05/3/7(月) 19:33 質問[未読]
【22927】Re:エラー行番号の取得 かみちゃん 05/3/7(月) 20:32 発言[未読]
【22928】Re:エラー行番号の取得 4−236 05/3/7(月) 21:30 回答[未読]
【22929】Re:エラー行番号の取得 ichinose 05/3/7(月) 22:00 発言[未読]
【22935】Re:エラー行番号の取得 bykin 05/3/8(火) 0:35 回答[未読]
【22946】Re:エラー行番号の取得 4−236 05/3/8(火) 14:31 お礼[未読]

【22926】エラー行番号の取得
質問  4−236  - 05/3/7(月) 19:33 -

引用なし
パスワード
   はじめまして。
いつも参考にさせていただいています。

検索したり調べてみたのですが、見つかりませんでしたので質問させてください。


エラーがあった場合に、どの行でエラーが発生したかを表示させるにはどうすればいいのでしょうか?


各項目ごとにエラーチェックをして、その番号を取得するのはできたので一応目的は達せられているのですが、項目がたくさんあるので一つずつに埋め込むのもスマートでないので、エラーのときにどの行で発生したかが分かる関数もしくは方法があれば教えていただきたいのですが。


<現在の記述>(質問に不要な部分は削除してあります。)
  On Error GoTo ErrorMessage

' 項目01「Data」セル検索
  Set Cell01 = Range("A:A").Find("Data")
  ErrorCheck = IsError(Cell01)
  If Error01 = False Then ErrorNum = "-01"

' 項目02「Time」セル検索
  Set Cell02 = Range("A:A").Find("Time")
  ErrorCheck = IsError(Cell02)
  If Error02 = False Then ErrorNum = "-02"




ErrorMessage:
  MsgBox "エラー番号 = " & Err.Number & ErrorNum, vbCritical


よろしくお願いします。

【22927】Re:エラー行番号の取得
発言  かみちゃん  - 05/3/7(月) 20:32 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>エラーがあった場合に、どの行でエラーが発生したかを表示させるにはどうすればいいのでしょうか?

何のためにそのようなことをしたいのかがよくわからないのですが、
とりあえず、こういうこともできると思います。
 Set Cell01 = Range("A:A").Find("Data")
 If Cell01 Is Nothing Then
  MsgBox "Dataが見つかりません"
 End If

【22928】Re:エラー行番号の取得
回答  4−236  - 05/3/7(月) 21:30 -

引用なし
パスワード
   早速お返事ありがとうございます。

>何のためにそのようなことをしたいのかがよくわからないのですが、

[背景]とある決まった項目のあるテキストを読み込んで書き換えるマクロを作ってるんです。

作るのは私なんですが、実際に使用するのは「マクロってなに?」という人達です。
で、いずれ私の手から離れることになるマクロなので、どこにエラーが発生したかをメッセージとして出すことで、どこに問題があるかを明確にしておきたいんです。
# 私の後任となる(未だ見ぬ人)のために。

>とりあえず、こういうこともできると思います。
> Set Cell01 = Range("A:A").Find("Data")
> If Cell01 Is Nothing Then
>  MsgBox "Dataが見つかりません"
> End If

それでもいいんですが、やはりそれだと項目1つずつに書かなくてはなりません。
項目がたくさんあるので特別な記述なしにエラーがどの行で出ているかが分かれば、マクロを見れば問題が分かるので・・・。
# うまく説明できてない気がします。。。分かっていただけたでしょうか?
# ひとつずつエラーメッセージを出すのが使う人には優しいのかもしれませんが。

マクロ側のエラーではなくて、元のテキストの問題点を見つけるためなんです。
簡単にエラーの発生した行がわかる方法があるんじゃないかなーと思うんですが・・・。
ないですかね。。。

【22929】Re:エラー行番号の取得
発言  ichinose  - 05/3/7(月) 22:00 -

引用なし
パスワード
   ▼4−236 さん:
こんばんは。

>早速お返事ありがとうございます。
>
>>何のためにそのようなことをしたいのかがよくわからないのですが、
>
>[背景]とある決まった項目のあるテキストを読み込んで書き換えるマクロを作ってるんです。
>
>作るのは私なんですが、実際に使用するのは「マクロってなに?」という人達です。
>で、いずれ私の手から離れることになるマクロなので、どこにエラーが発生したかをメッセージとして出すことで、どこに問題があるかを明確にしておきたいんです。
># 私の後任となる(未だ見ぬ人)のために。
>
>>とりあえず、こういうこともできると思います。
>> Set Cell01 = Range("A:A").Find("Data")
>> If Cell01 Is Nothing Then
>>  MsgBox "Dataが見つかりません"
>> End If
>
>それでもいいんですが、やはりそれだと項目1つずつに書かなくてはなりません。
>項目がたくさんあるので特別な記述なしにエラーがどの行で出ているかが分かれば、マクロを見れば問題が分かるので・・・。
># うまく説明できてない気がします。。。分かっていただけたでしょうか?
># ひとつずつエラーメッセージを出すのが使う人には優しいのかもしれませんが。
>
>マクロ側のエラーではなくて、元のテキストの問題点を見つけるためなんです。
>簡単にエラーの発生した行がわかる方法があるんじゃないかなーと思うんですが・・・。
>ないですかね。。。
以前、同じようなご質問がありました。

http://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=11585;id=excel

結論としては、難しいと言う事になりますけどね!!

【22935】Re:エラー行番号の取得
回答  bykin  - 05/3/8(火) 0:35 -

引用なし
パスワード
   こんばんわ。

>マクロ側のエラーではなくて、元のテキストの問題点を見つけるためなんです。

ってことなんでっしゃろ?
コードのエラー発生箇所なんて調査する必要ありまっか?

>Range("A:A").Find("Data")
>Range("A:A").Find("Time")

チェック用の新規シートに
「データシートのA列に"Data"やら"Time"なんて文字列が入ってるかどうか」を
順番に表示させるだけでええんとちゃうのかな?

>マクロを見れば問題が分かるので・・・。

テキストの問題点を見つけるためにマクロ初心者にコードを調べさせるっていう考えは
本末転倒って感じするねんけどな。

こういうことと違うんやったらかんにんな。
ほな。

【22946】Re:エラー行番号の取得
お礼  4−236  - 05/3/8(火) 14:31 -

引用なし
パスワード
   みなさん、ありがとうございます。

>>マクロ側のエラーではなくて、元のテキストの問題点を見つけるためなんです。
>
>ってことなんでっしゃろ?
>コードのエラー発生箇所なんて調査する必要ありまっか?

説明が言葉足らずなので申し訳ないのですが、変換元のファイルはよそから発生したデータで、日々数十出てきます。それを違うフォーマットに編集しようとしています。
が、変換元ファイルにエラーがある場合があるので、それを発見しようと。

>>マクロを見れば問題が分かるので・・・。
>
>テキストの問題点を見つけるためにマクロ初心者にコードを調べさせるっていう考えは
>本末転倒って感じするねんけどな。

コードを表示させて、マクロ(もしくはデータの流れ)の分かる人間に連絡しなさいという方法を取ろうとしています。
まったく何のエラーも出さずだと対応のしようがないので。

過去にも似たようなことがあったということで、見させていただきましたが、やはり難しいのですね。
残念。地道に全項目にエラーチェックを埋め込みます。

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

10244 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free