Hey guys, I've got a little project I'm working on. More of a personal project than anything. I making a workbook that I can build, store, and analyze magic the gathering deck lists. I have a userform that allows me to create a new sheet based on a named whatever name I give it, and then add card data to a list in that new sheet. In order to analyze the decks, I have certain ranges on each sheet that have formulas of the stats I want to track. I wasn't really sure how to do this in a short compact manor, so my code is quite long and cumbersome. Now, when I try to have the code create charts I'm getting the runtime error 7: Out of Memory. Would you guys mind looking over my code, and help me make it less taxing on my system? It breaks on the Red Highlighted line. Here's the code:
Thank You!
Code:
Private Sub cb_Create_Click()Dim lRow As Long
Dim wb As Workbook
Dim ws As Worksheet
Dim ws1 As Worksheet
Dim cht As Chart
Set wb = ThisWorkbook
Set ws1 = wb.Sheets("Sheet1")
lRow = ws1.Cells(Rows.Count, 1).End(xlUp).Offset(1).Row
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
If tb_Name = "" Then
MsgBox "Name your deck."
GoTo CleanUp
End If
For Each ws In ThisWorkbook.Sheets
If ws.Name = tb_Name.Text Then
MsgBox "That name is already used. Try something else."
GoTo CleanUp
End If
Next
Sheets.Add(After:=ws1).Name = tb_Name.Text
Sheet1.Activate
ws1.Cells(lRow, 1) = tb_Name.Text
cb_Add.Enabled = True
cb_Create.Enabled = False
Set ws = wb.Sheets(tb_Name.Text)
With ws
.Range("A1") = "Main Deck"
.Range("E1") = "Sideboard"
.Range("A2") = "Card Name"
.Range("B2") = "Card Type"
.Range("C2") = "Casting Cost"
.Range("D2") = "Converted Mana Cost"
.Range("E2") = "Card Name"
.Range("F2") = "Card Type"
.Range("G2") = "Casting Cost"
.Range("H2") = "Converted Mana Cost"
.Range("I2") = "0"
.Range("J2") = "1"
.Range("K2") = "2"
.Range("L2") = "3"
.Range("M2") = "4"
.Range("N2") = "5"
.Range("O2") = "6"
.Range("P2") = "7+"
.Range("Q2") = "Average"
.Range("I4") = "W"
.Range("J4") = "U"
.Range("K4") = "B"
.Range("L4") = "R"
.Range("M4") = "G"
.Range("N4") = "CL"
.Range("I6") = "Creature"
.Range("J6") = "Artifact"
.Range("K6") = "Enchantment"
.Range("L6") = "Planeswalker"
.Range("M6") = "Instant"
.Range("N6") = "Sorcery"
.Range("O6") = "Land"
.Range("I3").Formula = "=COUNTIF($D$3:$D$1000, 0)"
.Range("J3").Formula = "=COUNTIF($D$3:$D$1000, 1)"
.Range("K3").Formula = "=COUNTIF($D$3:$D$1000, 2)"
.Range("L3").Formula = "=COUNTIF($D$3:$D$1000, 3)"
.Range("M3").Formula = "=COUNTIF($D$3:$D$1000, 4)"
.Range("N3").Formula = "=COUNTIF($D$3:$D$1000, 5)"
.Range("O3").Formula = "=COUNTIF($D$3:$D$1000, 6)"
.Range("P3").Formula = "=COUNTIF($D$3:$D$1000, "">= 7"")"
.Range("Q3").Formula = "=AVERAGE($D:$D)"
.Range("I5").Formula = "=COUNTIF($C3:$C1000, ""*W*"")"
.Range("J5").Formula = "=COUNTIF($C3:$C1000, ""*U*"")"
.Range("K5").Formula = "=COUNTIF($C3:$C1000, ""*B*"")"
.Range("L5").Formula = "=COUNTIF($C3:$C1000, ""*R*"")"
.Range("M5").Formula = "=COUNTIF($C3:$C1000, ""*G*"")"
.Range("N5").Formula = "=COUNTIF($C3:$C1000, "">= 0"")"
.Range("I7").Formula = "=COUNTIF($B$3:$B$1000, ""*Creature*"")"
.Range("J7").Formula = "=COUNTIF($B$3:$B$1000, ""*Artifact*"")"
.Range("K7").Formula = "=COUNTIF($B$3:$B$1000, ""*Enchantment*"")"
.Range("L7").Formula = "=COUNTIF($B$3:$B$1000, ""*Planeswalker*"")"
.Range("M7").Formula = "=COUNTIF($B$3:$B$1000, ""*Instant*"")"
.Range("N7").Formula = "=COUNTIF($B$3:$B$1000, ""*Sorcery*"")"
.Range("O7").Formula = "=COUNTIF($B$3:$B$1000, ""*Land*"")"
.Cells.EntireColumn.AutoFit
End With
Set cht = ws.Shapes.AddChart.Chart
With cht
[COLOR=#ff0000] .Name = "CMC"[/COLOR]
.ApplyChartTemplate ( _
"C:\Users\ESTHERRAY\AppData\Roaming\Microsoft\Templates\Charts\CMC.crtx")
.SetSourceData Source:=ws.Range("I2:P3")
.ChartTitle.Text = "Converted Mana Cost"
End With
CleanUp:
Call pop_cb
ThisWorkbook.Save
On Error Resume Next
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
Exit Sub
End Sub
Thank You!