ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Clean up code using WITHs (https://www.excelbanter.com/excel-programming/296811-clean-up-code-using-withs.html)

Richard[_28_]

Clean up code using WITHs
 
Is there a more efficient way to write this code? For example could I use another with (ActiveSheet)?

With Sheet2
.Cells(varRow, 1).Value = ActiveSheet.Range("G3").Value
.Cells(varRow, 2).Value = ActiveSheet.Range("G4").Value
.Cells(varRow, 3).Value = ActiveSheet.Range("Total").Value
.Cells(varRow, 4).Value = ActiveSheet.Range("B11").Value
.Cells(varRow, 5).Value = ActiveSheet.Range("B12").Value
.Cells(varRow, 6).Value = ActiveSheet.Range("B13").Value
.Cells(varRow, 7).Value = ActiveSheet.Range("B14").Value
.Cells(varRow, 8).Value = ActiveSheet.Range("B15").Value
.Cells(varRow, 9).Value = ActiveSheet.Range("F11").Value
.Cells(varRow, 10).Value = ActiveSheet.Range("F12").Value
.Cells(varRow, 11).Value = ActiveSheet.Range("F13").Value
.Cells(varRow, 12).Value = ActiveSheet.Range("F14").Value
.Cells(varRow, 13).Value = ActiveSheet.Range("F15").Value
end with

Thank you all,

Rick

D[_4_]

Clean up code using WITHs
 
Could try calling it

callme 1, "G3"
callme 2, "G4"
callme 3, "Total"
callme 4, "B11"
etc, etc...

private sub callme(x,y)
sheet2.cells(varrow, x).value = activesheet.range(y).value
end sub

----- Richard wrote: -----

Is there a more efficient way to write this code? For example could I use another with (ActiveSheet)?

With Sheet2
.Cells(varRow, 1).Value = ActiveSheet.Range("G3").Value
.Cells(varRow, 2).Value = ActiveSheet.Range("G4").Value
.Cells(varRow, 3).Value = ActiveSheet.Range("Total").Value
.Cells(varRow, 4).Value = ActiveSheet.Range("B11").Value
.Cells(varRow, 5).Value = ActiveSheet.Range("B12").Value
.Cells(varRow, 6).Value = ActiveSheet.Range("B13").Value
.Cells(varRow, 7).Value = ActiveSheet.Range("B14").Value
.Cells(varRow, 8).Value = ActiveSheet.Range("B15").Value
.Cells(varRow, 9).Value = ActiveSheet.Range("F11").Value
.Cells(varRow, 10).Value = ActiveSheet.Range("F12").Value
.Cells(varRow, 11).Value = ActiveSheet.Range("F13").Value
.Cells(varRow, 12).Value = ActiveSheet.Range("F14").Value
.Cells(varRow, 13).Value = ActiveSheet.Range("F15").Value
end with

Thank you all,

Rick


mudraker[_196_]

Clean up code using WITHs
 
Another way



Dim i As Integer
With Sheet2
.Cells(varRow, 1).Value = ActiveSheet.Range("G3").Value
.Cells(varRow, 2).Value = ActiveSheet.Range("G4").Value
.Cells(varRow, 3).Value = ActiveSheet.Range("Total").Value
For i = 4 To 8 Step 1
.Cells(varRow, i).Value = ActiveSheet.Cells(i + 7, "b").Value
Next i
For i = 9 To 13 Step 1
.Cells(varRow, i).Value = ActiveSheet.Cells(i + 2, "f").Value
Next i
End Wit

--
Message posted from http://www.ExcelForum.com



All times are GMT +1. The time now is 06:52 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com