Hi all!
I’m stuck on a script I’m trying to write for an Excel spreadsheet and it’s in VB (or VBA… ?). This is the section of the script giving me hell:
For Each i In Content
' Get row of i
iAddress = i.Address
Row = CInt(FindWord(iAddress, 3, "$"))
If (Trigger = False) Then
FirstRow = Row
Trigger = True
End If
' If row contains the current word being searched...
If InStr(UCase(i.Value), UCase(FindWord(sSearch, w, ","))) > 0 Then
' Insert Row at the top, move this row, delete Old empty row
Debug.Print ("----Match Found, Moving Up to FirstRow")
Rows(CStr(FirstRow) & ":" & CStr(FirstRow)).Select
Selection.Insert Shift:=xlDown
Rows(CStr(Row + 1) & ":" & CStr(Row + 1)).Select
Selection.Cut Destination:=Rows(CStr(FirstRow) & ":" & CStr(FirstRow))
Rows(CStr(Row + 1) & ":" & CStr(Row + 1)).Select
Selection.Delete Shift:=xlUp
End If
Next
OK, first some details:
“For Each i In Content”
Content is the selection of cells by the user. Every other piece of my code is working perfectly even the functions I wrote myself (FindWord). The only problem I have is, that at the end of the code at the last line (the “Next”), for some reason the next cell it goes to in the selection is 2 rows down, not one?.. even stranger: It only goes down two rows when the “If InStr(UCase(i.Value), UCase(FindWord(sSearch, w, “,”))) > 0 Then” is evaluated true. Every other time it only goes down one like it’s meant to…
Basically this is part of a script which searches through cells and moves up ones which contain certain words, specified by the user.
Any help would be GREATLY appreciate, this is actually a script I have to write for the place I’m working at… I started learning VB only 2 days ago when they told me this script had to be written in VB.
Basically I need it to only go one line down, not 2. Anyone know why it would be doing this, or how to stop it?
PS: I tried taking the (Row + 1) out of the lines of code in the If section… didn’t fix it, infact it broke the script altogether.