数据验证单元格的嵌套循环



我正在使用两个都使用数据验证列表的单元格(下面的单元格B3和B4)。在每个单元格中选择的列表项用于输出2个结果的公式(一个在C21中,另一个在C22中)。我要做的是在C21和C22中呈现所有迭代及其结果。我的方法是循环遍历B4中的所有数据验证项,对于B4中的每个项,循环遍历B3中的所有选项。

B3中有8个不同的选项,B4中有4个不同的选项。使用偏移,我在一个名为"灵敏度输出"的单独选项卡中展示了它的输出。我希望它是一个8列宽,16行深的表。

除此之外,我还得到了一个错误"Object required"SetdivRange = Evaluate(divcell . validate . formula1)">

下面给出的代码部分工作,但目前没有给出期望的结果。

我是新的VBA,但据我所知,这应该是工作吗?

提前感谢您的帮助!

Sub Sensitivty()
'
' Sensitivty Macro
'
Dim ebitCell As Range
Dim ebitRange As Range
Dim c As Range

Set ebitCell = Sheets("Assumptions Input").Range("B3")
Set ebitRange = Evaluate(ebitCell.Validation.Formula1)

Dim divCell As Range
Dim divRange As Range
Dim d As Range

Set divCell = Sheets("Assumptions Input").Range("B4")
Set divRange = Evaluate(divCell.Validation.Formula1)

'Looping through items in B4
For Each d In divRange
divCell.Value = d.Value

'For each item in B4, loop through each of the items in B3
For Each c In ebitRange

ebitCell.Value = c.Value
Worksheets("Assumptions Input").Activate
Range("C21:C22").Select
Selection.Copy
Worksheets("Sensitivity Output").Activate
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveCell.Offset(0, 1).Select
Next c

ActiveCell.Offset(2, -8).Select

Next d

Set ebitCell = Nothing
Set ebitRange = Nothing
Set divCell = Nothing
Set divRange = Nothing
End Sub

正如在注释中指出的那样,这实际上是一段工作代码(对原始代码进行轻微调整以纠正所犯的小错误)。我面临的问题是,代码是为了使用链接范围而不是列表来完成数据验证而构建的(这是我在D4中使用的)。在给定的

示例中,当为B3和B4使用链接范围时,这可以像预期的那样工作

最新更新