新手在这里。尝试编写以下内容,但无论我放置某些行或我改变了什么,它都会不断出现错误。
请帮帮忙?谢谢!
Sub WorksheetLoop()
Dim WS_Count As Integer
Dim I As Integer
Dim varFound As Variant, varSearch As Variant
Dim strAddress As String, intPos As Integer
WS_Count = ActiveWorkbook.Worksheets.Count
For I = 1 To WS_Count
varSearch = "CUS_ECO_SEC_CD"
Set varFound = Cells.Find(varSearch, LookIn:=xlValues, LookAt:=xlPart)
If Not varFound Is Nothing Then
strAddress = varFound.Address
Do
With varFound
Do
intPos = InStr(intPos + 1, .Value, varSearch, vbTextCompare)
If intPos Then
.Characters(Start:=intPos, Length:=Len(varSearch)).Font.ColorIndex = 4
End If
Loop Until intPos = 0
End With
Next I
End Sub
答案 0 :(得分:2)
这样做。
Sub WorksheetLoop()
Dim WS_Count As Integer
Dim I As Integer
Dim varFound As Range, varSearch As Variant
Dim strAddress As String, intPos As Integer
Dim Ws As Worksheet
'WS_Count = ActiveWorkbook.Worksheets.Count
For Each Ws In Worksheets
With Ws
varSearch = "CUS_ECO_SEC_CD"
Set varFound = .Cells.Find(varSearch, LookIn:=xlValues, LookAt:=xlPart)
If Not varFound Is Nothing Then
strAddress = varFound.Address
Do
intPos = InStr(varFound.Value, varSearch)
If intPos Then
varFound.Characters(Start:=intPos, Length:=Len(varSearch)).Font.ColorIndex = 4
End If
Set varFound = .Cells.FindNext(varFound)
Loop Until strAddress = varFound.Address
End If
End With
Next Ws
End Sub
答案 1 :(得分:0)
好的,这离你正在做的事情更近了一步:
Sub WorksheetLoop()
Dim WS_Count As Integer
Dim I As Integer
Dim varFound As Variant, varSearch As Variant
Dim strAddress As String, intPos As Integer
WS_Count = ActiveWorkbook.Worksheets.Count
For I = 1 To WS_Count
varSearch = "CUS_ECO_SEC_CD"
Set varFound = Cells.Find(varSearch, LookIn:=xlValues, LookAt:=xlPart)
If Not varFound Is Nothing Then
strAddress = varFound.Address
With varFound
Do
intPos = InStr(intPos + 1, .Value, varSearch, vbTextCompare)
If intPos Then
.Characters(Start:=intPos, Length:=Len(varSearch)).Font.ColorIndex = 4
End If
Loop Until intPos = 0
End With
End If
Next I
End Sub
请注意,如果您正确缩进代码VBA
有很多帮助。在您的情况下,我删除了一个Do
,并添加了End If
以使其正常工作。
自动添加代码的最简单方法是添加SmartIndent或在线执行此操作 - http://www.vbindent.com/
编辑 - 这样的内容可让您循环播放工作表:
Sub WorksheetLoop()
Dim WS_Count As Integer 'consider using Long instead of Integer somewhere in the future
Dim I As Integer
Dim varFound As Variant, varSearch As Variant
Dim strAddress As String, intPos As Integer
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
varSearch = "CUS_ECO_SEC_CD"
Set varFound = ws.Cells.Find(varSearch, LookIn:=xlValues, LookAt:=xlPart)
If Not varFound Is Nothing Then
strAddress = varFound.Address
With varFound
Do
intPos = InStr(intPos + 1, .Value, varSearch, vbTextCompare)
If intPos Then
.Characters(Start:=intPos, Length:=Len(varSearch)).Font.ColorIndex = 4
End If
Loop Until intPos = 0
End With
End If
Next ws
End Sub