Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 84
Default I have to run macro twice to work? Why


I've put two sub's together, the first part to rename the the sheet, then the
second part that adds all the formulas.

when i F8 through it works fine, when I F5 or run it stops after renaming
the sheet. then I run again and it goes through. What am I missing after the
first part to make it run through without stopping?

Thanks
Carl

Sub calculations()

'This part renames the worksheet from ilxoverdue to calculations

For Each ws In ActiveWorkbook.Worksheets
If LCase(Left(ws.Name, 3)) = "ilx" Then
newname = "Calculations"
ws.Name = newname
Exit Sub
End If

Next

'this adds 2 rows to to the spreasheet and the totals

Sheets("Calculations").Select
Rows("1:2").Select
Selection.Insert Shift:=xlDown
Range("T1").Formula = "=sum($T$4:$T$6000)"
Range("U1").Formula = "=sum($U$4:$U$6000)"
Range("V1").Formula = "=sum($V$4:$V$6000)"
Range("W1").Formula = "=sum($W$4:$W$6000)"
Range("X1").Formula = "=sum($X$4:$X$6000)"


Lastrowcalc = Sheets("Calculations").Range("D" & Rows.Count).End(xlUp).Row
Sheets("Calculations").Select

Range("T3").Formula = "50% Against Query"
Range("T4").Select
ActiveCell.Formula = "=$G4*0.5"
Selection.AutoFill Destination:=Range("T4:T" & Lastrowcalc),
Type:=xlFillDefault

Range("U3").Formula = "25%"
Range("U4").Select
ActiveCell.Formula = "=$O4*0.25"
Selection.AutoFill Destination:=Range("U4:U" & Lastrowcalc),
Type:=xlFillDefault

Range("V3").Formula = "75%"
Range("V4").Select
ActiveCell.Formula = "=$P4*0.75"
Selection.AutoFill Destination:=Range("V4:V" & Lastrowcalc),
Type:=xlFillDefault

Range("W3").Formula = "100%"
Range("W4").Select
ActiveCell.Formula = "=SUM($Q4:$S4)"
Selection.AutoFill Destination:=Range("W4:W" & Lastrowcalc),
Type:=xlFillDefault

Range("X3").Formula = "Total Provision"
Range("X4").Select
ActiveCell.Formula = "=IF($F4<=0,0,IF(SUM($T4:$W4)<=0,0,SUM($T4:$W4 )))"
Selection.AutoFill Destination:=Range("X4:X" & Lastrowcalc),
Type:=xlFillDefault



End Sub
  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 1,117
Default I have to run macro twice to work? Why

'This part renames the worksheet from ilxoverdue to calculations

'and this part also tells it to exit the sub once you've
'named the new sheet "Calculations"! :)
For Each ws In ActiveWorkbook.Worksheets
If LCase(Left(ws.Name, 3)) = "ilx" Then
newname = "Calculations"
ws.Name = newname
'-------- Exit Sub
End If

try removing the exit sub & see if that works.
:)
susan




On Jun 22, 3:48*pm, Carlos wrote:
I've put two sub's together, the first part to rename the the sheet, then the
second part that adds all the formulas.

when i F8 through it works fine, when I F5 or run it stops after renaming
the sheet. then I run again and it goes through. What am I missing after the
first part to make it run through without stopping?

Thanks
Carl

Sub calculations()

'This part renames the worksheet from ilxoverdue to calculations

For Each ws In ActiveWorkbook.Worksheets
* * * * * * If LCase(Left(ws.Name, 3)) = "ilx" Then
* * * * * * * * * * newname = "Calculations"
* * * * * * * * * * ws.Name = newname
* * * * * * * * Exit Sub
* * * * * * End If

Next

'this adds 2 rows to to the spreasheet and the totals

Sheets("Calculations").Select
Rows("1:2").Select
Selection.Insert Shift:=xlDown
Range("T1").Formula = "=sum($T$4:$T$6000)"
Range("U1").Formula = "=sum($U$4:$U$6000)"
Range("V1").Formula = "=sum($V$4:$V$6000)"
Range("W1").Formula = "=sum($W$4:$W$6000)"
Range("X1").Formula = "=sum($X$4:$X$6000)"

Lastrowcalc = Sheets("Calculations").Range("D" & Rows.Count).End(xlUp).Row
Sheets("Calculations").Select

Range("T3").Formula = "50% Against Query"
Range("T4").Select
ActiveCell.Formula = "=$G4*0.5"
Selection.AutoFill Destination:=Range("T4:T" & Lastrowcalc),
Type:=xlFillDefault

Range("U3").Formula = "25%"
Range("U4").Select
ActiveCell.Formula = "=$O4*0.25"
Selection.AutoFill Destination:=Range("U4:U" & Lastrowcalc),
Type:=xlFillDefault

Range("V3").Formula = "75%"
Range("V4").Select
ActiveCell.Formula = "=$P4*0.75"
Selection.AutoFill Destination:=Range("V4:V" & Lastrowcalc),
Type:=xlFillDefault

Range("W3").Formula = "100%"
Range("W4").Select
ActiveCell.Formula = "=SUM($Q4:$S4)"
Selection.AutoFill Destination:=Range("W4:W" & Lastrowcalc),
Type:=xlFillDefault

Range("X3").Formula = "Total Provision"
Range("X4").Select
ActiveCell.Formula = "=IF($F4<=0,0,IF(SUM($T4:$W4)<=0,0,SUM($T4:$W4 )))"
Selection.AutoFill Destination:=Range("X4:X" & Lastrowcalc),
Type:=xlFillDefault

End Sub


  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 1,104
Default I have to run macro twice to work? Why


I think the "Exit Sub" on line 5 might be the culprit
best wishes
--
Bernard V Liengme
Microsoft Excel MVP
http://people.stfx.ca/bliengme
remove caps from email


"Carlos" wrote in message
...
I've put two sub's together, the first part to rename the the sheet, then
the
second part that adds all the formulas.

when i F8 through it works fine, when I F5 or run it stops after renaming
the sheet. then I run again and it goes through. What am I missing after
the
first part to make it run through without stopping?

Thanks
Carl

Sub calculations()

'This part renames the worksheet from ilxoverdue to calculations

For Each ws In ActiveWorkbook.Worksheets
If LCase(Left(ws.Name, 3)) = "ilx" Then
newname = "Calculations"
ws.Name = newname
Exit Sub
End If

Next

'this adds 2 rows to to the spreasheet and the totals

Sheets("Calculations").Select
Rows("1:2").Select
Selection.Insert Shift:=xlDown
Range("T1").Formula = "=sum($T$4:$T$6000)"
Range("U1").Formula = "=sum($U$4:$U$6000)"
Range("V1").Formula = "=sum($V$4:$V$6000)"
Range("W1").Formula = "=sum($W$4:$W$6000)"
Range("X1").Formula = "=sum($X$4:$X$6000)"


Lastrowcalc = Sheets("Calculations").Range("D" & Rows.Count).End(xlUp).Row
Sheets("Calculations").Select

Range("T3").Formula = "50% Against Query"
Range("T4").Select
ActiveCell.Formula = "=$G4*0.5"
Selection.AutoFill Destination:=Range("T4:T" & Lastrowcalc),
Type:=xlFillDefault

Range("U3").Formula = "25%"
Range("U4").Select
ActiveCell.Formula = "=$O4*0.25"
Selection.AutoFill Destination:=Range("U4:U" & Lastrowcalc),
Type:=xlFillDefault

Range("V3").Formula = "75%"
Range("V4").Select
ActiveCell.Formula = "=$P4*0.75"
Selection.AutoFill Destination:=Range("V4:V" & Lastrowcalc),
Type:=xlFillDefault

Range("W3").Formula = "100%"
Range("W4").Select
ActiveCell.Formula = "=SUM($Q4:$S4)"
Selection.AutoFill Destination:=Range("W4:W" & Lastrowcalc),
Type:=xlFillDefault

Range("X3").Formula = "Total Provision"
Range("X4").Select
ActiveCell.Formula = "=IF($F4<=0,0,IF(SUM($T4:$W4)<=0,0,SUM($T4:$W4 )))"
Selection.AutoFill Destination:=Range("X4:X" & Lastrowcalc),
Type:=xlFillDefault



End Sub



  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 84
Default I have to run macro twice to work? Why


Thanks Both,

I had a feeling it was that, but I wasn't sure what to replace it with!

Many thanks
Carl

"Per Jessen" wrote:

HI Carlos

In the "For Each ws...." loop, you have an Exit Sub statement when you have
renamed the sheet, this will quit the macro. All you need is a "Exit For"
statement instead.

Best regards,
Per



"Carlos" skrev i meddelelsen
...
I've put two sub's together, the first part to rename the the sheet, then
the
second part that adds all the formulas.

when i F8 through it works fine, when I F5 or run it stops after renaming
the sheet. then I run again and it goes through. What am I missing after
the
first part to make it run through without stopping?

Thanks
Carl

Sub calculations()

'This part renames the worksheet from ilxoverdue to calculations

For Each ws In ActiveWorkbook.Worksheets
If LCase(Left(ws.Name, 3)) = "ilx" Then
newname = "Calculations"
ws.Name = newname
Exit Sub
End If

Next

'this adds 2 rows to to the spreasheet and the totals

Sheets("Calculations").Select
Rows("1:2").Select
Selection.Insert Shift:=xlDown
Range("T1").Formula = "=sum($T$4:$T$6000)"
Range("U1").Formula = "=sum($U$4:$U$6000)"
Range("V1").Formula = "=sum($V$4:$V$6000)"
Range("W1").Formula = "=sum($W$4:$W$6000)"
Range("X1").Formula = "=sum($X$4:$X$6000)"


Lastrowcalc = Sheets("Calculations").Range("D" & Rows.Count).End(xlUp).Row
Sheets("Calculations").Select

Range("T3").Formula = "50% Against Query"
Range("T4").Select
ActiveCell.Formula = "=$G4*0.5"
Selection.AutoFill Destination:=Range("T4:T" & Lastrowcalc),
Type:=xlFillDefault

Range("U3").Formula = "25%"
Range("U4").Select
ActiveCell.Formula = "=$O4*0.25"
Selection.AutoFill Destination:=Range("U4:U" & Lastrowcalc),
Type:=xlFillDefault

Range("V3").Formula = "75%"
Range("V4").Select
ActiveCell.Formula = "=$P4*0.75"
Selection.AutoFill Destination:=Range("V4:V" & Lastrowcalc),
Type:=xlFillDefault

Range("W3").Formula = "100%"
Range("W4").Select
ActiveCell.Formula = "=SUM($Q4:$S4)"
Selection.AutoFill Destination:=Range("W4:W" & Lastrowcalc),
Type:=xlFillDefault

Range("X3").Formula = "Total Provision"
Range("X4").Select
ActiveCell.Formula = "=IF($F4<=0,0,IF(SUM($T4:$W4)<=0,0,SUM($T4:$W4 )))"
Selection.AutoFill Destination:=Range("X4:X" & Lastrowcalc),
Type:=xlFillDefault



End Sub



  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 10,124
Default I have to run macro twice to work? Why


Sub Doitlikethis()
For Each ws In ActiveWorkbook.Worksheets
If LCase(Left(ws.Name, 3)) = "ilx" Then
With ws
lastrowcalc = .Cells(Rows.Count, "d").End(xlUp).Row
.Rows("1:2").Insert Shift:=xlDown
.Range("t1:x1").Formula = "=sum(T4:T" & lastrowcalc & ")"
.Range("T3").Formula = "50% Against Query"
.Range("T4").Formula = "=$G4*0.5"
.Range("U3").Formula = "25%"
.Range("U4").Formula = "=$O4*0.25"
.Range("V3").Formula = "75%"
.Range("V4").Formula = "=$P4*0.75"
.Range("W3").Formula = "100%"
.Range("W4").Formula = "=SUM($Q4:$S4)"
.Range("X3").Formula = "Total Provision"
.Range("X4").Formula = "=IF($F4<=0,0," & _
"IF(SUM($T4:$W4)<=0,0,SUM($T4:$W4)))"
.Range("t4:x4").AutoFill Destination:= _
.Range("t4:x" & lastrowcalc)
.Name = "Calculations"
End With
Exit Sub
End If
Next ws
End Sub

--
Don Guillett
Microsoft MVP Excel
SalesAid Software

"Carlos" wrote in message
...
I've put two sub's together, the first part to rename the the sheet, then
the
second part that adds all the formulas.

when i F8 through it works fine, when I F5 or run it stops after renaming
the sheet. then I run again and it goes through. What am I missing after
the
first part to make it run through without stopping?

Thanks
Carl

Sub calculations()

'This part renames the worksheet from ilxoverdue to calculations

For Each ws In ActiveWorkbook.Worksheets
If LCase(Left(ws.Name, 3)) = "ilx" Then
newname = "Calculations"
ws.Name = newname
Exit Sub
End If

Next

'this adds 2 rows to to the spreasheet and the totals

Sheets("Calculations").Select
Rows("1:2").Select
Selection.Insert Shift:=xlDown
Range("T1").Formula = "=sum($T$4:$T$6000)"
Range("U1").Formula = "=sum($U$4:$U$6000)"
Range("V1").Formula = "=sum($V$4:$V$6000)"
Range("W1").Formula = "=sum($W$4:$W$6000)"
Range("X1").Formula = "=sum($X$4:$X$6000)"


Lastrowcalc = Sheets("Calculations").Range("D" & Rows.Count).End(xlUp).Row
Sheets("Calculations").Select

Range("T3").Formula = "50% Against Query"
Range("T4").Select
ActiveCell.Formula = "=$G4*0.5"
Selection.AutoFill Destination:=Range("T4:T" & Lastrowcalc),
Type:=xlFillDefault

Range("U3").Formula = "25%"
Range("U4").Select
ActiveCell.Formula = "=$O4*0.25"
Selection.AutoFill Destination:=Range("U4:U" & Lastrowcalc),
Type:=xlFillDefault

Range("V3").Formula = "75%"
Range("V4").Select
ActiveCell.Formula = "=$P4*0.75"
Selection.AutoFill Destination:=Range("V4:V" & Lastrowcalc),
Type:=xlFillDefault

Range("W3").Formula = "100%"
Range("W4").Select
ActiveCell.Formula = "=SUM($Q4:$S4)"
Selection.AutoFill Destination:=Range("W4:W" & Lastrowcalc),
Type:=xlFillDefault

Range("X3").Formula = "Total Provision"
Range("X4").Select
ActiveCell.Formula = "=IF($F4<=0,0,IF(SUM($T4:$W4)<=0,0,SUM($T4:$W4 )))"
Selection.AutoFill Destination:=Range("X4:X" & Lastrowcalc),
Type:=xlFillDefault



End Sub




  #6   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 84
Default I have to run macro twice to work? Why


Wow, Thanks Don. It's going to take time for me to get that efficient at
VBA!. It does help having this sort of guidance though.

Many thanks
Carl

"Don Guillett" wrote:

Sub Doitlikethis()
For Each ws In ActiveWorkbook.Worksheets
If LCase(Left(ws.Name, 3)) = "ilx" Then
With ws
lastrowcalc = .Cells(Rows.Count, "d").End(xlUp).Row
.Rows("1:2").Insert Shift:=xlDown
.Range("t1:x1").Formula = "=sum(T4:T" & lastrowcalc & ")"
.Range("T3").Formula = "50% Against Query"
.Range("T4").Formula = "=$G4*0.5"
.Range("U3").Formula = "25%"
.Range("U4").Formula = "=$O4*0.25"
.Range("V3").Formula = "75%"
.Range("V4").Formula = "=$P4*0.75"
.Range("W3").Formula = "100%"
.Range("W4").Formula = "=SUM($Q4:$S4)"
.Range("X3").Formula = "Total Provision"
.Range("X4").Formula = "=IF($F4<=0,0," & _
"IF(SUM($T4:$W4)<=0,0,SUM($T4:$W4)))"
.Range("t4:x4").AutoFill Destination:= _
.Range("t4:x" & lastrowcalc)
.Name = "Calculations"
End With
Exit Sub
End If
Next ws
End Sub

--
Don Guillett
Microsoft MVP Excel
SalesAid Software

"Carlos" wrote in message
...
I've put two sub's together, the first part to rename the the sheet, then
the
second part that adds all the formulas.

when i F8 through it works fine, when I F5 or run it stops after renaming
the sheet. then I run again and it goes through. What am I missing after
the
first part to make it run through without stopping?

Thanks
Carl

Sub calculations()

'This part renames the worksheet from ilxoverdue to calculations

For Each ws In ActiveWorkbook.Worksheets
If LCase(Left(ws.Name, 3)) = "ilx" Then
newname = "Calculations"
ws.Name = newname
Exit Sub
End If

Next

'this adds 2 rows to to the spreasheet and the totals

Sheets("Calculations").Select
Rows("1:2").Select
Selection.Insert Shift:=xlDown
Range("T1").Formula = "=sum($T$4:$T$6000)"
Range("U1").Formula = "=sum($U$4:$U$6000)"
Range("V1").Formula = "=sum($V$4:$V$6000)"
Range("W1").Formula = "=sum($W$4:$W$6000)"
Range("X1").Formula = "=sum($X$4:$X$6000)"


Lastrowcalc = Sheets("Calculations").Range("D" & Rows.Count).End(xlUp).Row
Sheets("Calculations").Select

Range("T3").Formula = "50% Against Query"
Range("T4").Select
ActiveCell.Formula = "=$G4*0.5"
Selection.AutoFill Destination:=Range("T4:T" & Lastrowcalc),
Type:=xlFillDefault

Range("U3").Formula = "25%"
Range("U4").Select
ActiveCell.Formula = "=$O4*0.25"
Selection.AutoFill Destination:=Range("U4:U" & Lastrowcalc),
Type:=xlFillDefault

Range("V3").Formula = "75%"
Range("V4").Select
ActiveCell.Formula = "=$P4*0.75"
Selection.AutoFill Destination:=Range("V4:V" & Lastrowcalc),
Type:=xlFillDefault

Range("W3").Formula = "100%"
Range("W4").Select
ActiveCell.Formula = "=SUM($Q4:$S4)"
Selection.AutoFill Destination:=Range("W4:W" & Lastrowcalc),
Type:=xlFillDefault

Range("X3").Formula = "Total Provision"
Range("X4").Select
ActiveCell.Formula = "=IF($F4<=0,0,IF(SUM($T4:$W4)<=0,0,SUM($T4:$W4 )))"
Selection.AutoFill Destination:=Range("X4:X" & Lastrowcalc),
Type:=xlFillDefault



End Sub



  #7   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 10,124
Default I have to run macro twice to work? Why


Glad to help. It takes a while. Just try to keep it simple and only select
when absolutely necessary. In this case I think what you were doing would
have worked had you simply done the naming at the END and then exited sub.

--
Don Guillett
Microsoft MVP Excel
SalesAid Software

"Carlos" wrote in message
...
Wow, Thanks Don. It's going to take time for me to get that efficient at
VBA!. It does help having this sort of guidance though.

Many thanks
Carl

"Don Guillett" wrote:

Sub Doitlikethis()
For Each ws In ActiveWorkbook.Worksheets
If LCase(Left(ws.Name, 3)) = "ilx" Then
With ws
lastrowcalc = .Cells(Rows.Count, "d").End(xlUp).Row
.Rows("1:2").Insert Shift:=xlDown
.Range("t1:x1").Formula = "=sum(T4:T" & lastrowcalc & ")"
.Range("T3").Formula = "50% Against Query"
.Range("T4").Formula = "=$G4*0.5"
.Range("U3").Formula = "25%"
.Range("U4").Formula = "=$O4*0.25"
.Range("V3").Formula = "75%"
.Range("V4").Formula = "=$P4*0.75"
.Range("W3").Formula = "100%"
.Range("W4").Formula = "=SUM($Q4:$S4)"
.Range("X3").Formula = "Total Provision"
.Range("X4").Formula = "=IF($F4<=0,0," & _
"IF(SUM($T4:$W4)<=0,0,SUM($T4:$W4)))"
.Range("t4:x4").AutoFill Destination:= _
.Range("t4:x" & lastrowcalc)
.Name = "Calculations"
End With
Exit Sub
End If
Next ws
End Sub

--
Don Guillett
Microsoft MVP Excel
SalesAid Software

"Carlos" wrote in message
...
I've put two sub's together, the first part to rename the the sheet,
then
the
second part that adds all the formulas.

when i F8 through it works fine, when I F5 or run it stops after
renaming
the sheet. then I run again and it goes through. What am I missing
after
the
first part to make it run through without stopping?

Thanks
Carl

Sub calculations()

'This part renames the worksheet from ilxoverdue to calculations

For Each ws In ActiveWorkbook.Worksheets
If LCase(Left(ws.Name, 3)) = "ilx" Then
newname = "Calculations"
ws.Name = newname
Exit Sub
End If

Next

'this adds 2 rows to to the spreasheet and the totals

Sheets("Calculations").Select
Rows("1:2").Select
Selection.Insert Shift:=xlDown
Range("T1").Formula = "=sum($T$4:$T$6000)"
Range("U1").Formula = "=sum($U$4:$U$6000)"
Range("V1").Formula = "=sum($V$4:$V$6000)"
Range("W1").Formula = "=sum($W$4:$W$6000)"
Range("X1").Formula = "=sum($X$4:$X$6000)"


Lastrowcalc = Sheets("Calculations").Range("D" &
Rows.Count).End(xlUp).Row
Sheets("Calculations").Select

Range("T3").Formula = "50% Against Query"
Range("T4").Select
ActiveCell.Formula = "=$G4*0.5"
Selection.AutoFill Destination:=Range("T4:T" & Lastrowcalc),
Type:=xlFillDefault

Range("U3").Formula = "25%"
Range("U4").Select
ActiveCell.Formula = "=$O4*0.25"
Selection.AutoFill Destination:=Range("U4:U" & Lastrowcalc),
Type:=xlFillDefault

Range("V3").Formula = "75%"
Range("V4").Select
ActiveCell.Formula = "=$P4*0.75"
Selection.AutoFill Destination:=Range("V4:V" & Lastrowcalc),
Type:=xlFillDefault

Range("W3").Formula = "100%"
Range("W4").Select
ActiveCell.Formula = "=SUM($Q4:$S4)"
Selection.AutoFill Destination:=Range("W4:W" & Lastrowcalc),
Type:=xlFillDefault

Range("X3").Formula = "Total Provision"
Range("X4").Select
ActiveCell.Formula = "=IF($F4<=0,0,IF(SUM($T4:$W4)<=0,0,SUM($T4:$W4 )))"
Selection.AutoFill Destination:=Range("X4:X" & Lastrowcalc),
Type:=xlFillDefault



End Sub




Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Macro to update a column in a work based on another work sheet WickerMan New Users to Excel 1 December 4th 09 12:58 PM
macro doesn't work Seeker Excel Programming 4 March 21st 09 05:27 AM
Macro works Macro does not work Wanna Learn Excel Discussion (Misc queries) 4 March 24th 08 12:51 PM
If I have a work sheet protected and try to run a macro to hide rows or columns it won't work. Correct? Marc Excel Programming 2 July 12th 06 04:10 AM
Why does the macro not work? Xanadude Excel Worksheet Functions 4 April 24th 05 09:06 PM


All times are GMT +1. The time now is 05:07 AM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright ©2004-2024 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"