Excel VBA質問箱 IV

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

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


2358 / 13646 ツリー ←次へ | 前へ→

【68390】シートをコピーした後、マクロを削除する方法について。 橋本栄香 11/3/2(水) 14:10 質問[未読]
【68391】Re:シートをコピーした後、マクロを削除す... 橋本栄香 11/3/2(水) 14:14 質問[未読]
【68392】Re:シートをコピーした後、マクロを削除す... Jaka 11/3/2(水) 15:11 発言[未読]
【68393】Re:シートをコピーした後、マクロを削除す... 橋本栄香 11/3/2(水) 15:29 お礼[未読]

【68390】シートをコピーした後、マクロを削除する...
質問  橋本栄香  - 11/3/2(水) 14:10 -

引用なし
パスワード
   はじめまして、こんにちは!


02/10/21(月) 12:47投稿分の過去ログ239を参考に、コピー後にコードを削除したいと思うのですが、わからない部分があり、質問させていただきました。
表現等間違いがありましたら申し訳ありません。


この中にある以下のコードを参考に、シート2のWorksheet_BeforeDoubleClickの記載をコピー後に削除したいと思うのですが、うまくいきません。

vbc.Type = 100 And vbc.properties("name") = "main" Then
この部分を
vbc.Type = 100 And vbc.properties("name") = "シート2" Then
に置き換えるような考え方では駄目なのでしょうか。


ご教授何卒宜しくお願いします。


過去ログに記載されているこのコードを参考にしたいと思っています。

Sub s_copy()

  Dim new_book As Workbook

  Dim vbc As Object

  Application.ScreenUpdating = False

  Sheets("main").Copy

  Set new_book = ActiveWorkbook

  For Each vbc In new_book.VBProject.VBComponents

   If vbc.Type = 100 And vbc.properties("name") = "main" Then

     With vbc.CodeModule

      .DeleteLines 1, .CountOfLines

      End With

     End If

   Next

  Application.ScreenUpdating = True

End Sub


シート2には以下のようなコードが書かれています。

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

With Target
If .Row = 4 And .Column = 19 Then  
Call Macro1

ElseIf .Row = 4 And .Column = 22 Then  
Call Macro2

ElseIf .Row = 4 And .Column = 27 Then  
Call Macro3


End If
End With
End Sub


このコードをコピー後に削除したいのです。
マクロ自体は標準モジュールに記載しており、コピー後には残っていません。

【68391】Re:シートをコピーした後、マクロを削除...
質問  橋本栄香  - 11/3/2(水) 14:14 -

引用なし
パスワード
   どのようにうまくいかないかの記載が漏れておりました、申し訳ありません。


以下のように記載し、コピーされた後名前をつけて保存されるのですが、シート2のコードは消えておらず残ったままになっています。


Sub Macroコピー()


Dim new_book As Workbook
Dim vbc As Object, zu As Object

   Worksheets.Select
   Worksheets.Copy


  Set new_book = ActiveWorkbook

  For Each vbc In new_book.VBProject.VBComponents

   If vbc.Type = 100 And vbc.properties("name") = " シート2 " Then

     With vbc.CodeModule

      .DeleteLines 1, .CountOfLines

      End With

     End If

   Next

  Application.ScreenUpdating = True


  ActiveWorkbook.SaveAs Filename:= _
    ThisWorkbook.Path & "\" & ThisWorkbook.Worksheets(1).Range("G3") & "-" & ThisWorkbook.Worksheets(1).Range("J3") & _
    ThisWorkbook.Worksheets(1).Range("Q3") & ".xls" _
    , FileFormat:=xlNormal, Password:="", WriteResPassword:="" _
    , ReadOnlyRecommended:=False, CreateBackup:=False

ActiveWorkbook.Close


End Sub

【68392】Re:シートをコピーした後、マクロを削除...
発言  Jaka  - 11/3/2(水) 15:11 -

引用なし
パスワード
   >   If vbc.Type = 100 And vbc.properties("name") = " シート2 " Then

まず、これを確認してください。
" シート2 "
↑   ↑ (矢印が旨く反映されてないかも?)

【68393】Re:シートをコピーした後、マクロを削除...
お礼  橋本栄香  - 11/3/2(水) 15:29 -

引用なし
パスワード
   ▼Jaka さん:
>>   If vbc.Type = 100 And vbc.properties("name") = " シート2 " Then
>
>まず、これを確認してください。
>" シート2 "
> ↑   ↑ (矢印が旨く反映されてないかも?)


あーー!すいません、本当にありがとうございます!
シートの名前を確認しましたところ、余計な空白があった上に、コード上にも余計な空白が入っていました!私の確認ミスです。
初歩の初歩でした!!すいませんでした!
ご指摘ありがとうございました!

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