【问题标题】:How do I get the value a User has selected from a Data Validation List?如何获取用户从数据验证列表中选择的值?
【发布时间】:2020-07-09 18:55:32
【问题描述】:

我在单元格 D10 中有一个数据验证列表。当用户选择一个值时,我想将该值复制到同一个工作表上的不同单元格中。

当我尝试时

Range("G10").value= Range("D10").value

什么都不返回。

由于D10是数据验证列表,我也试过了

Range("G10").value=Range("D10").validation.value 

(来自网上找到的示例代码)但仍然没有返回任何内容。

【问题讨论】:

  • Range("G10").value= Range("D10").value 是正确的方法。你的验证是什么样的?你能分享更多细节吗?
  • 以防万一,试试 .value2 而不是 value。但是,您未向我们展示的其他内容可能有问题。
  • 你的代码是如何被触发的?代码运行时,带有验证列表的工作表是否处于活动状态?
  • 代码运行时的ActiveSheet是什么?你试过Fully Qualifying your Ranges吗?

标签: excel vba list validation


【解决方案1】:

这对我有用:

Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Address = "$D$10" Then
        Range("G10").Value = Range("D10").Value
    End If

End Sub

它必须放在包含数据验证单元格的工作表的代码中。我猜你没有使用 $ 来识别单元格。

【讨论】:

  • 顺便说一句,如果我回答错了,请告诉我。我相当新。 ^^ 无论如何:Target.Address 确实使用 $。如果你省略它们,它就不起作用。
  • 好吧,他说“当用户选择一个值时”。有没有其他方法可以赶上活动?
  • 谢谢。我去看看。
  • @EvilBlueMonkey Target.Address 只使用“$”因为those are the Default Arguments for Address - 你可以使用Target.Address(False,False) 来获得“D10”
猜你喜欢
  • 1970-01-01
  • 2017-05-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多