2017-03-28 3 views
1

私は何かしようとしていますが、可能かどうかわかりません。Excelでセルをダブルクリックすると、その行のソースファイルがユーザフォームに開きます

私は約20件のプロジェクトの進捗報告をしています。これらのプロジェクトは、ユーザーフォームを使用するユーザーによって更新されています。 1週間に1回、私はいくつかのマクロを実行し、それぞれのマクロを実行し、データをコピーして別のワークブックにあるプロジェクトサマリに配置します。私が望むのは、そのプロジェクトサマリーブックにある任意の行(約200のプロジェクト)の最初のセルをダブルクリックして、そのユーザーが使用している既存のユーザーフォームにその特定のプロジェクトを開くことです。しかし、Project Summaryワークシートのデータ・ダンプではなく、ソース・ファイルでそれを開くことを望みます。

これを行う方法はありますか?

EDIT:私はこれを試みた

Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 
Dim Cell As Range 

If Intersect(Target, Range("A:A")) Is Nothing Then 
Else 
For Each Cell In Range("E:E") 
    If (Cell.Value = "A, B") Then 
     Workbooks.Open Filename:= _ 
      "filepath", Password:="...", ReadOnly:=True 
     progressReport.Show 

    End If 
Next Cell 
End If 

End Sub 

私はwilldoその範囲(E:E)の値に基づいて、20の他の進捗レポートのそれぞれについて。私が望むのは、ファイルを開いてuserformをロードするときに、Aの値の特定のレポートをロードするということです。

+0

"どのような行の最初のセル"に何が入っているのかを説明してください... – phil652

+1

@ phil652私はコードを編集しました。これがより意味をなさないかどうか教えてください – DrD4rk

+0

'For Each Cell In Range(" E:E ")に関して本当に** 1,048,576のワークブックを開こうとしますか?私は少し過度に見えます。 – Jeeped

答えて

3

Worksheet_BeforeDoubleClickイベントマクロを使用して、可能な「セル内」編集をキャンセルします。

Option Explicit 

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 
    If Not Intersect(Target, Target.Parent.UsedRange, Columns("A")) Is Nothing Then 
     'cancel 'in-cell editing' 
     Cancel = True 

     'load your user form here using target.row 
     'example: cells(target.row, "E").value is the value from 
     '   column E on the same row as the double-click 
     debug.print Target.Row 

    End If 
End Sub 

単一のセルをダブルクリックするだけでターゲットとして複数のセルが可能ではないため、ダブルクリックすることはできません。

これはワークシートのコードシートにあります(例:右クリックの名前タブ、コードの表示)。標準のモジュールコードシートではありません。

+0

コードが何をしているのか分かりません。私が理解するのを助けてくれますか? – DrD4rk

+0

セルをダブルクリックすると、トリガされます(別名実行)。ダブルクリックしたセルがワークシートの使用範囲内にあり、列Aにある場合は、「セル内編集」を取り消し、残りのコードを実行します。私は、列をダブルクリックした行の値を使って、ユーザーフォームをどこでどのように読み込むのかを示しました。 – Jeeped

関連する問題