I am relatively new to VBA and am trying to create a dashboard with a really long VBA code. The code is used to look-up values from multiple sheets, as well as replace any #N/A errors or 0's with a blank cell, and unprotect and protect the sheet. The code itself works, but runs incredibly slowly and freezes the Excel sheet. Any tips on how to make the code run faster would be greatly appreciated!
Sub RunDashboard()
Sheets("Dashboard").Select
ActiveSheet.Unprotect
Range("D2:D" & Cells(Rows.Count, "A").End(xlUp).Row).Select
Application.Goto Reference:="R2C4:R10000C4"
Selection.FormulaR1C1 =
"=VLOOKUP(RC1,MasterAssetList!R2C1:R10000C41,4,FALSE)"
Range("E2:E" & Cells(Rows.Count, "A").End(xlUp).Row).Select
Application.Goto Reference:="R2C5:R10000C5"
Selection.FormulaR1C1 =
"=VLOOKUP(RC1,MasterAssetList!R2C1:R10000C41,5,FALSE)"
Range("F2:F" & Cells(Rows.Count, "A").End(xlUp).Row).Select
Application.Goto Reference:="R2C6:R10000C6"
Selection.FormulaR1C1 =
"=VLOOKUP(RC1,MasterAssetList!R2C1:R10000C41,6,FALSE)"
Range("G2:G" & Cells(Rows.Count, "A").End(xlUp).Row).Select
Application.Goto Reference:="R2C7:R10000C7"
Selection.FormulaR1C1 =
"=VLOOKUP(RC1,MasterAssetList!R2C1:R10000C41,7,FALSE)"
Range("H2:H" & Cells(Rows.Count, "A").End(xlUp).Row).Select
Application.Goto Reference:="R2C8:R10000C8"
Selection.FormulaR1C1 =
"=VLOOKUP(RC1,MasterAssetList!R2C1:R10000C41,8,FALSE)"
Range("I2:I" & Cells(Rows.Count, "A").End(xlUp).Row).Select
Application.Goto Reference:="R2C9:R10000C9"
Selection.FormulaR1C1 =
"=VLOOKUP(RC1,MasterAssetList!R2C1:R10000C41,9,FALSE)"
Range("K2:K" & Cells(Rows.Count, "A").End(xlUp).Row).Select
Application.Goto Reference:="R2C11:R10000C11"
Selection.FormulaR1C1 =
"=VLOOKUP(RC1,MasterAssetList!R2C1:R10000C41,11,FALSE)"
Range("P2:P" & Cells(Rows.Count, "A").End(xlUp).Row).Select
Application.Goto Reference:="R2C16:R10000C16"
Selection.FormulaR1C1 =
"=VLOOKUP(RC1,MasterAssetList!R2C1:R10000C41,16,FALSE)"
Range("T2:T" & Cells(Rows.Count, "A").End(xlUp).Row).Select
Application.Goto Reference:="R2C20:R10000C20"
Selection.FormulaR1C1 =
"=VLOOKUP(RC1,MasterAssetList!R2C1:R10000C41,20,FALSE)"
Range("X2:X" & Cells(Rows.Count, "A").End(xlUp).Row).Select
Application.Goto Reference:="R2C24:R10000C24"
Selection.FormulaR1C1 =
"=VLOOKUP(RC1,MasterAssetList!R2C1:R10000C41,24,FALSE)"
Range("Y2:Y" & Cells(Rows.Count, "A").End(xlUp).Row).Select
Application.Goto Reference:="R2C25:R10000C25"
Selection.FormulaR1C1 =
"=VLOOKUP(RC1,MasterAssetList!R2C1:R10000C41,25,FALSE)"
Range("Z2:Z" & Cells(Rows.Count, "A").End(xlUp).Row).Select
Application.Goto Reference:="R2C26:R10000C26"
Selection.FormulaR1C1 =
"=VLOOKUP(RC1,MasterAssetList!R2C1:R10000C41,26,FALSE)"
Range("AA2:AA" & Cells(Rows.Count, "A").End(xlUp).Row).Select
Application.Goto Reference:="R2C27:R10000C27"
Selection.FormulaR1C1 =
"=VLOOKUP(RC1,MasterAssetList!R2C1:R10000C41,27,FALSE)"
Range("AB2:AB" & Cells(Rows.Count, "A").End(xlUp).Row).Select
Application.Goto Reference:="R2C28:R10000C28"
Selection.FormulaR1C1 =
"=VLOOKUP(RC1,MasterAssetList!R2C1:R10000C41,28,FALSE)"
Range("AH2:AH" & Cells(Rows.Count, "A").End(xlUp).Row).Select
Application.Goto Reference:="R2C34:R10000C34"
Selection.FormulaR1C1 =
"=VLOOKUP(RC1,MasterAssetList!R2C1:R10000C41,34,FALSE)"
Range("AI2:AI" & Cells(Rows.Count, "A").End(xlUp).Row).Select
Application.Goto Reference:="R2C35:R10000C35"
Selection.FormulaR1C1 =
"=VLOOKUP(RC1,MasterAssetList!R2C1:R10000C41,35,FALSE)"
Range("AJ2:AJ" & Cells(Rows.Count, "A").End(xlUp).Row).Select
Application.Goto Reference:="R2C36:R10000C36"
Selection.FormulaR1C1 =
"=VLOOKUP(RC1,MasterAssetList!R2C1:R10000C41,36,FALSE)"
Range("AK2:AK" & Cells(Rows.Count, "A").End(xlUp).Row).Select
Application.Goto Reference:="R2C37:R10000C37"
Selection.FormulaR1C1 =
"=VLOOKUP(RC1,MasterAssetList!R2C1:R10000C41,37,FALSE)"
Range("AL2:AL" & Cells(Rows.Count, "A").End(xlUp).Row).Select
Application.Goto Reference:="R2C38:R10000C38"
Selection.FormulaR1C1 =
"=VLOOKUP(RC1,MasterAssetList!R2C1:R10000C41,38,FALSE)"
Range("AM2:AM" & Cells(Rows.Count, "A").End(xlUp).Row).Select
Application.Goto Reference:="R2C39:R10000C39"
Selection.FormulaR1C1 =
"=VLOOKUP(RC1,MasterAssetList!R2C1:R10000C41,39,FALSE)"
Range("AN2:AN" & Cells(Rows.Count, "A").End(xlUp).Row).Select
Application.Goto Reference:="R2C40:R10000C40"
Selection.FormulaR1C1 =
"=VLOOKUP(RC1,MasterAssetList!R2C1:R10000C41,40,FALSE)"
Range("AO2:AO" & Cells(Rows.Count, "A").End(xlUp).Row).Select
Application.Goto Reference:="R2C41:R10000C41"
Selection.FormulaR1C1 =
"=VLOOKUP(RC1,MasterAssetList!R2C1:R10000C41,41,FALSE)"
Range("AP2:AP" & Cells(Rows.Count, "A").End(xlUp).Row).Select
Application.Goto Reference:="R2C42:R10000C42"
Selection.FormulaR1C1 =
"=VLOOKUP(RC1,MasterAssetList!R2C1:R10000C45,42,FALSE)"
Range("AQ2:AQ" & Cells(Rows.Count, "A").End(xlUp).Row).Select
Application.Goto Reference:="R2C43:R10000C43"
Selection.FormulaR1C1 =
"=VLOOKUP(RC1,MasterAssetList!R2C1:R10000C45,43,FALSE)"
Range("L2:L" & Cells(Rows.Count, "A").End(xlUp).Row).Select
Application.Goto Reference:="R2C11:R10000C11"
Selection.FormulaR1C1 = _
"=IF(RC2=""Deleted"",VLOOKUP(RC1,MasterAssetList!R2C1:R10000C45,12,FALSE),
VLOOKUP(RC1, DataPull!R2C1:R10000C62,3, FALSE))"
Range("M2:M" & Cells(Rows.Count, "A").End(xlUp).Row).Select
Application.Goto Reference:="R2C13:R10000C13"
Selection.FormulaR1C1 = _
"=IF(RC2=""Deleted"",VLOOKUP(RC1,MasterAssetList!R2C1:R10000C45,13,FALSE),
VLOOKUP(RC1, DataPull!R2C1:R10000C62,21, FALSE))"
Range("N2:N" & Cells(Rows.Count, "A").End(xlUp).Row).Select
Application.Goto Reference:="R2C14:R10000C14"
Selection.FormulaR1C1 = _
"=IF(RC2=""Deleted"",VLOOKUP(RC1,MasterAssetList!R2C1:R10000C45,14,FALSE),
VLOOKUP(RC1, DataPull!R2C1:R10000C62,22, FALSE))"
Range("O2:O" & Cells(Rows.Count, "A").End(xlUp).Row).Select
Application.Goto Reference:="R2C15:R10000C15"
Selection.FormulaR1C1 = _
"=IF(RC2=""Deleted"",VLOOKUP(RC1,MasterAssetList!R2C1:R10000C45,15,FALSE),
VLOOKUP(RC1, DataPull!R2C1:R10000C62,4, FALSE))"
Range("Q2:Q" & Cells(Rows.Count, "A").End(xlUp).Row).Select
ActiveCell.FormulaR1C1 = _
"=IF(RC2=""Deleted"",VLOOKUP(RC1,MasterAssetList!R2C1:R10000C45,17,FALSE),
VLOOKUP(RC1, DataPull!R2C1:R10000C62,7, FALSE))"
Range("R2:R" & Cells(Rows.Count, "A").End(xlUp).Row).Select
Application.Goto Reference:="R2C18:R10000C18"
Selection.FormulaR1C1 = _
"=IF(RC2=""Deleted"",VLOOKUP(RC1,MasterAssetList!R2C1:R10000C45,18,FALSE),
VLOOKUP(RC1, DataPull!R2C1:R10000C62,18, FALSE))"
Range("S2:S" & Cells(Rows.Count, "A").End(xlUp).Row).Select
Application.Goto Reference:="R2C19:R10000C19"
Selection.FormulaR1C1 = _
"=IF(RC2=""Deleted"",VLOOKUP(RC1,MasterAssetList!R2C1:R10000C45,19,FALSE),
VLOOKUP(RC1, DataPull!R2C1:R10000C62,14, FALSE))"
Range("U2:U" & Cells(Rows.Count, "A").End(xlUp).Row).Select
Application.Goto Reference:="R2C21:R10000C21"
Selection.FormulaR1C1 = _
"=IF(RC2=""Deleted"",VLOOKUP(RC1,MasterAssetList!R2C1:R10000C45,21,FALSE),
VLOOKUP(RC1, DataPull!R2C1:R10000C62,5, FALSE))"
Range("V2:V" & Cells(Rows.Count, "A").End(xlUp).Row).Select
Application.Goto Reference:="R2C22:R10000C22"
Selection.FormulaR1C1 = _
"=IF(RC2=""Deleted"",VLOOKUP(RC1,MasterAssetList!R2C1:R10000C45,22,FALSE),
VLOOKUP(RC1, DataPull!R2C1:R10000C62,30, FALSE))"
Range("W2:W" & Cells(Rows.Count, "A").End(xlUp).Row).Select
Application.Goto Reference:="R2C23:R10000C23"
Selection.FormulaR1C1 = _
"=IF(RC2=""Deleted"",VLOOKUP(RC1,MasterAssetList!R2C1:R10000C45,23,FALSE),
VLOOKUP(RC1, DataPull!R2C1:R10000C62,31, FALSE))"
Range("AD2:AD" & Cells(Rows.Count, "A").End(xlUp).Row).Select
Application.Goto Reference:="R2C30:R10000C30"
Selection.FormulaR1C1 = _
"=IF(RC2=""Deleted"",VLOOKUP(RC1,MasterAssetList!R2C1:R10000C45,30,FALSE),
VLOOKUP(RC1, DataPull!R2C1:R10000C62,23, FALSE))"
Range("AE2:AE" & Cells(Rows.Count, "A").End(xlUp).Row).Select
Application.Goto Reference:="R2C31:R10000C31"
Selection.FormulaR1C1 = _
"=IF(RC2=""Deleted"",VLOOKUP(RC1,MasterAssetList!R2C1:R10000C45,31,FALSE),
VLOOKUP(RC1, DataPull!R2C1:R10000C62,24, FALSE))"
Range("AF2:AF" & Cells(Rows.Count, "A").End(xlUp).Row).Select
Application.Goto Reference:="R2C32:R10000C32"
Selection.FormulaR1C1 = _
"=IF(RC2=""Deleted"",VLOOKUP(RC1,MasterAssetList!R2C1:R10000C45,32,FALSE),
VLOOKUP(RC1, DataPull!R2C1:R10000C62,52, FALSE))"
Sheets("Dashboard").Select
On Error Resume Next
With Range("A2:A10000")
.Value = .Value
.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End With
Sheets("Dashboard").Select
Dim c As Range, LastRow As Long
LastRow = Cells(Cells.Rows.Count, "A").End(xlUp).Row
For Each c In Range("A1:AQ1" & LastRow)
If Application.IsNA(c.Value) Then
c.Value = ""
End If
Next
Dim rng As Range
For Each rng In Range("A1:AQ1" & LastRow)
If rng.Value = 0 Then
rng.Value = ""
End If
Next
Sheets("Dashboard").Select
Cells.Select
Application.CutCopyMode = False
Selection.Copy
Cells.Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFormattingCells:=True, AllowSorting:=True, AllowFiltering:=True
MsgBox "Your dashboard has finished running."
End Sub