Making an idiot proof one step sheet.

clubagreenie

New Member
Joined
Sep 12, 2019
Messages
3
Have data that is being extracted from another source. I need to make it usable by a variety of people (hence idiot proof) so they can just create the data and copy, than open excel and single keystroke to paste etc. as below.

User opens excel, Ctrl+Shift+R;
•Paste copied data - working.
•Deleting columns - working, could be shortened?
•Find and replace data - working, could be shortened?
•Add and format new column (F) - working, could use some improvement.
•Autofit columns - working.
•Insert formula into cells in new column (F) - problem area. Formula is =(YEAR(NOW())-YEAR(E2)), want it to paste into row (F) and as its based on data in row (E) paste to the end of the data in (E).
•Add other columns and heading - sure can be improved as using select doesn't seem to make people happy.
•Autofilter data created in (F) - working.
•Protect and save sheet - working. But would like this to save to external file in new sheet with the sheet named for that report days date. Which would be the next working day.

Code to date as follows. Many thanks in advance for any assistance given.



J


Sub ReportPrep()
'
' ReportPrep Macro
'
' Keyboard Shortcut: Ctrl+Shift+R
'
'paste - OK
ActiveSheet.Paste Destination:=Sheets("working").Range("A1")


'deleteColumns - OK
Sheets("working").Range("M:S").Delete Shift:=xlToLeft
Sheets("working").Range("K:K").Delete Shift:=xlToLeft
Sheets("working").Range("E:G").Delete Shift:=xlToLeft
Sheets("working").Range("A:B").Delete Shift:=xlToLeft


'findReplace -OK
Range("A:A").Replace What:="Hand RNS", Replacement:="Hand", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Range("A:A").Replace What:="Ortho Fracture RNS", Replacement:="OrthoF", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Range("A:A").Replace What:="Ortho Gen RNS", Replacement:="OrthoG", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False


'insertAge column F - OK
Range("F:F").EntireColumn.Insert
NumberFormat = "General"

'add headings - OK (improve/del select?)
Sheets("working").Range("F1").Select
ActiveCell.FormulaR1C1 = "AGE"
Sheets("working").Range("H1").Select
ActiveCell.FormulaR1C1 = "Height"
Sheets("working").Range("I1").Select
ActiveCell.FormulaR1C1 = "Weight"
Sheets("working").Range("J1").Select
ActiveCell.FormulaR1C1 = "Consent"

'autofitColumns - OK
Worksheets("working").Columns("A:J").AutoFit



'calculateAge
'paste formula to end of data range in E
'F2 > to data range E2 to end of data in E
'Formula = "=(YEAR(NOW())-YEAR(E2))"]

'filterAge - OK
'Selection.AutoFilter
'ActiveSheet.Range("$A$1:$J$75").AutoFilter Field:=6, Criteria1:=">=3", _
'Operator:=xlAnd, Criteria2:="<=16"


'protectSheet - OK
'Sheets("working").Protect

'saveWorkbook
ActiveWorkbook.Save
 

jolivanes

Well-known Member
Joined
Sep 5, 2004
Messages
1,430
The deleting of the Columns can be shortened to
Code:
Sheets("Working").Range("A:B, E:G, K:K, M:S").Delete
The replacing I would do with arrays.
The advantage is that if you get more values to be changed, all you need to do is add to the arrays.
Code:
Dim oldMed, newMed, i As Long
oldMed = Array("Hand RNS", "Ortho Fracture RNS", "Ortho Gen RNS")
newMed = Array("Hand", "OrthoF", "OrthoG")
For i = LBound(oldMed) To UBound(oldMed)
Range("A:A").Replace What:=oldMed(i), Replacement:=newMed(i), LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Headers could be entered like this.
Code:
With Sheets("working").Range("F1")
.Value = "Age"
.Offset(, 2).Value = "Height"
.Offset(, 3).Value = "Weight"
.Offset(, 4).Value = "Consent"
End With
 

Michael M

Well-known Member
Joined
Oct 27, 2005
Messages
18,283
Office Version
2013
Platform
Windows
This will do the formula down col "F"

Code:
Range("F2:F" & Cells(Rows.Count, "E").End(xlUp).Row).Formula = "=(YEAR(NOW())-YEAR(E2))"
 

Forum statistics

Threads
1,084,744
Messages
5,379,571
Members
401,613
Latest member
KarimK9

Some videos you may like

This Week's Hot Topics

  • VBA code giving errors and stopping Excel
    Hello Experts, I have this code being used to loop through files in a file path, and copy specific data to another sheet. It is giving me several...
  • Disable MsgBox message
    Morning, I have a userform where if i leave a ComboBox empty i see a MsgBox warning me that i must enter an invoice number. It is this MsgBox i...
  • Macro Recorder into VBA, Copy Paste Data Filled Cells
    Hi Everyone, I have a macro recorder file that takes a selection of data, copies, then pastes into a new sheet on ("A2:B2") The issue is my...
  • Number format changes while pasting into a cell
    Hi, I am trying to paste a number 180204524303 from an email to an excel cell, however, whenever i try to do so , the the paste value appears as...
  • Collating data
    Hello all. Could someone please help. I am trying to pull all column data from multiple sheets (24 I total so far) into 1 master sheet without...
  • Sum Multiple Columns Based on Multiple Criteria
    I am trying to consolidate data by summing columns G through M based on material, plant, vendor, and fiscal year being identical. The period does...
Top