【问题标题】:Excel VBA loop through data validation options and save as new workbookExcel VBA 循环遍历数据验证选项并另存为新工作簿
【发布时间】:2019-01-08 21:36:19
【问题描述】:

我有一个包含多张工作表的工作簿。对于这个项目,我将重点放在一张名为“报告 3”的工作表上。在此工作表上,有一个数据验证单元格(“N12”),由不同工作表上的值填充。

我的目标是遍历数据验证单元格的所有可能值,并将每个值保存为新工作簿。如果可能的话,我想将它保存为 utf-16 txt 文件(但我的代码还没有做到这一点)。

这是我到目前为止的代码。它有效,但仅适用于数据验证的第一个值。我的预感是它在 ActiveWorkbook 上被绊倒了。

感谢任何见解和帮助。

Sub loopthroughvalidationlist()

Dim inputRange As Range
Dim c As Range
Set inputRange = Evaluate(Range("N12").Validation.Formula1)

For Each c In inputRange
    Dim s As String
    s = Cells(12, "N").Value & "postran"
    ActiveWorkbook.SaveCopyAs ThisWorkbook.Path & "/" & s
Next c

End Sub 

【问题讨论】:

  • 您在 Windows 上吗?如果是,那应该是一个反斜杠。
  • @dwirony 我在 Mac 上。还应该是反斜杠吗?
  • 那么没有一个正斜杠是正确的。我不明白您在这里要做什么 - c 在您的 For Each 循环中服务的目的是什么?
  • @dwirony c 应该代表数据验证下拉列表中的每个选项

标签: excel vba validation


【解决方案1】:

试试这个:

Sub loopthroughvalidationlist()

Dim inputRange As Range
Dim c As Range
Set inputRange = Evaluate(Range("N12").Validation.Formula1)

For Each c In inputRange
    Cells(12, "N").Value = c.Value
    Dim s As String
    s = Cells(12, "N").Value & "postran"
    ActiveWorkbook.SaveCopyAs ThisWorkbook.Path & "/" & s
Next c

End Sub

【讨论】:

  • 这行得通!非常感谢!所以我基本上需要在 for 循环中重置 c 值?对吗?
  • 有点——您正在遍历数据验证项的集合,但您需要在每次循环中实际更改单元格的值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-15
  • 1970-01-01
  • 2015-08-06
相关资源
最近更新 更多