
いつもお世話になっております。
エクセル シート1に
下記のコードをいれてあります。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
UserForm1.Show vbmoderess
End Sub
シート追加したら追加したら
下記のコードをいれることはできるのでしょうか
今はシートを追加したらシートモジュールにコピーして
使用しています。
これをなんとかしたいのです
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
UserForm1.Show vbmoderess
End Sub
No.2ベストアンサー
- 回答日時:
こんばんは
ほとんどのシート(将来追加されるかも知れないシートを含む)で同じことを実行したいってことでしょうか?
であるなら、各シートモジュールに記述せずに、ThisWorkbookモジュールに記述しておくのが簡単と思います。
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
引数にシートオブジェクトが与えられますので、実行対象としたくないシートがある場合にはNameなどでチェックして、そのシートだけ省くようにしておけば、追加されたシートはそのままで対象として扱われます。
(わざわざコードのコピペを行う必要がなくなります)
No.3
- 回答日時:
#1です
ストレートに回答してしまいました。(ストレートに回答するようにしているので良いのですが)
さすが、#2様です。そのようにアドバイスするべきでした。
#2を推奨します
同様の処理をする場合、UserForm1がどのような処理がされるのか分かりませんが、ThisWorkbookモジュールからブックイベントでするべきです。
この場合、シート名などにも共通性がある場合が多く、Likeなどで特定するケースで出来ると思います。
逆に不確定なシートからUserForm1を呼びたい場合などは、ダブルクリックをトリガーにせず、トリガーを右クリックやショートカットキーに登録したりして使えば良いように思います。
ちなみに
#1のコードで変数登録する必要がないのに書いてあるのは、私のExcelVBAに既にあるコードの使い廻しだからで、使う事もありますが
VBAのコードをVBAから書き加えたり変更する事は改修(更新)などの時以外まずありませんが、比較的容易に出来ます。
が、重大なバグを生む可能性もあるのでやり方だけで良いように思いました
No.1
- 回答日時:
こんばんは
先ずは、こちら http://officetanaka.net/excel/vba/vbe/01.htm
を踏まえた上で
>シート追加したら なので
こんな感じで良いかと、、
Sub sample()
Dim WB As Workbook
Dim sh_name As String
sh_name = ActiveSheet.Name
Set WB = ActiveWorkbook
With WB.VBProject.VBComponents.Item(sh_name).CodeModule
.insertlines 2, "Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)"
.insertlines 3, "UserForm1.Show vbModeless"
.insertlines 4, "End Sub"
End With
End Sub
エラー対策及び、すでにあるシートを対象に実行する事は考慮していません
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/06/10 11:06
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/05/26 17:19
- Excel(エクセル) エクセルのイベントVBAを複数のシートで動かしたい 1 2022/12/07 16:55
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) 【VBA】Excelで罫線を引きたい 3 2022/07/14 12:04
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) Excel VBAでの右クリックのポップアップメニューの非表示方法は? 1 2023/04/12 17:03
- Visual Basic(VBA) Changeイベントで複数セルへの貼り付けおよび値削除時に1個目のセルのみエラーになる 3 2022/12/21 09:07
このQ&Aを見た人はこんなQ&Aも見ています
-
【ExcelVBA】sheet作成時にマクロを埋め込みたい
その他(Microsoft Office)
-
【ExcelVBA】マクロの入ったシートをコピーしても新しいシート内でマクロを動作させるには?
Excel(エクセル)
-
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
-
4
エクセルのvbaにて thisworkbookに記載のマクロを他のブックにマクロにて自動コピー出来る
Excel(エクセル)
-
5
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
6
EXCELのVBAでシートコピーをしたとき元のマクロを削除するには?
Excel(エクセル)
-
7
エクセルVBAで5行目からオートフィルタモードに設定したいたい
Excel(エクセル)
-
8
マクロをマクロを使ってコピーしたい
その他(Microsoft Office)
-
9
別ブックをダイアログボックスで指定してそこにあるシートをコピーしたい
Excel(エクセル)
-
10
VBA This Workbookモジュールを別ファイルにコピーする方法
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
excelのマクロで該当処理できな...
-
特定の文字を含むシートだけマ...
-
XL:BeforeDoubleClickが動かない
-
【VBA】シート名に特定文字が入...
-
VBA 存在しないシートを選...
-
Excelマクロのエラーを解決した...
-
エクセルVBA Ifでシート名が合...
-
エクセルのシート名変更で重複...
-
ユーザーフォームに入力したデ...
-
実行時エラー1004「Select メソ...
-
Excel VBA で自然対数の関数Ln...
-
【ExcelVBA】全シートのセルの...
-
エクセル・マクロ シートの非...
-
ExcelのVBAのマクロで他のシー...
-
シートが保護されている状態で...
-
VBAの授業でナンプレを制作して...
-
複数シートに色付きセル(条件つ...
-
ブック名、シート名を他のモジ...
-
実行時エラー'1004': WorkSheet...
-
VBAマクロでシートコピーした新...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelマクロのエラーを解決した...
-
特定の文字を含むシートだけマ...
-
【ExcelVBA】全シートのセルの...
-
ユーザーフォームに入力したデ...
-
excelのマクロで該当処理できな...
-
実行時エラー'1004': WorkSheet...
-
ブック名、シート名を他のモジ...
-
実行時エラー1004「Select メソ...
-
VBA 存在しないシートを選...
-
ExcelVBA:複数の特定のグラフ...
-
エクセルのシート名変更で重複...
-
IFステートの中にWithステート...
-
VBA 検索して一致したセル...
-
ExcelのVBAのマクロで他のシー...
-
XL:BeforeDoubleClickが動かない
-
別のシートから値を取得するとき
-
エクセルVBA Ifでシート名が合...
-
エクセル・マクロ シートの非...
-
シートが保護されている状態で...
-
シート削除のマクロで「delete...
おすすめ情報