【发布时间】:2018-12-13 17:02:00
【问题描述】:
不确定如何使用下面列出的步骤完成此代码。任何帮助表示赞赏
Sub Test()
Dim Value As Double
For Each Value In ThisWorkbook.Sheets("Sheet").Range("V17:V57")
If Value.ThisWorkbook.Sheets("Sheet").Range("V17:V57") = 0 Then...
...
End If
End Sub
检查范围内是否存在0
如果是真的……
- 重置我的“数据验证”单元格源范围在同一工作表上,该工作表有一个取决于新范围的下拉列表(即从单元格 Q17 到 0 值所在的同一行)。 请注意,此 Source 范围位于 0 值所在列左侧的 5 列,并且此范围的第一行与包含 0 值的范围开始的行 (17) 相同
否则...
使用
Application.WorksheetFunction.FormulaArray ("MAX(IF(V17:V37<=0,V17:V37),MIN(V17:V37))")之类的方法查找并选择负值最小的单元格一旦找到/选择了单元格,执行目标搜索,将选定单元格设置为 0,方法是更改选定单元格左侧 4 个单元格中的值
如上自动更新“数据验证”源范围
当 0 存在时,我正在尝试此代码,但如何根据数据表另一列中相应的单元格范围设置验证范围?单元格 H24 是我的下拉列表所在的位置
Dim rng As Range
For Each rng In ThisWorkbook.Sheets("Sheet").Range("V17:V57")
If rng.Value = 0 Then
ThisWorkbook.Sheets("Sheet").Select
Range ("H24").Select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:="=Sheet!$V$17:$V" & ??
Else...
以下代码在评估行给出调试错误。 整体代码块需要简化...太多 If, For, Next??为了清楚起见,我已经注释了。在目标搜索线方面也需要帮助。
Dim rng As Range
For Each rng In ThisWorkbook.Sheets("Sheet").Range("V17:V57")
If rng.Value <> 0 Then
rng = Application.WorksheetFunction.FormulaArray("MAX(IF(V17:V57<=0,V17:V57),MIN(V17:V57))") 'this formula searches for the least min number in the range
rng.Select
Range("selected cell").GoalSeek Goal:=0, ChangingCell:=Range("cell 5 columns left of selected cell")...this line makes selected cell = 0
Exit For
End If
Next rng
【问题讨论】:
-
Dim rng as Range: For Each rng In ThisWorkbook.Worksheets("Sheet").Range("V17:V57") : If rng.Value = 0 Then.....:Else. ...:结束如果........
-
不确定如何处理验证。根据对原始问题的编辑