2016-09-22 54 views
1

我想用工作表的双击事件在双击行中的特定列中填充具有值的表单中的文本框。双击事件来填写表格中的文本框

例如

我有四列

ID Name Age Gender 
1 A  24 M 
2 B  26 F 
3 C  22 F 
4 D  30 M 

当我在列Name任何双击单元格,一个文本框形式会弹出该行中充满值从列Gender文本框这是双击。所以当我在列名称中双击“B”时,表格应该弹出并显示文本框值“F”。

这是我到目前为止的代码

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, CANCEL As Boolean) 
    CANCEL = True 
    If Target.Column = 2 Then 
     Update.Show 
     With Update.TextBox1.value = ????? 
     End With 
    End If 
End Sub 
+0

你要找的'目标.Value'为你的“?????”,但是你要么在显示UserForm之前需要该行,要么将表单打开为非模态。另请参阅[用户表单文档中的最佳实践](http://stackoverflow.com/documentation/vba/5351/user-forms/19036/best-practices#t=201609221422259238642)。 – Comintern

+0

它没有工作,也不会target.value填充文本框双击单元格的值。我希望它填充双击单元格行上特定列的值 – Danny

+0

对不起,这将是'Target.Offset(0,x).Value',其中'x'是右边的列数。 – Comintern

回答

2

利用一种称为frm_Update有三个适当命名的文本框控件形式。
这将需要价值从Target行,列2,3和4并把值文本框:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 

    Dim oForm As frm_Update 

    If Target.Column = 2 Then 
     Set oForm = New frm_Update 

     Cancel = True 
     With oForm 
      .txtName = Cells(Target.Row, 2) 
      .txtAge = Cells(Target.Row, 3) 
      .txtGender = Cells(Target.Row, 4) 
      .Show 
     End With 
    End If 

End Sub 

@Comintern - 我要去有联系的一个很好看的。所有我真的应该付诸实践的东西。

+0

我还没有试过你的代码,但是感谢你花时间... – Danny

0

我用双击事件以打开窗体&形式激活事件活动单元格行来从列中的值

所以它基本上

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, CANCEL As Boolean) 
    CANCEL = True 
    If Target.Column = 2 Then Exit Sub 
    Update.Show 
End Sub 

Private Sub UserForm_Activate() 
Dim r As Long 

    r = ActiveCell.Row 

    Me.TextBox1.value = Cells(r, 4).value