セルがダブルクリックされたときにセルの内容を外部プログラムに送信する簡単なワークシート マクロを作成しました。最初は、シート モジュールにすべてのコードがあり、機能が必要な各シートにそれをコピーする必要がありました。これで、シート モジュールのコードを標準モジュールのサブルーチンの呼び出しに減らすことができましたが、機能が必要な各シートにコードをコピーする必要があります。コードを 1 つの場所 (標準モジュール、ブック モジュール、またはクラス モジュール) にのみ入力し、シートの背後にあるコードなしでブック内の任意のシートで機能させる方法はありますか? ご協力ありがとうございました。
質問する
3084 次
2 に答える
5
ThisWorkbook
コード モジュールには、各Workbook_SheetBeforeDoubleClick
シートで個別にイベントをキャプチャする代わりに使用できるイベント ハンドラーがあります。
于 2012-08-10T17:04:19.433 に答える
2
ダブルクリックを処理するには、シートにイベント ハンドラーが必要です。これを、ダブルクリック コードを実行する各シートの背後にあるコードに挿入します。
Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim sWorksheet As String
Dim sValue As String
Dim sCell As String
sWorksheet = ActiveSheet.Name
sValue = Target.Text
sCell = Target.Address
Call DoubleClicked(sWorksheet, sValue, sCell)
End Sub
メイン ルーチンをシートではなく、モジュールに配置します。
Option Explicit
Sub DoubleClicked(SheetName As String, CellText As String, CellAddress As String)
' your code goes here
MsgBox "You double-clicked cell " & CellAddress & " on sheet " _
& SheetName & ". The text in that cell is: " & CellText
End Sub
各シートでロジックを繰り返す必要はありません。変更する場合は、シートごとに変更する必要があります。各シートからメイン ルーチンを呼び出すだけで、作成と保守は 1 回だけで済みます。
于 2012-08-10T16:57:40.093 に答える