[英]Dynamically add a list (table) to a specific cell (column) in Excel using VBA
我试图让 Excel 中的 L 列在 Excel 中使用值(现在是表?)填充下拉列表,这是我的代码。 我手动创建了一个名为 Table1 的表,其中包含一些虚拟值。 我可以对表中的值进行硬编码,所以这不是问题。 我只需要运行一些条件,对于一些特定的行,我需要在 Excel 的 L 列添加一个下拉列表。 任何帮助,将不胜感激。 另外,是否有一种简单的方法可以为 Excel 中的特定行着色?
Sub button_click()
Set i = Sheets("Sheet1")
Set e = Sheets("Sheet2")
arrColumnNames = i.ListObjects("Table1")
Dim d
Dim j
d = 1
j = 13
Do Until IsEmpty(i.Range("K" & j))
If i.Range("K" & j) = "Y" Then
d = d + 1
e.Rows(d).Columns("A:E").Value = i.Rows(j).Columns("A:E").Value
i.Rows(j).Columns("L") = arrColumnNames
End If
j = j + 1
Loop
End Sub
我想我明白你在追求什么。 这将创建一个验证列表并使用您选择的值填充列表。
Dim myRng As String
myRngr = Range("A1:A10").Address
With Range("B2").Validation
.Delete
.Add Type:=xlValidateList, _
AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, Formula1:="=" & myRngr & ""
End With
要修改您需要的源数据的范围,您只需要更改这一行,
myRngr = Range("A1:A10").Address
然后,您可以使用循环遍历L column
,如果满足条件,则添加验证列表。
希望有帮助。
这是将下拉列表添加到表格的另一种方法。
Public Sub AddDropdownListColumnToTable()
Dim sht As Worksheet
Dim colCount As Long
Set sht = ThisWorkbook.Worksheets("MySheetName")
colCount = sht.ListObjects(1).ListColumns.Count + 1
sht.ListObjects(1).ListColumns.Add (colCount)
sht.ListObjects(1).ListColumns(colCount).Name = "Criteria"
With sht.ListObjects(1).ListColumns(colCount).DataBodyRange.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="Item One, Item Two, Item Three, Item Four"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End Sub
关于给一行着色可以使用Interior.ColorIndex。
Sub colorIt()
Dim rng As Range
Set rng = ThisWorkbook.ActiveSheet.Rows(2)
rng.Interior.ColorIndex = 6
End Sub
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.