Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


12498 / 76734 ←次へ | 前へ→

【69754】クリックでの画像の追加と削除について
質問  Ask E-MAIL  - 11/8/26(金) 12:19 -

引用なし
パスワード
   お世話になります。

シートの結合セルにダブルクリックで画像を追加し、その画像をクリックすると削除できるマクロを作成しています。
一部頂いたコードを改造し画像の追加はできるのですが、削除のほうが「マクロを実行できません。このブックでマクロが使用できないか、また全てのマクロが無効になっている可能性があります。」とエラーメッセージが出て削除ができません。
削除用マクロ単独では動くのですが、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


−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
何分初心者なもので稚拙なコードで申し訳ありませんが
ご教示お願いいたします。

4 hits

【69754】クリックでの画像の追加と削除について Ask 11/8/26(金) 12:19 質問
【69760】Re:クリックでの画像の追加と削除について ichinose 11/8/26(金) 18:28 発言
【69766】Re:クリックでの画像の追加と削除について yuto 11/8/27(土) 19:20 発言

12498 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free