|
Excelのアドインを製作し、使ってもらっていたのですが、
その中の1人に急にエラーが発生するようになってしまいました
直そうにもこちらでは発生せず、相手は遠隔地にいるため、原因が特定できません・・・
構文的におかしい部分がありましたらご指導お願いします
機能
Excelのセルを選んだ状態でCTRL+Qを押すと画像選択画面が開き、
セルの大きさに合わせて画像を張り付けする
コードは標準モジュールに記入しています
エラー箇所と思われる場所
画像ファイルを選択した後にエラーが出て、デバッグを押すと
For Each mySP In ActiveSheet.Shapes
の部分がエラーを出している
For〜Nextをコメントアウトしたものを使用すると
Set mySP = ActiveSheet.Pictures.Insert(myF)
の部分でエラーが発生するらしい
ActiveSheetが取得できていない?
---以下内容----
Sub 画像貼付()
' Keyboard Shortcut: Ctrl+q
Application.ScreenUpdating = False
Cancel = True
'===============画像選択
myF = Application.GetOpenFilename _
("jpg bmp tif png gif,*.jpg;*.bmp;*.tif;*.png;*.gif", , "画像の選択", , False)
If myF = False Then
Exit Sub
End If
'===============画像の掃除
For Each mySP In ActiveSheet.Shapes
myAD1 = mySP.TopLeftCell.MergeArea.Address
myAD2 = Selection.Address
If myAD1 = myAD2 Then mySP1.Delete
Next
'===============画像の貼り付け
Set mySP = ActiveSheet.Pictures.Insert(myF)
If vbYes = MsgBox("縦横比を維持しますか?", vbYesNo) Then
'===============タテヨコの縮尺を保持
myHH = Selection.Height / mySP.Height
myWW = Selection.Width / mySP.Width
If myHH > myWW Then
mySP.Height = mySP.Height * myWW
mySP.Width = Selection.Width
Else
mySP.Height = Selection.Height
mySP.Width = mySP.Width * myHH
End If
'===============中央へ調整
myHH2 = (Selection.Height / 2) - (mySP.Height / 2)
myWW2 = (Selection.Width / 2) - (mySP.Width / 2)
mySP.Top = Selection.Top + myHH2
mySP.Left = Selection.Left + myWW2
Else
mySP.Height = Selection.Height
mySP.Width = Selection.Width
End If
Set mySP = Nothing
Application.ScreenUpdating = True
End Sub
|
|