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

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

解決済みの質問

excel VBA のエラー回避のアドバイス依頼

いつもお世話になります。

EXCEL2000のVBAで、エラーになった場合の修正(回避コード)を教えていただきたくよろしくお願いいたします。

ここでは、とあるブックのSheet1のH25セルに写真のファイル名を入れます。そして、実際の写真を ブックが保管してあるフォルダ内のboard_image というフォルダに入れて、マクロを実行すると、C26セルに写真が表示されるというものですが。

ここで、C26セルが空白だと「実行時エラー'1004!; 指定したファイルが見つかりませんでした。」と言われます。
これを回避して、「NoImage.jpg」という名前の写真を表示させるようにしたいです。

アドバイスお願いします。

'■↓コードは下記です。

Private Sub Worksheet_Change(ByVal Target As Range)
Dim fRange As Range
Dim touroku As Long

Select Case Target.Address

Case "$H$25"
myLoadPicture "board_Image", Target.Text, Range("C26")

Case Else
Exit Sub

End Select
End Sub

Private Sub myLoadPicture(folderName As String, fname As String, targetRange As Range)
Dim pict As Shape, picPath As String

picPath = ThisWorkbook.Path & "\" & folderName & "\" & fname
If Dir(picPath) = "" Then

picPath = ThisWorkbook.Path & "\" & folderName & "\" & "NoImage.jpg"
End If

With ActiveSheet
For Each pict In .Shapes
If pict.TopLeftCell.Address = targetRange.Address Then
pict.Delete
Exit For
End If

Next pict

Set pict = .Shapes.AddPicture(picPath, msoTrue, msoFalse, _
targetRange.Left, targetRange.Top, 300, 360)

End With
End Sub

投稿日時 - 2011-08-01 22:30:58

QNo.6914918

困ってます

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

>C26セルが空白だと
picPath = ThisWorkbook.Path & "\" & folderName & "\" & fname
の中の「fname」が「空白」つまり、「""」になります。

 従って、
picPath = ThisWorkbook.Path & "\" & folderName & "\"
となりますが、ここで、この「picPath」に [Dir 関数] を適用すると、「Dir(picPath)」は「""」ではなくて、board_image フォルダ 内の最初に見つかった ファイル名 を返します。

 以上により、「C26セルが空白だと」
If Dir(picPath) = "" Then
には該当しません。

 「C26セルが空白」の場合は、
fname = ""
になっているのですから、
If Dir(picPath) = "" Then
の行を
If Dir(picPath) = "" Or fname = "" Then
に差し替えるとよいでしょう。

投稿日時 - 2011-08-02 07:46:27

補足

もうしわけございません。
次のレコードも上手くいきました。
上手くいかないというのは、私の勘違いでした。

投稿日時 - 2011-08-02 12:15:19

お礼

回答ありがとうございます。
無事に最初のレコードが空白でも、noimageが表示されるようになりました。
但し、次のレコードに移動すると、ファイル名が空欄だと、また同様のエラーがでてしまいます。こういった場合もnoimageが表示されるようにしたいのですが、アドバイスいただけないでしょうか。

投稿日時 - 2011-08-02 11:19:22

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

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

回答(1)

あなたにオススメの質問