首页 > 解决方案 > 在单元格 B(x) 中查找一个值并替换 C(x) 中的值。偏移 1

问题描述

我想寻求一些excel VB的帮助。

我在 B1:B31 范围内有一列 B。该文本包含“已启用”或“已禁用”字样。我的目标是,当单击按钮时,代码将遍历 B1:B31 范围内的所有值,如果找到文本“已启用”,它将用一个值替换下一列(同一行)。我相信这是偏移量(0,1)。

例子。因此,当代码扫描范围时,它会遇到单元格 B3,如果它在此单元格中找到单词“启用”,那么它会将默认时间估计中的值插入到单元格 C3 中。

这是一个插图: 在此处输入图像描述

标签: excelvba

解决方案


在这种情况下,您可以这样做,而不是使用 Offset

Sub SetIt()

    Dim rg As Range
    Set rg = Range("B1:C31")

    Dim sngRow As Range
    For Each sngRow In rg.Rows
        If sngRow.Cells(1, 1).Value = "Enabled" Then sngRow.Cells(1, 2).Value = 1
    Next

End Sub

使用 Offset 它看起来像

'With offset
Sub UseOffset()

    Dim rg As Range
    Set rg = Range("B1:B31")

    Dim sngCell As Range
    For Each sngCell In rg
        If sngCell.Value = "Enabled" Then sngCell.Offset(0, 1).Value = 1
    Next

End Sub

第三种方法可能是使用数组

'With Array
Sub UseArr()

    Dim rg As Range
    Set rg = Range("B1:C31")

    Dim vDat As Variant
    vDat = rg.value2

    Dim i As Long
    For i = LBound(vDat) To UBound(vDat)
        If vDat(i, 1) = "Enabled" Then vDat(i, 2) = 1
    Next i

    rg.value2 = vDat
End Sub

推荐阅读