[[20121221162053]] 『コンパイルエラーの修正方法』(まつ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『コンパイルエラーの修正方法』(まつ)

 前任者が作成したマクロを使用したらコンパイルエラーが発生しました。
 コメントは『メソッドまたはデータ メンバがみつかりません』というものでした。

 マクロがほとんど分からない私には改善方法がわかりません。
 ご指導いただけたら助かります。

 【マクロデータ】

 Sub Macro5()
'
' Macro5 Macro
' マクロ記録日 : 2009/6/4  ユーザー名 : ○○'
Dim Y As Byte

    Y = Sheets("sheet1").Range("B17") + 17

If Y > 17 Then

  I = Sheets("sheet1").Range("B38")
  Sheet2.Image1.Picture = LoadPicture("")  ←ココの.Image1の部分が青くなっています

  Select Case I
  Case 1
      Sheet2.Image1.Picture = _
         LoadPicture("C:\印鑑\印宇高.GIF")

  Case 2
      Sheet2.Image1.Picture = _
         LoadPicture("C:\印鑑\印山田.GIF")

  Case 3
      Sheet2.Image1.Picture = _
         LoadPicture("C:\印鑑\印加藤.GIF")

  Case 4
      Sheet2.Image1.Picture = _
         LoadPicture("C:\印鑑\印吉田.GIF")

  Case 5
      Sheet2.Image1.Picture = _
         LoadPicture("C:\印鑑\印冨田.GIF")

' Case 6
' Sheet2.Image1.Picture = _
' LoadPicture("C:\印鑑\印  .GIF")

' Case 7
' Sheet2.Image1.Picture = _
' LoadPicture("C:\印鑑\印  .GIF")

' Case 8
' Sheet2.Image1.Picture = _
' LoadPicture("C:\印鑑\印  .GIF")

  End Select

   Range(Cells(18, 10), Cells(Y, 2)).Select

    ActiveSheet.Paste

   Range(Cells(Y + 1, 14), Cells(120, 2)).ClearContents

'印刷制御

      Load UserForm2
      UserForm2.Show

   P = Sheets("sheet1").Range("B31")

 If P = 1 Then

   o = Sheets("sheet1").Range("B19").Value

 Select Case o

    Case Is <= 25
       ActiveSheet.PageSetup.PrintArea = "$A$1:$N$42"
       ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True

    Case Is <= 50
       ActiveSheet.PageSetup.PrintArea = "$A$1:$N$67"
       ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True

   Case Is <= 75
       ActiveSheet.PageSetup.PrintArea = "$A$1:$N$92"
       ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True

    Case Is <= 100
       ActiveSheet.PageSetup.PrintArea = "$A$1:$N$117"
       ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True

  End Select

 Else
 End If
 End If

    Sheets("sheet1").Range("B31") = 0
    Sheets("管理用").Activate

    Selection.AutoFilter Field:=15
    Selection.AutoFilter

End Sub

 恐らく、下記のCドライブの印鑑のファイルが見当たらないということではないかと思うのですが、新しく印鑑のフォルダを作って、プログラムを変更すれば直るものなのでしょうか。
 また、プログラムの作り方を教えてください。
 LoadPicture("C:\印鑑\印宇高.GIF")

 実際のシートには、ポップアップが出て、名前を選択すると、その選択した担当者の電子印鑑が押されるという仕組みです。

 質問の仕方が、明確ではなくて、大変申し訳ございませんが、何卒よろしくお願いします。

 (まつ)

 Sheet2.Image1.Picture = LoadPicture("")
 Worksheets("Sheet2").Image1.Picture = LoadPicture("")
 
この二つの書き方は同じではありません。
シート名とオブジェクト名は同じにならないケースがあります。
 
おそらく後者のつもりで書いていると思いますが、
エラーの原因のひとつとして、Image1が配置されていないシートを
指定している可能性を指摘します。
(みやほりん)

 (みやほりん)さん

 コメントありがとうございます。
 早速ですが、
 >エラーの原因のひとつとして、Image1が配置されていないシートを
 >指定している可能性を指摘します
 というのは、Image1が見当たらない、つまり、LoadPicture("C:\印鑑\印宇高.GIF")を実行できないということでよろしいでしょうか?
 Image1というシートを追加して、そこに参照するデータを作ればいいのでしょうか?

 また、
 >Sheet2.Image1.Picture = LoadPicture("")
 >Worksheets("Sheet2").Image1.Picture = LoadPicture("")
 >この二つの書き方は同じではありません。
 については、どちらでも結果は同じだけど書き方が違うよという説明をしてくださっているのでしょうか?

 本当に分かりにくいであろう質問をして大変申し訳ないのですが、まず事始めに何を直していったらいいのでしょうか?
 また、なにをココに書き込んだらご理解いただけるのでしょうか?
 厳しいご指摘をいただくことを承知で質問させていただきましたが、どうしても使えるようにしたいとおもっております。
 何卒コメントの程、よろしくお願いいたします。

 (まつ)

 まず、このブックのVBE画面を開いて見て。
 画面の左上にプロジェクトエクスプローラが表示されているね。
 で、そこに、各シートが ○○○○(■■■■) というように表示されている。

 この ○○○○ が CodeName といわれるもので、そのシートの【本名】
 ■■■■ が、シート名(シートタブにかかれている名前)、いわば【ペンネーム】

 Sheet2.Image1・・・・と記述すると、【本名】が Sheet2 となっているシートのImage1 ということになる。

 プロジェクトエクスプローラの○○○○部分に Sheet2 というのがある?
 もしあったとして、そのシートに、本当に Image1コントロールが配置されている?

 これが、みやほりんさんからの問いかけ。

 (ぶらっと)

 ぶらっとさん、フォロー&補足有難うございます。
 
>まず事始めに何を直していったらいいのでしょうか?
コードと現物のすり合わせと、
扱おうとしているオブジェクトがあるのかどうかの確認ですね。
 
「印鑑を表示するためのシート」はすでにありますね?
そのシートには「印鑑」を表示するためのオブジェクトはすでにありますね?
であれば、「印鑑を表示するためのシート」のシート見出しを確認してください。
 
例えば、もし、"Sheet2"なら、コードの中で
Sheet2. となっているものを、Worksheets("Sheet2"). に書き直してみてください。
これで同じ箇所で同じエラーが出るようなら、Image1の方が存在しないのです。
 
Image1の確認方法
「印鑑を表示するためのシート」のシート見出しを右クリック、
「コードの表示」をクリックすると、VBEが表示されます。
その状態で、

上記画面の左側の赤丸の部分(オブジェクトボックス)をドロップダウン
してみてください。
その中に「印鑑を表示するためのシート」に関連するオブジェクトが一覧されます。
 
(みやほりん)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.