Excel/Macro rewrite

Advertisement


Question
Hi Tom

The following recorded macro does exactly what I want it to do.

It copies a range ("EE102:EF136") and pastes the values only at cell ("EE64") and then sorts the values in ascending order.

If I create an identical worksheet and rename it the code does not work.  I suspect it is because code refers specifically to one sheet “SPtemplate2”.

I do not know how to alter the code so that it works on the active sheet rather than one specifically named

Could you help me with this?

Thanks in advance.

Chris Mitchell


' rankaut1 Macro
'

'
   ActiveSheet.Calculate
   Range("A1").Select
  
   Range("EE102:EF136").Select
   Selection.Copy
   
   Range("EE64").Select
   Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
       :=False, Transpose:=False
   Application.CutCopyMode = False
   ActiveWorkbook.Worksheets("SPtemplate2").SORT.SortFields.Clear
   ActiveWorkbook.Worksheets("SPtemplate2").SORT.SortFields.Add Key:=Range( _
       "EE64"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
       xlSortNormal
   With ActiveWorkbook.Worksheets("SPtemplate2").SORT
       .SetRange Range("EE64:EF98")
       .Header = xlNo
       .MatchCase = False
       .Orientation = xlTopToBottom
       .SortMethod = xlPinYin
       .Apply
       
       Range("EV322").Select
       
       ActiveSheet.Calculate
   End With
End Sub

Answer
Chris Mitchell,

Below worked for me.


Sub ABC()
' rankaut1 Macro
'

'
   ActiveSheet.Calculate
   Range("A1").Select
  
   Range("EE102:EF136").Select
   Selection.Copy
   
   Range("EE64").Select
   Selection.PasteSpecial _
        Paste:=xlPasteValues, _
        Operation:=xlNone, _
        SkipBlanks:=False, _
        Transpose:=False
   Application.CutCopyMode = False
   ActiveSheet.Sort.SortFields.Clear
   ActiveSheet.Sort.SortFields.Add _
      Key:=Range("EE64"), _
      SortOn:=xlSortOnValues, _
      Order:=xlAscending, _
      DataOption:=xlSortNormal
   With ActiveSheet.Sort
       .SetRange Range("EE64:EF98")
       .Header = xlNo
       .MatchCase = False
       .Orientation = xlTopToBottom
       .SortMethod = xlPinYin
       .Apply
       
       Range("EV322").Select
       
       ActiveSheet.Calculate
   End With
End Sub

--
Regards,
Tom Ogilvy

About Excel
This topic answers questions related to Microsoft Excel spreadsheet (or workbook) stand-alone or Mircrosoft Office Excel including Excel 2003, Excel 2007, Office 2000, and Office XP. You can get Excel help on Excel formulas(or functions), Excell macros, charting in Excel, advanced features, and the general use of Excel. This does not provide a general Excel tutorial nor the basics of using a spreadsheet. It provides specific answers to using Microsoft Excel only. If you do not see your Excel question answered in this area then please ask an Excel question here

Excel

All Answers


Answers by Expert:


Ask Experts

Volunteer


Tom Ogilvy

Expertise

Selected as an Excel MVP by Microsoft since 1999. Answering Excel questions in Allexperts since its inception in 2001. Able to answer questions on almost all aspects of Excel's internal capabilities. If seeking a VBA solution, please specify that in your question itself so I give you the answer you want. [Excel has weak protection - if you are distributing an application, I don't answer questions on how to protect your project from your users.]

Experience

Extensive experience.

Education/Credentials
Master of Science (MS) degree Operations Research (ORSA)

Awards and Honors
Microsoft MVP in Excel.

©2016 About.com. All rights reserved.