Presentation is loading. Please wait.

Presentation is loading. Please wait.

Week 5.  Recap – For Each..Next  Personal Macro File  Immediate window  Object Variables Working with worksheets and workbooks  For Loops.

Similar presentations


Presentation on theme: "Week 5.  Recap – For Each..Next  Personal Macro File  Immediate window  Object Variables Working with worksheets and workbooks  For Loops."— Presentation transcript:

1 Week 5

2  Recap – For Each..Next  Personal Macro File  Immediate window  Object Variables Working with worksheets and workbooks  For Loops

3  For Each loops

4  Your personal macro workbook can be used to save the macros you record.  Macros in this workbook are available to you regardless of the books you currently have open.  You can access this workbook through the VBE

5  Record a new macro called myRed which formats the selected cells to red font. At the New macro window, change the Store Macro option (to Personal…)  Open the VBE and edit the macro so that the selection is made Cyan

6  You can use the Immediate window to test references and / or debug snippets of VBA code. It’s quicker than having to write a Sub just to test one or two lines.  ? in the Immediate Window ‘means print the value of’  Whereas you can execute a statement by typing it and pressing Return eg ActiveCell=99 puts 99 into the active cell on the active worksheet in the active workbook

7  Alternative For Loop syntax Sub NameRange() Dim i As Integer With Range("A1") For i = 1 To 10 Range(.Offset(i, 1),.Offset(i, 1).End(xlToRight)).Name = "Week" & i Next i End With End Sub

8  We have declared range variables  Other object variables include: Workbooks Worksheets Charts

9 Sub ObjectTest() Dim c As Range Set c = ActiveCell MsgBox "The value in the activecell is " & c.Value End Sub  You can declare variables of the type Object, where Object is a valid object reference e.g.  Dim w as Worksheet  Dim r as Range There is no Cell object  The key word Set assigns a value to an object

10  Set s = Worksheets(1)  Set s = Worksheets("exams") are valid assignments to a worksheet object  After an assignment like this you can use any method or property of the worksheet by referring to the object variable e.g. s.Activate s.Visible = Not s.Visible s.Visible = True

11  Write a macro in the VBE to declare a worksheet object, set it as Sheet 1 and rename it as Monday

12 Sub inc_rates() Dim mycell As Range For Each mycell In Selection mycell.Offset(0, 1) = mycell * 1.1 Next mycell End Sub  In a For Each loop Excel will treat a range as a single cell

13  This only applies inside the loop  In this case the mycell reference has not yet been assigned Sub inc_rates() Dim mycell As Range If IsNumeric(mycell.Value) Then For Each mycell In Selection mycell.Offset(0, 1) = mycell * 1.1 Next mycell End If End Sub

14  Once inside the loop the range takes the reference and can be referred to by any code  Corrected: Sub inc_rates() Dim mycell As Range For Each mycell In Selection If IsNumeric(mycell.Value) Then mycell.Offset(0, 1) = mycell * 1.1 End If Next mycell End Sub

15 Sub used() Dim mycell As Range For Each mycell In ActiveSheet.UsedRange mycell.Interior.Color = vbGreen Next mycell End Sub  The worksheet object has a UsedRange property, which is the range from the top left to the bottom right of cells that have been used on the worksheet.  Results example

16 Sub copytest() Range("C10").Copy Range("C1").Select ActiveSheet.Paste Application.CutCopyMode = False End Sub Sub copytest2() Range("C10").Copy Range("C1") End Sub Sub copytest2a() Range("C10").Copy destination:= Range("C1") End Sub

17  The following macro copies a cell from one workbook to another:  it can be made clearer using object variables: Sub copyrange() Workbooks("new.xls").Worksheets("sheet2").Range("A4"). _ Copy Workbooks("shapes.xls").Worksheets("Sheet1").Range("A1") End Sub

18 Sub copyrange2() Dim r1 As Range Dim r2 As Range Set r1 = Workbooks("new.xls").Worksheets("sheet2").Range("A4") Set r2 = Workbooks("shapes.xls").Worksheets("sheet1").Range("A1") r1.Copy r2 End Sub

19 Sub Newsheets() Dim n As Integer n = InputBox("How many sheets do you want?") ActiveWorkbook.Worksheets.Add Count:= n End Sub Sub AddSheetAfter() Worksheets.Add ActiveSheet.Move after:=Worksheets(Worksheets.Count) End Sub Sub AddSheetAtFront() Worksheets.Add ActiveSheet.Move before:= ' complete the argument End Sub

20 Sub AddSheetAnyMinute() Dim newSheetName As String newSheetName = Format(Now, "dd_mm hh_mm") Worksheets.Add.Name = newSheetName End Sub Sub AddSheetDaily() Dim newSheetName As String newSheetName = Format(Now, "dd_mm") Worksheets.Add.Name = newSheetName End Sub Sub AddSheetWithName() Dim newSheetName As String newSheetName = ActiveCell.Value Worksheets.Add.Name = newSheetName End Sub

21  Add some blank sheets and some chart sheets to your week5 workbook  Write a sub that returns a message box showing the number of worksheets and the number of sheets in the active workbook.   Write a macro to copy the team names from the results sheet to a new sheet, "AutumnResults"

22  You have 3 weeks to complete this task  The aim is to provide you with a useful basis for future tasks, so you may adapt it to suit your own circumstances (as long as you explain changes in the comments). When complete, it to me. Name the file “Ass2 your name”  Create a macro that, if saved to your personal macro workbook would be able to quickly format a series of worksheets and insert formulas etc.

23  Look at the workbook Jan 05 It has a series of weekly sheets that will hold sales data for a number of products and stores The headings are formatted and there are formulae in place to calculate totals (There is a final sheet with formulas for displaying the weekly totals) - extension

24  The user should be able to open a new workbook, run your macro input the number of required products and stores and the month/ year.

25  You can extend this idea to create worksheets that would be more useful to you  You might want to extend the idea of the summary sheet – for example can you use a formula to show the product which sold the most? Can you view each week’s totals side by side

26  Remember that you can use the help files, textbooks, recorded macros and the internet for tracking down elusive code  Formulas – in this case, as you want to run a macro once and then use the workbook, use Formulas placed in cells rather than values calculated in the code

27  Do Loops


Download ppt "Week 5.  Recap – For Each..Next  Personal Macro File  Immediate window  Object Variables Working with worksheets and workbooks  For Loops."

Similar presentations


Ads by Google