我正在尝试使用VBA创建动态的单元内下拉列表。目前,我已经根据输入的值填充了下拉列表。但是,随着我预见到该程序的用途将不断增长,我希望使下拉列表动态化。有没有办法让VBA遍历表并根据第1列中的值填充下拉列表?
下面是我当前拥有的代码;如您所见,基于我在其中硬编码的值,公式值是静态的:
Sub Dropdown_Setup()
'Setup appropriate template dropdowns on 'template' sheet
Set wB = ThisWorkbook
Set tempSht = ThisWorkbook.Sheets("Template")
'Populate 'machine' dropdown
With tempSht.Range("$B$15").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Formula1:="H1 - EOS M280, H2 - SLM, H4 - CL M2, H5 - EOS M400, H6 - SLM 2.0"
.IgnoreBlank = True
.InCellDropdown = True
End With
End Sub
任何帮助将不胜感激。
答案 0 :(得分:1)
您可以遍历列表对象第一列中的每个单元格,并构建一个逗号分隔的字符串,该字符串可以分配给library(dplyr)
df %>%
group_by(C0) %>%
mutate(C4 = C2[which.max(C1)])
# A tibble: 15 x 4
# Groups: C0 [3]
# C0 C1 C2 C4
# <dbl> <dbl> <fct> <fct>
# 1 1 0 A D
# 2 1 2 B D
# 3 1 3 C D
# 4 1 6 D D
# 5 1 2 E D
# 6 2 0 A D
# 7 2 0 B D
# 8 2 4 C D
# 9 2 9 D D
#10 2 7 E D
#11 3 1 A C
#12 3 2 B C
#13 3 7 C C
#14 3 4 D C
#15 3 2 E C
进行验证。
我假设Sheet2包含您的列表对象,并且该列表对象名为Table1。相应地更改这些名称。
此外,您已经定义了Formula1
,但是您没有在代码中使用它。既然不是真正必要,我将其删除。
wB