[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『セルで指定した画像を表示 2』(しょう)
新たに問題が発生しましたのでもう一度お願いします。
Sheet2に300件程のデータ表があり、Sheet1のA1にb入力すると
指定したbフ情報をVLOOKUP関数で表示できるようにしてあります。
同時にSheet1のImage1に画像表示をできるようになりました。
そこで問題が起きたのですが、4つの画像を表示できるようにしたところ画像の
ないものがあると実行時エラーが出てしまいます。画像のない場合に何も表示
しないようにするにはどのようにしたらよいのでしょうか?
If Target.Address = "$A$1" Then Dim PicPath As String PicPath = ThisWorkbook.Path & Range("指定したセル1").Value ActiveSheet.Image1.Picture = LoadPicture(PicPath) PicPath = ThisWorkbook.Path & Range("指定したセル2").Value ActiveSheet.Image2.Picture = LoadPicture(PicPath) PicPath = ThisWorkbook.Path & Range("指定したセル3").Value ActiveSheet.Image3.Picture = LoadPicture(PicPath) PicPath = ThisWorkbook.Path & Range("指定したセル4").Value ActiveSheet.Image4.Picture = LoadPicture(PicPath) End If
ご教授願います。
Excel2007 OS Windows Vista
[[20100227215919]] 『セルで指定した画像を表示』(しょう)
こちらはどうでしょうか? http://www13.plala.or.jp/mugi_cyan/excel/vba_times/lesson_02_01.html
(てつろう)
ありがとうございます。 いろいろと組み合わせて試したのですが、初心者の私にでは思うように動いてくれません。 意味を理解してから質問すべきですね。 下記のようになっており、もう少し頑張ってみます。 まずはお礼のコメントを一度させていただきます。
Dim PicPath As String
If Target.Address = "$A$1" Then If Dir(PicPath) = "" Then Image1.Picture = LoadPicture("") Else PicPath = ThisWorkbook.Path & Range("指定したセル").Value ActiveSheet.Image1.Picture = LoadPicture(PicPath) End If End If
End Sub
(しょう)
やはり画像の無いところでエラーが出てしまい動いてくれません。 どなたかご教授願います。
Private Sub Worksheet_Change(ByVal Target As Range) Dim PicPath As String If Target.Address = "$A$1" Then
PicPath = ThisWorkbook.Path & Range("台帳!AE8").Value If Dir(PicPath) = "" Then Image1.Picture = LoadPicture("") Else ActiveSheet.Image1.Picture = LoadPicture(PicPath) End If End If End Sub
(しょう)
>画像の無いところでエラーが出てしまい動いてくれません。 どこですか?はっきりエラーが発生したコードを特定してください。
>Image1.Picture = LoadPicture("")
これですか? Excel2002では、エラーになりませんが。
Range("台帳!AE8").Value このセルには、実際に何が記述されていますか?
>Image1.Picture = LoadPicture("")
これは
set Image1.Picture =nothing
とすると、どうなりますか?
ichinose
おっと、衝突しちゃいましたが。。。
どの様なエラーが出ますか? エラーが出て止まってしまう場所と エラーメッセージを書くようにして頂くのが良いと思います。
もしかして PicPath = ThisWorkbook.Path & Range("台帳!AE8").Value の行で 実行時エラー 13 型が一致しません ・・・ですか?
(HANA)
PicPath = ThisWorkbook.Path & "\" & Application.Range("台帳!AE8").Value ↑ ↑ ここに"\"を補わなくても大丈夫ですか? ここは念の為、Application.を補って置いた方がよさそう。(実態が分からないので)
(半平太) 2010/03/01 23:17
平日に日をまたいでしまうので、もう寝ますが・・・(明日も5時おきなので)。
エラー原因を疑える箇所が投稿されていますが・・・・。
それは、そのうち明らかになるでしょうが・・・。
Loadpictureという関数は、ファイルを読み込んでいる関数です。
前にもどこかで記述しましたが、ファイルI/Oを行う場合、Dir関数でファイルの存在確認だけでは 不十分です。
標準モジュールに
sub test1() dim PIcPath as string PicPath="d:\aaa\bbb\ccc\xxx.jpg" '実際に存在する画像ファイルを指定してください If Dir(PicPath) = "" Then set Image1.Picture = nothing Else ActiveSheet.Image1.Picture = LoadPicture(PicPath) End If end sub
上記例では、d:\aaa\bbb\ccc\xxx.jpg このファイルが別のプログラムで使用中(ロック)の場合、 エラーになります。
この手のことは、 On error 〜 ステートメントに任せましょう
Sub test2() Dim PicPath As String PicPath = "d:\aaa\bbb\ccc\xxx.jpg" On Error Resume Next ActiveSheet.Image1.Picture = LoadPicture(PicPath) If Err.Number <> 0 Then MsgBox Err.Description Set Image1.Picture = Nothing End If On Error GoTo 0 End Sub
ichinose
説明不足ですみません。
まず、どこでエラーが出るのかですが、画像の無いところに飛ばすと
実行時エラー’52’:ファイル名または番号が不正です となり If Dir(PicPath) = "" Then が黄色く表示されます。
>set Image1.Picture =nothing としても同じところでエラーが出ます。
Range("台帳!AE8").Valueですが、ここには\A\B.jpgと画像を指定しています。
>PicPath = ThisWorkbook.Path & "\" & Application.Range("台帳!AE8").Value こちらを記入してみると 実行時エラー’75’:パス名が無効ですとなります。
返事が遅くなりすみません。
(しょう)
> Range("台帳!AE8").Valueですが、ここには\A\B.jpgと画像を指定しています。 > > >PicPath = ThisWorkbook.Path & "\" & Application.Range("台帳!AE8").Value ↑ 上の方で\を補っているので、こちらの\は不要です。
実状を明確にしてもらうと考え易いです Image1は、どのシートにあるのですか? マクロコードは、どのシートに書いてありますか? 台帳シートは、上の二つとどの様な関係にありますか?(同じか、別か?)
Image1とマクロコードが「台帳」シートに有るなら、 PicPath = ThisWorkbook.Path & Range("AE8").Value
無いなら PicPath = ThisWorkbook.Path & Worksheets("台帳").Range("AE8").Value
(半平太) 2010/03/02 00:48
こんな情報も有りましたが。。。 http://oshiete1.goo.ne.jp/qa3004948.html ===抜粋 ここから=== 通常、Dir 関数は、引数で渡したフォルダ or ファイルが存在しないと 空白を戻しますが… 引数に、ネットワーク越しの共有フォルダ or ファイルを指定すると アクセス可能な状態である場合は良いのですが、そうではない場合、 52 エラーになるようです。 ===抜粋 ここまで===
ThisWorkbook は何処に保存されているのでしょう? また、直接アドレスを入れてみるとどうでしょう?
>画像の無いところに飛ばすと というのは、AE8に表示されているファイルが存在しない と言う事ですか? それとも、AE8にファイル名が表示されていない場合 ですか。。。?
(HANA)
衝突してしまいました。
ichinoseさん 半平太さんありがとうございます。
真っ白なImage1がでました。 半平太さんの言われる通りImage1とマクロコードが「台帳」シートに有り ”台帳!”を削除したところ エラーが出ませんでした。感動です!
ichinoseさん 丁寧な説明をありがとうございます。まだ途中なのですが、こちらの方法でもトライします。
1つの画像でしか試してませんが、これから4つの画像が表示できるよう頑張ってみます。 とりあえず明日の仕事もありますので後日報告となります。
HANAさんすいません。 遅いかもしれませんが、画像がない場合はIf関数でAE8が空白になるよう設定してます。
説明不足の疑問にお付き合いして頂きありがとうございました。 図図しいですが今後もよろしくお願いします。
(しょう)
> 真っ白なImage1がでました。 > 半平太さんの言われる通りImage1とマクロコードが「台帳」シートに有り ”台帳!”を削除したところ > エラーが出ませんでした。感動です!
ええー?! それなら、当初ご提示のコードでもエラーにならないと思いますけど・・・
訳が分からなくなったので、私は退散します。 m(__)m
(半平太) 2010/03/02 09:22
>ええー?! それなら、当初ご提示のコードでもエラーにならないと思いますけど・・・
そうなんですか??? 皆さんが???の状態なんですね。
今頃遅いのですが、台帳!AE8の部分には =IF($A$1="","",IF(VLOOKUP($A$1,Sheet2!$A$2:$AF$153,16,FALSE)=0,"",VLOOKUP($A$1,Sheet2!$A$2:$AF$153,16,FALSE)))
VLOOKUPの関数がSheet2のセル情報を表示するため”台帳!”が引っかかってしまったのでしょうか?
半平太さんありがとうございました。
(しょう)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.