[[20171107115215]] 『画像貼り付けマクロを実行すると「実行時エラー10』(太郎) ページの最後に飛ぶ

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

 

『画像貼り付けマクロを実行すると「実行時エラー1004、アプリケーション定義またはオブジェクト定義エラーです。」』(太郎)

セルサイズに自動で合わせて画像を貼りつけるマクロとカレンダーのマクロを使っていますが、「実行時エラー1004、アプリケーション定義またはオブジェクト定義エラーです。」が表示されてスムーズに処理できません。
訂正の方法がみつかりません。よろしくお願いします。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)

    Cancel = True

    '===============画像選択
    myF = Application.GetOpenFilename _
           ("jpg bmp tif png gif,*.jpg;*.bmp;*.tif;*.png;*.gif", , "画像の選択", , False)
    If myF = False Then
        MsgBox "画像を選択してください(終了)"
        Exit Sub
    End If

    '===============画像の掃除
    For Each mySP In ActiveSheet.Shapes
        myAD1 = mySP.TopLeftCell.MergeArea.Address
        myAD2 = Target.Address
        If myAD1 = myAD2 Then mySP.Delete
    Next

    '===============画像の貼り付け
    Set mySP = ActiveSheet.Pictures.Insert(myF)

    '===============タテヨコの縮尺を保持
    myHH = Target.Height / mySP.Height
    myWW = Target.Width / mySP.Width
    If myHH > myWW Then
        mySP.Height = mySP.Height * myWW
        mySP.Width = Target.Width
    Else
        mySP.Height = Target.Height
        mySP.Width = mySP.Width * myHH
    End If

    '===============中央へ調整
    myHH2 = (Target.Height / 2) - (mySP.Height / 2)
    myWW2 = (Target.Width / 2) - (mySP.Width / 2)
    mySP.Top = Target.Top + myHH2
    mySP.Left = Target.Left + myWW2

    Set mySP = Nothing

End Sub

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

 Private Sub Calendar1_Click()
ActiveCell.Value = Calendar1.Value
End Sub

< 使用 Excel:Excel2007、使用 OS:Windows7 >


 どの部分でエラーになりますか?
 デバッグのウィンドウで黄色く表示されている箇所です。
(カリーニン) 2017/11/07(火) 11:59

早速のご返事有難うございます。

=======画像の掃除の二行下のmyAD1 = mySP.TopLeftCell.MergeArea.Addressが
黄色になっています。

よろしくお願いいたます。

(太郎) 2017/11/07(火) 12:10


 変数の宣言部分も割愛しないで貼り付けてみてください。
(カリーニン) 2017/11/07(火) 12:44

最初の載せたのが全てです。

 '===============画像の掃除
    For Each mySP In ActiveSheet.Shapes
        myAD1 = mySP.TopLeftCell.MergeArea.Address ←の1行のみ黄色になっています。
        myAD2 = Target.Address
        If myAD1 = myAD2 Then mySP.Delete
    Next

これでよろしかったでしょうか?
宜しくお願いいたします。

(太郎) 2017/11/07(火) 12:57


 遠まわしに言ったのが悪かったかな?
 変数宣言したらどうなりますか?
(カリーニン) 2017/11/07(火) 13:27

いろいろなところからマクロをコピペしただけです。
結果エラーが出て困っていました。

変数宣言の言葉も分からないので、この先はどうしたらよいかも分かりません。

(太郎) 2017/11/07(火) 13:42


 VBAはサイトからコピペしただけでは、まず、まともに動かない、と
 考えてください。

 基本書を購入して勉強するか、VBA入門サイトを見て基本から勉強し
 てみてください。

 そして、どこまで自分で出来ていて、どこで躓いているかを再度
 質問してみてください。
(カリーニン) 2017/11/07(火) 13:46

 ヒントだけ。
 変数宣言してないと、変数はVariant型を見做されます。
(カリーニン) 2017/11/07(火) 13:50

せっかくヒントを頂いても分かりません。
ごめんなさい。
(太郎) 2017/11/07(火) 13:59

 >いろいろなところからマクロをコピペしただけです。

 コピー元のサイトでは変数宣言してなかったですか?
(カリーニン) 2017/11/07(火) 14:30

https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1038189735
こういうところからではほぼコピペ
(D.H) 2017/11/07(火) 15:16

このマクロだけを新しいブックに入れて実行して同じエラーになりますか?

(D.H) 2017/11/07(火) 15:52


太郎さんのコードをExcel2010に貼りつけて、普通に動きましたよ?

貼付ようとしている画像ファイル形式は何でしょう? jpgとかpngとかbmpとか、他の画像を選択してもエラーになるでしょうか? また、自分のPC内にあるファイルなのか、置き場所の違うファイルでもエラーなのか確認してみてください。

なお、オプションで構文の自動チェックを行う設定にしておき、変数宣言を省略しないのは、宣言違いによる初歩的なミスを無くす基本です。これだけで質問する必要がなくなる場合もあるので、是非チェックしておいてください。(変数宣言を省略したコードは手抜きなので、お手本にしないほうが良いでしょう)
(???) 2017/11/08(水) 09:33


いろいろ有難うございました。
できました。
今後ともよろしくお願いします。
(太郎) 2017/11/08(水) 15:28

コメント返信:

[ 一覧(最新更新順) ]


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