|
お世話になります。
シートの結合セルにダブルクリックで画像を追加し、その画像をクリックすると削除できるマクロを作成しています。
一部頂いたコードを改造し画像の追加はできるのですが、削除のほうが「マクロを実行できません。このブックでマクロが使用できないか、また全てのマクロが無効になっている可能性があります。」とエラーメッセージが出て削除ができません。
削除用マクロ単独では動くのですが、onActionでだとエラーが出ます。
コードは下記になります。
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
Option Explicit
'------------------------------------
'VBAProjectのExcelObjects内にあるシートをダブルクリックした際に表示される画面に下記文章をすべて貼り付けてください
'------------------------------------
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim s As String
Dim targetFlg As Boolean, picNo As Integer
Dim cells As Variant, cell As Variant
Dim tmp As String
Dim sheetNames As String
Dim picName As String
targetFlg = False
s = Target.Address
'シートに応じて下記を変更してください
'下の行の""で囲まれてる中に画像を挿入したいセル番号を記入(結合セルの場合選択したときに左上に出るセル番号を入力してください。)
cells = Array("A74", "F74", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "")
For Each cell In cells
tmp = Replace(s, "$", "")
tmp = Left(tmp, InStr(tmp, ":") - 1)
If cell = tmp Then
targetFlg = True
End If
Next
If targetFlg Then
Dim c As Range, cm As Range, sName As String
Application.ScreenUpdating = False
For Each c In Selection
Set cm = c.MergeArea
If c.Address = cm.Item(1).Address Then
sName = c.Address
If Application.Dialogs(xlDialogInsertPicture).Show = False Then Exit Sub
With Selection
.ShapeRange.LockAspectRatio = False
.Left = cm.Left
.Top = cm.Top
.Height = cm.Height
.Width = cm.Width
.Name = tmp 'セルのアドレスを画像の名前に
End With
picName = Selection.Name
sheetNames = ThisWorkbook.ActiveSheet.Name
With ThisWorkbook.Worksheets(sheetNames).Shapes(tmp)
.OnAction = "delPic"
End With
End If
Next
Set cm = Nothing
Application.ScreenUpdating = True
End If
End Sub
'削除マクロ
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
Sub delPic()
Dim Answer As Long
Dim sheetNames As String
Dim picName As String
Dim sName As String
Dim tmp As String
Dim s As String
s = Selection.Address
tmp = Replace(s, "$", "")
tmp = Left(tmp, InStr(tmp, ":") - 1)
sheetNames = ThisWorkbook.ActiveSheet.Name
Answer = MsgBox("画像が削除されます。よろしいですか?", vbOKCancel Or vbExclamation, "削除確認")
If Answer = vbOK Then
ThisWorkbook.Worksheets(sheetNames).Shapes(tmp).Delete
End If
End Sub
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
何分初心者なもので稚拙なコードで申し訳ありませんが
ご教示お願いいたします。
|
|