みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセルマクロで、エラー処理時にセルに色をつける方法

エクセルマクロで、エラー処理時にセルに色をつける方法

エクセルマクロでファイルを移動する処理を行っています。
A1セルには共通のパスがあり、
A2セルには「旧ファイル」というタイトル、B2セルには「新ファイル」というタイトルが入っています。
そして、A3セルから下に向かって移動元のファイルのパス&ファイル名が入力されています。
B3セルから同じく下に向かって移動させたい先のパス&ファイル名が入力されています。

教えていただきたいのは、考えられるエラーが起こったときに
処理を途中で止めずにエラーの出た行(B列の)に色をつけ
次の処理に進む方法です。

考えられるエラーとは
1 旧ファイルが見つからない場合
2 新ファイルが移動先に既にある場合です。

下記のコードでエラー内容を表示させるまではできたのですが
1と2の場合分けをどうしたらいいかわかりません。
1の場合と2の場合の色をわけることができたら最高なのですが…
どなたか教えてください。
よろしくお願いします。

Sub test()

Dim i As Long
On Error GoTo ErrorHandler

i = 3

Do Until Cells(i, 1).Value = ""

Name Range("A1").Value & Cells(i, 1).Value As Range("A1").Value & Cells(i, 2).Value
i = i + 1
Loop
Exit Sub

ErrorHandler:
MsgBox Err.Description
End Sub

投稿日時 - 2010-02-10 22:24:39

QNo.5665978

すぐに回答ほしいです

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

暇なのでまたまた登場、myRangeです。(^^;;;

条件3(旧ファイル無し、新ファイル有りの同時発生)も当然チェックするんですよね?

で、あれば、On Error では無理かと、、、、
(理由)On Errorでは同時に複数のエラーはチェックできないから。、

それらを考慮しての回答1でした。

以上です。

投稿日時 - 2010-02-11 12:02:14

お礼

すばやい回答で助かりました!
まだまだ勉強させていただきます。
ありがとうございました。

投稿日時 - 2010-02-12 10:34:13

ANo.4

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.3

こんな感じでは?

Sub test()
Dim i As Long

On Error GoTo ErrorHandler

For i = 3 To Cells(Rows.Count, 1).End(xlUp).Row
Name Range("A1").Value & Cells(i, 1).Value As Range("A1").Value & Cells(i, 2).Value
Next i
Exit Sub

ErrorHandler:
Select Case Err.Number
Case 53
Cells(i, 1).Interior.ColorIndex = 38
Case 58
Cells(i, 2).Interior.ColorIndex = 38
End Select
MsgBox Err.Description
Resume Next
End Sub

以上、参考まで

投稿日時 - 2010-02-11 09:21:30

ANo.2

回答1、myRangeです。

色付け条件の3番目の文言にケアレスミスあり

>旧、新ファイルともにない > A、B列に色



 旧ファイル無し、新ファイル有り > A,B列に色

に訂正します。
コードは訂正なしです。

以上です。

投稿日時 - 2010-02-11 00:19:19

ANo.1

色を付けるのは以下の3通りありますね。

旧ファイル無し ーーーーー> A列に色
新ファイル有り ーーーーー> B列に色
旧、新ファイルともにない > A、B列に色

'-----------------------------
Sub test()
 Dim i As Long
 Dim FileA As String
 Dim FileB As String

 i = 3

 Do Until Cells(i, 1).Value = ""
   FileA = Range("A1").Value & Cells(i, 1).Value
   FileB = Range("A1").Value & Cells(i, 2).Value

   If Dir(FileA) = "" Then Cells(i, 1).Interior.ColorIndex = 3
   If Dir(FileB) <> "" Then Cells(i, 2).Interior.ColorIndex = 6

   If Dir(FileA) <> "" And Dir(FileB) = "" Then
     Name FileA As FileB
   End If

   i = i + 1
 Loop

End Sub
'-----------------------------------------

Dir関数でフィルがあるかどうか調べることができます。
この関数は、フィルイがあったら、そのファイル名を
ファイルが無かったら、長さ0の文字列("")を返します。
詳しくはヘルプを参照のこと。

また、今回のような場合はエラーでメッセージを出しても意味がないので省略。
以上です。
 

投稿日時 - 2010-02-10 23:31:08

あなたにオススメの質問