VBA用于字符串搜索和仅为该相邻单元格调用Sub

VBA用于字符串搜索和仅为该相邻单元格调用Sub,vba,excel,Vba,Excel,我想根据程序查找字符串的位置创建一个逻辑范围 我正在尝试的是: 此示例工作簿的每张工作表都有一列日期和一列状态。每张工作表的“状态”列右侧还有一列,该列仅输出该日期的“当前”一词。(如果这是多余的,而您更愿意在显示所有日期的第一列中搜索当前日期,请忽略此项。我只想让它对我来说更简单。) 该程序需要在status列右侧的列中搜索字符串“current”,并复制并粘贴与之相邻的“status”单元格值(或者,如果要忽略“current”字符串,只需通过rows date找到地址并运行该特定行的“s

我想根据程序查找字符串的位置创建一个逻辑范围

我正在尝试的是:

此示例工作簿的每张工作表都有一列日期和一列状态。每张工作表的“状态”列右侧还有一列,该列仅输出该日期的“当前”一词。(如果这是多余的,而您更愿意在显示所有日期的第一列中搜索当前日期,请忽略此项。我只想让它对我来说更简单。)

该程序需要在status列右侧的列中搜索字符串“current”,并复制并粘贴与之相邻的“status”单元格值(或者,如果要忽略“current”字符串,只需通过rows date找到地址并运行该特定行的“status”单元格的sub)。该示例在状态单元格中没有实际公式,只有我输入的值作为参考,但原理相同

Sub Ruby()
If Sheets("ALPHA").Range("T2:T5000").Value = "Current" Then
    Sheets("ALPHA").Select
    Call copy
End If
If Sheets("BRAVO").Range("T2:T5000").Value = "Current" Then
    Sheets("BRAVO").Select
    Call copy
End If
If Sheets("CHARLIE").Range("T2:T5000").Value = "Current" Then
    Sheets("CHARLIE").Select
    Call copy
End If
End Sub

Sub copy()
'
' copy Macro
'

'
Range("S98").Select
Selection.copy
Range("S98").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
End Sub

根据代码的外观,您希望将S列中的公式更改为值

你可以在每张纸上循环,让它发生

Sub RubyLoop()
    Dim sh As Worksheet, LstRw As Long
    Dim rng As Range, c As Range

    For Each sh In Sheets
        With sh
            LstRw = .Cells(.Rows.Count, "T").End(xlUp).Row
            Set rng = .Range("T2:T" & LstRw)

            For Each c In rng.Cells
                If c = "Current" Then c.Offset(, -1).Value = c.Offset(, -1).Value
            Next c
        End With
    Next sh


End Sub
带结束if
根据代码的外观,您希望将S列中的公式更改为值

你可以在每张纸上循环,让它发生

Sub RubyLoop()
    Dim sh As Worksheet, LstRw As Long
    Dim rng As Range, c As Range

    For Each sh In Sheets
        With sh
            LstRw = .Cells(.Rows.Count, "T").End(xlUp).Row
            Set rng = .Range("T2:T" & LstRw)

            For Each c In rng.Cells
                If c = "Current" Then c.Offset(, -1).Value = c.Offset(, -1).Value
            Next c
        End With
    Next sh


End Sub
带结束if
它起作用了!它在我的实际工作簿上运行良好,但是“If c=“Current”然后c.Offset(,-1).Value=c.Offset(,-1).Value”出现运行时错误。但它确实起作用了!!:)我来解决这个问题谢谢@DaveExcel!!也许它不喜欢一行中的
If
代码,我添加了一个版本,它使用
end If
工作!它在我的实际工作簿上运行良好,但是“If c=“Current”然后c.Offset(,-1).Value=c.Offset(,-1).Value”出现运行时错误。但它确实起作用了!!:)我来解决这个问题谢谢@DaveExcel!!也许它不喜欢一行中的
If
代码,我添加了一个版本,其中包含
end If