【问题标题】:Dynamically add a list (table) to a specific cell (column) in Excel using VBA使用 VBA 将列表(表格)动态添加到 Excel 中的特定单元格(列)
【发布时间】:2016-12-19 21:45:32
【问题描述】:

我试图让 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

【问题讨论】:

  • 让我澄清一下,您想将数据添加到现有表中吗?即,向表中添加一行?
  • 不,我有一个包含硬编码数据的表(列表?)。我只想将它用于 Excel 工作表 L 列中的特定行。
  • 简而言之,我想做的是在 Excel 工作表的 L 列中为某些行添加下拉列表。 Excel 中的下拉菜单似乎曾经被称为列表,而现在由于某种原因它们被称为表格,这增加了更多的混乱。

标签: vba excel


【解决方案1】:

我想我明白你在追求什么。这将创建一个验证列表并使用您选择的值填充该列表。

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,如果满足条件,则添加验证列表。

希望对您有所帮助。

【讨论】:

  • 我找到了如何为行着色的答案:i.Rows(j).Columns("A:L").Interior.ColorIndex = 3 其中 3 是红色。
【解决方案2】:

这是向表格添加下拉列表的另一种方式。

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

【讨论】:

    【解决方案3】:

    关于给一行上色可以使用Interior.ColorIndex。

    Sub colorIt()
        Dim rng As Range
        Set rng = ThisWorkbook.ActiveSheet.Rows(2)
        rng.Interior.ColorIndex = 6
    End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多