我搜索了一段时间,但还是找不到解决问题的方法。我有一个名为 tbl_lov 的表,其中包含通过间接函数在下拉列表中使用的值列表。INDIRECT("tbl_lov[ProjNR]")
随着项目的来来去去,我在 tbl_lov 上有一列名为 active,其值为 True 或 False。如果值为 false,我不希望该值显示在下拉列表中。不幸的是,我还没有想出如何直接做到这一点。
答案1
因为看起来仅仅使用函数并不是什么简单的事情,所以我最终使用了宏(我想避免这种情况)。
Dim all_lov As Variant
Dim row_nr As Integer
Sub Button1_Click()
Worksheets("LoV").Range("I:N").Delete
row_nr = 3
all_lov = Worksheets("LoV").ListObjects("tbl_lov").DataBodyRange.Value
Worksheets("LoV").Range("B3:G3").Copy Worksheets("LoV").Range("I3")
For i = 1 To UBound(all_lov)
If all_lov(i, 6) = True Then
row_nr = row_nr + 1
Worksheets("LoV").Range("B" & (3 + i) & ":G" & (3 + i)).Copy Worksheets("LoV").Range("I" & row_nr)
End If
Next i
Worksheets("Lov").ListObjects.Add(SourceType:=xlSrcRange, Source:=Worksheets("LoV").Range("I3:N" & row_nr), xlListObjectHasHeaders:=xlYes, tablestyleName:="TableStyleDark3").Name = "tbl_lovActive"
End Sub
这将遍历我现有的表格,并将活动项目复制到新范围。数据验证指向新表格。