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