いつもお世話になっております。
あるシートのあるセルをクリックしたら他のシートに行ごとコピーさせたいのですが、
Private Sub Worksheet_SelectionChange(ByVal Target As Range)を使用しようと思うと
対象となるシート全てのPrivate Sub Worksheet_SelectionChange(ByVal Target As Range)
に同じことを書くことになります。またそのシートは増えたり、減ったりすることもあり
その都度、新しいシートに書くことが必要となります。
標準モジュールに全シート対象のイベントプロシジャーを書くことはできないでしょうか。
よろしくご教示いただきたく、お願いいたします。
No.1
- 回答日時:
めぐみん_様
ご教示ありがとうございます。クラスモジュールは良く理解できていないのですが、よい機会なので挑戦してみたいと思います。ありがとうございました。
No.2
- 回答日時:
こんにちは
>標準モジュールに全シート対象のイベントプロシジャーを書くことはできないでしょうか。
標準モジュールではイベントを感知することができません。
ですので、シート(または後述のブック)に記述する必要があります。
とは言っても、処理内容がまったく同じならその処理を標準モジュールに記述しておいて、そちらへ処理を引き渡すことはできます。
Call 標準モジュールのプロシージャ
シートのモジュールでは対象シートのイベントを感知できますが、ThisWorkbookモジュールではブック内の(各シートの)イベントを感知することができます。
ですので、各シートに同じイベント処理を設定するのが面倒であれば、ブックモジュールを利用すれば良いでしょう。
シートモジュールと異なる点は、どのシートで発生したイベントであるかも含めて判断するような記述にしておく必要があるという点でしょうか。
ThisWorkbookのモジュールからも標準モジュール内のプロシージャを呼び出すことも可能ですが、thisWorkbook内に全部を記述しても1箇所の記述で済ませられますね。
thisWorkbookを使ったことがなかったので、勉強になりました。
ここで各シートのイベントを拾うことができれば、まったく希望する通りのことができます。ありがとうございました。挑戦します。
No.3
- 回答日時:
おはようございます。
中々良い記事が見付かりませんが、クラスモジュールでできると思います。
下記は、BeforeDoubleClickの例ですが、同じ様にできるかと。
https://sites.google.com/site/compositiosystemae …
VBA クラス イベント などで検索してみて下さい。
ありがとうございます。ほかにもクラスモジュールの使用をご提案いただいており、初めて使用することになるとおもいますが、良い機会なので挑戦したいと思います。ありがとうございました。
No.4ベストアンサー
- 回答日時:
こんにちは
ご質問をストレートに考えると
回答としては#2様と同様となりますかね。
>あるシートのあるセルをクリックしたら他のシートに行ごとコピーさせたいのですが、
これは、SelectionChangeでなくBeforeDoubleClickを使用した方が良いのではないかと思います。
ブックモジュールからですと
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
MsgBox Sh.Name
Cancel = True
End Sub
セルをダブルクリックするとシート名が表示されます。
違った目線で考えると同じイベントを複数の(増減する)シートで
実行したいと言う事は、そのシート内容(構成や表組)はほぼ同じなのでは?と思います。
回答ではありませんが、シートはどのように増やすのでしょうか?
イベントの書いてあるシートをコピペ、データを入れ替えるなどのVBAや手作業で作成する場合、イベントもコピペされますよ
'---
あと、シートの増減と考えるのも良いとは思いますが、VBA処理のブックであれば、各シート内容はデータと考えて1シートに纏めデータシートとして
必要(作業)部分を表示(作業)シートに抽出する形が良いように思います
行をコピペしたいと言う事でロジック自体該当しないと思いますが、、
Qchan1962様 いつもお世話になります。
Workbook_SheetBeforeDoubleClickは、まったく知りませんでした。
やってみましたが、希望とおりの動作がえられました。
たびたび、お助けいただき本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/06/10 11:06
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/05/26 17:19
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 3 2022/06/10 09:24
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Excel(エクセル) エクセルのイベントVBAを複数のシートで動かしたい 1 2022/12/07 16:55
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/03/25 08:33
- Visual Basic(VBA) 【VBA】Excelで罫線を引きたい 3 2022/07/14 12:04
- PowerPoint(パワーポイント) ExcelのVBAコードについて教えてください。 3 2022/05/25 14:32
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAで大量のファイルをシート名...
-
別のシートから値を取得するとき
-
ユーザーフォームに入力したデ...
-
特定の文字を含むシートだけマ...
-
excelのマクロで該当処理できな...
-
【ExcelVBA】全シートのセルの...
-
Excel VBA 複数行を数の分だけ...
-
実行時エラー'1004': WorkSheet...
-
Excelマクロのエラーを解決した...
-
VBA 存在しないシートを選...
-
VBA 入力月で該当シートを選択...
-
実行時エラー1004「Select メソ...
-
同じ作業を複数のシートに実行...
-
VBA 検索して一致したセル...
-
エクセルVBA ListBoxの並び...
-
IFステートの中にWithステート...
-
エクセルVBAでダブルクリックを...
-
EXCEL(VBA)でシート保護がかか...
-
別のシートを参照して計算する方法
-
セルのコピーで「オブジェクト...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別のシートから値を取得するとき
-
ユーザーフォームに入力したデ...
-
【ExcelVBA】全シートのセルの...
-
同じ作業を複数のシートに実行...
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
XL:BeforeDoubleClickが動かない
-
ExcelVBA シート名を複数セルか...
-
実行時エラー'1004': WorkSheet...
-
VBA 存在しないシートを選...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
ブック名、シート名を他のモジ...
-
【Excel VBA】Worksheets().Act...
-
ExcelのVBAのマクロで他のシー...
-
エクセルのシート名変更で重複...
-
特定の文字を含むシートだけマ...
-
シートが保護されている状態で...
-
Excel マクロについての相談
-
VBA 検索して一致したセル...
おすすめ情報