VBA查找范围中的值并更改单元格值

VBA查找范围中的值并更改单元格值,vba,excel,Vba,Excel,不确定如何使用下面概述的步骤完成此代码。谢谢你的帮助 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 如

不确定如何使用下面概述的步骤完成此代码。谢谢你的帮助

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值为)。 注意:此源范围位于0值所在列左侧的5列,此范围的第一行与包含0值的范围开始的行(17)相同
否则


  • 使用类似于
    Application.WorksheetFunction.FormulaArray(“MAX(IF)(V17:V37)的方法查找并选择负值最小的单元格,假设您希望查找范围A1:B10上的值“3”:

    Set given_range = ThisWorkbook.Worksheets("Sheet1").Range("A1:B10")
    given_range.Select
    Set found_value = Selection.Find("3")
    
    如果您正在查找其地址:

    value_address = found_value.Address(0,0)
    
    在末尾使用(0,0)将返回不带任何$的地址(B3而不是$B$3)

    作为额外信息:如果您想知道行或列,请执行以下操作

    value_column = Split(found_value.Address, "$")(1)
    value_row = Split(found_value.Address, "$")(2)
    

    Dim rng as范围:此工作簿中的每个rng。工作表(“工作表”)。范围(“V17:V57”):如果rng.Value=0,则……:否则……:如果……,则结束……。不确定如何处理验证。根据“编辑原始问题”,在处理此代码块之前,我需要后退一步。感谢发送。我刚刚用新的代码块编辑了我的原始问题,我需要一些支持。
    Set given_range = ThisWorkbook.Worksheets("Sheet1").Range("A1:B10")
    given_range.Select
    Set found_value = Selection.Find("3")
    
    value_address = found_value.Address(0,0)
    
    value_column = Split(found_value.Address, "$")(1)
    value_row = Split(found_value.Address, "$")(2)