1

セルがダブルクリックされたときにセルの内容を外部プログラムに送信する簡単なワークシート マクロを作成しました。最初は、シート モジュールにすべてのコードがあり、機能が必要な各シートにそれをコピーする必要がありました。これで、シート モジュールのコードを標準モジュールのサブルーチンの呼び出しに減らすことができましたが、機能が必要な各シートにコードをコピーする必要があります。コードを 1 つの場所 (標準モジュール、ブック モジュール、またはクラス モジュール) にのみ入力し、シートの背後にあるコードなしでブック内の任意のシートで機能させる方法はありますか? ご協力ありがとうございました。

4

2 に答える 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 に答える