Vba 单元格值取决于活动单元格

Vba 单元格值取决于活动单元格,vba,Vba,不确定这是否可行,但我想我会问,这里有这么多创意人士,我有一个客户名单,上面有他们的电子邮件和欠款 我想做的是选择一个具有客户名称的单元格(活动单元格“A1”),然后使用另一个单元格,比如K2显示该客户的电子邮件地址。我希望同一单元格K2始终显示所选客户的电子邮件地址 然后,我可以创建一个按钮,读取该单元格(k2),并将其用作“电子邮件收件人”。否则,我将有数百个电子邮件按钮,每个客户一个。我在网上试过一些代码,但都弄不懂 稍后我想通过将它们的详细信息添加到1个超链接(到预填充表单)中,使其变得

不确定这是否可行,但我想我会问,这里有这么多创意人士,我有一个客户名单,上面有他们的电子邮件和欠款

我想做的是选择一个具有客户名称的单元格(活动单元格“A1”),然后使用另一个单元格,比如K2显示该客户的电子邮件地址。我希望同一单元格K2始终显示所选客户的电子邮件地址

然后,我可以创建一个按钮,读取该单元格(k2),并将其用作“电子邮件收件人”。否则,我将有数百个电子邮件按钮,每个客户一个。我在网上试过一些代码,但都弄不懂

稍后我想通过将它们的详细信息添加到1个超链接(到预填充表单)中,使其变得更复杂一些,但希望如果我能掌握上面的基本知识,我可以完成其余的工作


非常感谢您的帮助

这与您描述的不完全一样,但您可以使用SelectionChange事件根据A列中最近选定的单元格设置K2的值:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Rows.Count > 1 Then Exit Sub
    If Target.Columns.Count > 1 Then Exit Sub
    If Target.Column = 1 Then Range("K2").Value = Target.Offset(0, 1).Value
End Sub
此代码假定您在A列(Target.column=1)中有姓名,在B列(Target.Offset(0,1))中有电子邮件地址

如果选择a列中的单个单元格,则K2将设置为B列中的相应值


如果选择A列中的多个单元格,或选择A列之外的单元格,SelectionChange事件处理程序将不执行任何操作,K2保留最后一个值。

我在这里提出了更复杂的解决方案。它的优点是,您可以选择数据行中的任何单元格,并且限制在特定范围内,这可以提高您的速度

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim rngData As Range
    Set rngData = Range("A2:D20") 'This is the range that holds your data
    'If you not selected anything in this range, there is nothing to do, leave the sub
    If Intersect(Target, rngData) Is Nothing Then Exit Sub

    'I think it is a good practice to turn off the possible other events, though you not need it now
    Application.EnableEvents = False
    ' Define in which column is the data you would like to put in K2
    Dim iColumnOfEmailAddress As Long
    iColumnOfEmailAddress = 2
    Range("K2").Value2 = Cells(Target.Row, iColumnOfEmailAddress).Value2
    Application.EnableEvents = True 'turn the events back
End Sub

:D你真是个天才,我爱你。它做的正是我想要的,我会尝试将它连接到一个链接中,然后将图片添加到链接中并通过电子邮件发送出去。希望我能一步一步地解决这个问题,但这帮了大忙。谢谢你,乔。