Combine two macros using InStr?

  • Thread starter Thread starter CLR
  • Start date Start date
C

CLR

Hi All.........

I got a macro from here the other day, (sorry, don't remember who submitted
it), and modified it for my own use. Unfortunately, in order to get all I
want done, I had to turn it into two seperate macros, as shown below. Can
anyone please tell me how these two might be combined into just one
macro?.........or maybe it's not possible?
The only thing I've changed between the two, is the 8 to a 3 in the InStr
statement, to get the thing to read for "Total" in column 3 instead of
column 8. It works fine this way, just aggravating to have to have
two........

====================================
Sub AddRowSubTotalsDomestic()

lastrow = Range("A65536").End(xlUp).Row
For r = 8 To lastrow
If InStr(1, Cells(r, 8).Value, "Total") > 0 Then
ActiveSheet.Rows(r + 1).EntireRow.Insert

End If
Next
End Sub

====================================

Sub AddRowSubTotalsInternational()

lastrow = Range("A65536").End(xlUp).Row
For r = 8 To lastrow
If InStr(1, Cells(r, 3).Value, "Total") > 0 Then
ActiveSheet.Rows(r + 1).EntireRow.Insert

End If
Next
End Sub
=====================================


Vaya con Dios,
Chuck, CABGx3
 
Assuming both work as desired just combine with an OR
Sub AddRowSubTotalsDomestic()
lastrow = Range("A65536").End(xlUp).Row
For r = 8 To lastrow
If InStr(1, Cells(r, 8).Value, "Total") > 0 _
or instr(1,cells(r,3).value,"Total")>) Then
ActiveSheet.Rows(r + 1).EntireRow.Insert

End If
Next
End Sub
 
Sub AddRowSubTotalsBoth()

lastrow = Range("A" & Rows.Count).End(xlUp).Row
For r = 8 To lastrow
If InStr(1, Cells(r, 3).Value, "Total") > 0 Or _
InStr(1, Cells(r, 8).Value, "Total") > 0 Then
ActiveSheet.Rows(r + 1).EntireRow.Insert

End If
Next
End Sub

--

HTH

Bob Phillips
... looking out across Poole Harbour to the Purbecks
(remove nothere from the email address if mailing direct)
 
Hi
try
Sub AddRowSubTotalsDomestic()

lastrow = Range("A65536").End(xlUp).Row
For r = 8 To lastrow
If InStr(1, Cells(r, 8).Value, "Total") > 0 or InStr(1, Cells(r,
3).Value, "Total") > 0 Then
ActiveSheet.Rows(r + 1).EntireRow.Insert

End If
Next
End Sub
 
You macro is flawed. Lastrow does not adjust as you add rows, so if you
have any total near the end of your range, you would miss it.

You should loop from lastrow to 8

Sub AddRowSubTotalsBoth()

lastrow = Range("A" & Rows.Count).End(xlUp).Row
For r = lastrow to 8 step -1
If InStr(1, Cells(r, 3).Value, "Total") > 0 Or _
InStr(1, Cells(r, 8).Value, "Total") > 0 Then
ActiveSheet.Rows(r + 1).EntireRow.Insert

End If
Next
End Sub
 
Thank you Don and Bob, and Frank...........that was exactly what I was
looking for

Vaya con Dios
Chuck, CABGx3
 
Thanks Tom...........

Of course I haven't a clue about what you're talking about..........but if
you say so, it's gospel. I'll make your recommended changes, and thanks
again.

Vaya con Dios,
Chuck, CABGx3
 
Thanks Tom...........

Of course I haven't a clue about what you're talking about..........but if
you say so, it's gospel. I'll make your recommended changes, and thanks
again.

Vaya con Dios,
Chuck, CABGx3




Tom Ogilvy said:
You macro is flawed. Lastrow does not adjust as you add rows, so if you
have any total near the end of your range, you would miss it.

You should loop from lastrow to 8

Sub AddRowSubTotalsBoth()

lastrow = Range("A" & Rows.Count).End(xlUp).Row
For r = lastrow to 8 step -1
If InStr(1, Cells(r, 3).Value, "Total") > 0 Or _
InStr(1, Cells(r, 8).Value, "Total") > 0 Then
ActiveSheet.Rows(r + 1).EntireRow.Insert

End If
Next
End Sub
 
Back
Top