VBA下拉列表,可以附加新值

时间:2017-10-29 08:38:58

标签: excel vba excel-vba

我有一个受保护的工作簿,其中包含使用手动数据验证创建的下拉列表。

我有一个隐藏的工作表,我在其中定义了值的名称,并使用=SheetName!A1:A6在实际工作表上创建了数据验证。

满足我的需要。但是,提出了一个新请求,它应该能够由用户添加新值。

例如:假设我有一个下拉值是A,B和C.现在用户必须从三个中选择一个。但是如果他想要喜欢D,E(一次性使用),他应该能够添加任何新值。没有必要将值保留在下拉列表中以备将来使用。

3 个答案:

答案 0 :(得分:0)

使用offset函数创建动态命名范围并将数据验证分配给命名范围,而不是使用固定列表。这样,用户需要做的就是在列表中添加另一个项目,并在数据验证下拉列表中进行更新

Here是一个关于如何做到这一点的链接,以防你不知道如何

答案 1 :(得分:0)

如果它们仅用于一次性使用,则听起来不需要将它们添加到验证中。只允许验证接受其他值:

在数据验证中,转到“错误警报”选项卡,然后执行以下任一操作:

  1. 取消选中“显示错误提醒...”
  2. 将“样式”更改为“停止”以外的任何内容(即“警告”,如下所示)
  3. enter image description here

答案 2 :(得分:0)

您知道隐藏的工作表,用于存储要在下拉列表中显示的值吗?

  1. 在第1行之前插入一行,并在A1中输入一个值(在您刚刚插入它时应为空白),该值描述列表,例如ListValues

  2. 然后选择A列中的所有数据(不包括空白),按Ctrl + T,勾选显示我的数据/表格有标题的框,单击确定。

  3. 您现在应该有一个1列的Excel表格。如果单击该表,然后单击屏幕顶部的“设计”,则可以使用屏幕左上角的字段命名表。

  4. 然后,您可以将您的验证范围称为(确保您也告诉VBA该表位于哪个工作簿和工作表中):

    Range("TABLENAME[COLUMNHEADER]")
    

    您应该将TABLENAME替换为您在步骤3中给出的名称,将COLUMNHEADER替换为您在上面的步骤2中给出的名称。

    在表格的最后一行下方输入新值将导致表格自动延伸并包含新添加的值。要删除值,您需要删除整个表,而不仅仅是删除值。

    希望有所帮助。