2017-03-28 9 views
1

나는 무언가를 시도하고 있으며 가능한 경우 알지 못합니다.Excel에서 셀을 두 번 클릭하면 해당 줄의 소스 파일이 userform에 열립니다.

약 20 개의 프로젝트 진행 보고서가 있습니다. 이 프로젝트는 사용자 양식을 사용하는 사용자가 업데이트합니다. 일주일에 한 번씩 각 매크로를 실행하여 데이터를 복사 한 다음 다른 통합 문서에있는 프로젝트 요약에 넣습니다. 내가 원하는 것은 해당 프로젝트 요약 통합 문서에있는 특정 행의 첫 번째 셀 (약 200 개의 프로젝트가 있음)을 두 번 클릭 할 수 있고 사용자가 사용중인 이미 존재하는 사용자 양식에 특정 프로젝트를 여는 것입니다. 그러나 프로젝트 요약 워크 시트의 데이터 덤프가 아닌 소스 파일에서 열길 원합니다.

내가 할 수있는 방법이 있습니까?

편집 : 나는이 시도했다

:

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 이벤트 매크로를 사용하여 가능한 'in-cell'편집을 취소합니다.

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