双击Excel中的单元格,在userform上打开该行的源文件

时间:2017-03-28 13:21:40

标签: excel excel-vba userform worksheet vba

我正在尝试一些事情,我甚至不知道是否可能。

我有大约20个项目的进度报告。使用userform的用户正在更新这些项目。 每周一次,我有几个宏运行到每个宏,复制数据并将它们放在不同工作簿中的项目摘要中。我想要的是能够在该项目摘要工作簿中双击任何给定行中的第一个单元格(大约有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

我将根据Range(E:E)的值为20个其他进度报告中的每一个报告。我想要的是,当它打开文件以加载用户窗体时,它会加载A中的值的特定报告

1 个答案:

答案 0 :(得分: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

您只能双击单个单元格,因此不可能将多个单元格作为Target。

这属于工作表的代码表(例如右键单击名称选项卡,查看代码);不是标准的模块代码表。