質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Q&A

解決済

3回答

2598閲覧

標準モジュールのプロシージャを特定のシートで呼び出し使いたい・どこかでコードをまとめたい

shinzin

総合スコア4

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

0グッド

0クリップ

投稿2021/09/09 13:45

編集2021/09/09 15:12

前提・実現したいこと

VBA初心者です。
標準モジュールで作ったモジュールを特定のシートで呼び出して使いたいのですが、
動いてくれません。

例えば、Sheet1,Sheet2,..Sheet5が存在していて、
Sheet1,Sheet2,..,Sheet4に下記の標準モジュールのコードを書けば動くのですが、
すべて同じ内容を各シートに書くのは、保守性に欠けると思うので
どうにかして一つの場所で管理したいと考えております。

そのうちSheet5には適用しないようにしたいので、
ブックモジュールには書けないのかなと考えています。

該当のソースコード

[標準モジュール(Module1)]
Public Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

With Target Cells(Target.Row, Target.Column).Interior.Color = 65535 End With

End Sub

[Sheet1]
Private Sub test(ByVal Target As Range)

Call Module1.Worksheet_BeforeDoubleClick(Target, True)

End Sub

試したこと

引数ありの場合にどうすればいいのか、ネットで調べましたがよくわかりません
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1236095927

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

各シートごとにRange("A1")に色を貼り付けして置く(色の変更可能)

VBA

1Option Explicit 2Dim a As Long 3Public Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 4With Target 5Range("A1").Select 6a = ActiveCell.Interior.ColorIndex 7Cells(Target.Row, Target.Column).Interior.ColorIndex = a 8End With 9 10End Sub 11一応 案です

投稿2021/09/09 16:15

syousuke.33

総合スコア312

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

ThisWorkbook のモジュールに下記のように記述してください。

vba

1Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) 2 3 If Sh.Name = "Sheet5" Then Exit Sub 4 5 Target.Interior.Color = 65535 6 7End Sub

これで、Sheet5以外のシートでダブルクリックするとセルの背景色が変わります。

投稿2021/09/09 15:41

編集2021/09/09 15:45
hatena19

総合スコア34075

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shinzin

2021/09/10 01:58

ありがとうございます! この件については無事にできました ただ、これを基に別のコードも実装中なのですが動作しない状態になってるので、また質問させていただきます。
guest

0

[標準モジュール(Module1)]に記述した構文(ソースコード)をコピーしsheet1のシートモジュールに貼り付けてください
[Sheet1]
Private Sub test(ByVal Target As Range)は削除してください

[Sheet1]のシートモジュールへ貼り付け

VBA

1Public Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 2 3 4With Target 5Cells(Target.Row, Target.Column).Interior.Color = 65535 6End With 7 8End Sub 9’************************* 10Public Subは、どこのモジュールから記述しても呼び出すことができるプロシージャーです。 11それに対して、Private Subは単一のモジュールからしか呼び出せないです、 12<各シートで呼び出して使いたいのですが、・・・> 13Excel(Sheet1)をコピーしてしてみてください、コピーされたシートも 14ダブルクリックされたセルの色が黄色になります

投稿2021/09/09 15:00

syousuke.33

総合スコア312

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shinzin

2021/09/09 15:07

回答ありがとうございます。 質問の仕方も工夫すればよかったのですが、例えば、 回答してくださったコードをSheet1,Sheet2....に書くと動作すると思うのですが、 色の変更があったときに各シートでいちいち色番号を変更するのは大変かと思います。 どうにかして、一か所でまとめることはできませんか? またSheet1,Sheet2,..Sheet5のうちSheet5には適用しないようにしたいので、 ブックモジュールには書けないのかなと考えています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問