This is just my opinion...so take it with a grain of salt:
Wow, that's a lot of walls of code! You should take the time to format your code as it will make maintaining a lot easier. For instance, you have this sub:
Code:
Private Sub TabStrip2_Change()
Application.ScreenUpdating = False
If Me.TabStrip2.Value = 0 Then
Me.CommandButton1.Visible = True
Me.CommandButton2.Visible = True
Me.CommandButton3.Visible = True
Else
Me.CommandButton1.Visible = False
Me.CommandButton2.Visible = False
Me.CommandButton3.Visible = False
End If
If Me.TabStrip2.Value = 1 Then
Me.cbtnprintcharts.Visible = True
Me.CommandButton7.Visible = True
Me.CommandButton8.Visible = True
Else
Me.cbtnprintcharts.Visible = False
Me.CommandButton7.Visible = False
Me.CommandButton8.Visible = False
End If
If Me.TabStrip2.Value = 2 Then
Me.cbtnaddinjury.Visible = True
Me.cbtnplantifo.Visible = True
Me.CommandButton5.Visible = True
Else
Me.cbtnaddinjury.Visible = False
Me.cbtnplantifo.Visible = False
Me.CommandButton5.Visible = False
End If
If Me.TabStrip2.Value = 3 Then
Me.Label3.Visible = True
Me.Label4.Visible = True
Me.Label5.Visible = True
Me.ListBox1.Visible = True
Call populatelistbox
Me.Shapes("ReportFilters").Visible = msoTrue
Me.CommandButton4.Visible = True
Me.ListBox3.Visible = False
Me.ListBox2.Visible = False
Else
Me.Shapes("ReportFilters").Visible = msoFalse
Me.Label3.Visible = False
Me.Label4.Visible = False
Me.Label5.Visible = False
Me.ListBox1.Visible = False
Me.CommandButton4.Visible = False
End If
If Me.TabStrip2.Value = 4 Then
Me.ListBox2.Visible = True
Me.ListBox3.Visible = False
End If
If Me.TabStrip2.Value = 5 Then
Me.ListBox2.Visible = False
Me.ListBox3.Visible = True
Else
Me.ListBox3.Visible = False
End If
End Sub
which I'm sure works fine, but (in my opinion) formatting the code makes it a lot easier to follow:
Code:
Private Sub TabStrip2_Change()
Application.ScreenUpdating = False
If Me.TabStrip2.Value = 0 Then
Me.CommandButton1.Visible = True
Me.CommandButton2.Visible = True
Me.CommandButton3.Visible = True
Else
Me.CommandButton1.Visible = False
Me.CommandButton2.Visible = False
Me.CommandButton3.Visible = False
End If
If Me.TabStrip2.Value = 1 Then
Me.cbtnprintcharts.Visible = True
Me.CommandButton7.Visible = True
Me.CommandButton8.Visible = True
Else
Me.cbtnprintcharts.Visible = False
Me.CommandButton7.Visible = False
Me.CommandButton8.Visible = False
End If
If Me.TabStrip2.Value = 2 Then
Me.cbtnaddinjury.Visible = True
Me.cbtnplantifo.Visible = True
Me.CommandButton5.Visible = True
Else
Me.cbtnaddinjury.Visible = False
Me.cbtnplantifo.Visible = False
Me.CommandButton5.Visible = False
End If
If Me.TabStrip2.Value = 3 Then
Me.Label3.Visible = True
Me.Label4.Visible = True
Me.Label5.Visible = True
Me.ListBox1.Visible = True
Call populatelistbox
Me.Shapes("ReportFilters").Visible = msoTrue
Me.CommandButton4.Visible = True
Me.ListBox3.Visible = False
Me.ListBox2.Visible = False
Else
Me.Shapes("ReportFilters").Visible = msoFalse
Me.Label3.Visible = False
Me.Label4.Visible = False
Me.Label5.Visible = False
Me.ListBox1.Visible = False
Me.CommandButton4.Visible = False
End If
If Me.TabStrip2.Value = 4 Then
Me.ListBox2.Visible = True
Me.ListBox3.Visible = False
End If
If Me.TabStrip2.Value = 5 Then
Me.ListBox2.Visible = False
Me.ListBox3.Visible = True
Else
Me.ListBox3.Visible = False
End If
End Sub
Also, since your tabstrip can only have 1 value at a time, there's no reason to check if it's 0, then 1, then 2, then 3. etc. Perhaps a Case statement would declutter it a bit.
Another point. Take a look at what your code is doing and thing "hey...did I repeat myself a bunch of times?" If the answer is yes, you can probably simply it. For instance this:
Code:
Private Sub TabStrip1_Change()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Charts")
If Me.TabStrip1.Value = 0 Then
ws.ChartObjects(1).Visible = True
ws.ChartObjects(2).Visible = False
ws.ChartObjects(3).Visible = False
ws.ChartObjects(4).Visible = False
ws.ChartObjects(5).Visible = False
ws.ChartObjects(6).Visible = False
ws.ChartObjects(7).Visible = False
ws.ChartObjects(8).Visible = False
ws.ChartObjects(9).Visible = False
ws.ChartObjects(10).Visible = False
ws.ChartObjects(12).Visible = False
End If
If Me.TabStrip1.Value = 1 Then
ws.ChartObjects(1).Visible = False
ws.ChartObjects(2).Visible = False
ws.ChartObjects(3).Visible = False
ws.ChartObjects(4).Visible = False
ws.ChartObjects(5).Visible = False
ws.ChartObjects(6).Visible = False
ws.ChartObjects(7).Visible = False
ws.ChartObjects(8).Visible = False
ws.ChartObjects(9).Visible = False
ws.ChartObjects(10).Visible = False
ws.ChartObjects(12).Visible = True
End If
If Me.TabStrip1.Value = 2 Then
ws.ChartObjects(1).Visible = False
ws.ChartObjects(2).Visible = True
ws.ChartObjects(3).Visible = False
ws.ChartObjects(4).Visible = False
ws.ChartObjects(5).Visible = False
ws.ChartObjects(6).Visible = False
ws.ChartObjects(7).Visible = False
ws.ChartObjects(8).Visible = False
ws.ChartObjects(9).Visible = False
ws.ChartObjects(10).Visible = False
ws.ChartObjects(12).Visible = False
End If
If Me.TabStrip1.Value = 3 Then
ws.ChartObjects(1).Visible = False
ws.ChartObjects(2).Visible = False
ws.ChartObjects(3).Visible = True
ws.ChartObjects(4).Visible = False
ws.ChartObjects(5).Visible = False
ws.ChartObjects(6).Visible = False
ws.ChartObjects(7).Visible = False
ws.ChartObjects(8).Visible = False
ws.ChartObjects(9).Visible = False
ws.ChartObjects(10).Visible = False
ws.ChartObjects(12).Visible = False
End If
If Me.TabStrip1.Value = 4 Then
ws.ChartObjects(1).Visible = False
ws.ChartObjects(2).Visible = False
ws.ChartObjects(3).Visible = False
ws.ChartObjects(4).Visible = True
ws.ChartObjects(5).Visible = False
ws.ChartObjects(6).Visible = False
ws.ChartObjects(7).Visible = False
ws.ChartObjects(8).Visible = False
ws.ChartObjects(9).Visible = False
ws.ChartObjects(10).Visible = False
ws.ChartObjects(12).Visible = False
End If
If Me.TabStrip1.Value = 5 Then
ws.ChartObjects(1).Visible = False
ws.ChartObjects(2).Visible = False
ws.ChartObjects(3).Visible = False
ws.ChartObjects(4).Visible = False
ws.ChartObjects(5).Visible = True
ws.ChartObjects(6).Visible = False
ws.ChartObjects(7).Visible = False
ws.ChartObjects(8).Visible = False
ws.ChartObjects(9).Visible = False
ws.ChartObjects(10).Visible = False
ws.ChartObjects(12).Visible = False
End If
If Me.TabStrip1.Value = 6 Then
ws.ChartObjects(1).Visible = False
ws.ChartObjects(2).Visible = False
ws.ChartObjects(3).Visible = False
ws.ChartObjects(4).Visible = False
ws.ChartObjects(5).Visible = False
ws.ChartObjects(6).Visible = True
ws.ChartObjects(7).Visible = False
ws.ChartObjects(8).Visible = False
ws.ChartObjects(9).Visible = False
ws.ChartObjects(10).Visible = False
ws.ChartObjects(12).Visible = False
End If
If Me.TabStrip1.Value = 7 Then
ws.ChartObjects(1).Visible = False
ws.ChartObjects(2).Visible = False
ws.ChartObjects(3).Visible = False
ws.ChartObjects(4).Visible = False
ws.ChartObjects(5).Visible = False
ws.ChartObjects(6).Visible = False
ws.ChartObjects(7).Visible = True
ws.ChartObjects(8).Visible = False
ws.ChartObjects(9).Visible = False
ws.ChartObjects(10).Visible = False
ws.ChartObjects(12).Visible = False
End If
If Me.TabStrip1.Value = 8 Then
ws.ChartObjects(1).Visible = False
ws.ChartObjects(2).Visible = False
ws.ChartObjects(3).Visible = False
ws.ChartObjects(4).Visible = False
ws.ChartObjects(5).Visible = False
ws.ChartObjects(6).Visible = False
ws.ChartObjects(7).Visible = False
ws.ChartObjects(8).Visible = True
ws.ChartObjects(9).Visible = False
ws.ChartObjects(10).Visible = False
ws.ChartObjects(12).Visible = False
End If
If Me.TabStrip1.Value = 9 Then
ws.ChartObjects(1).Visible = False
ws.ChartObjects(2).Visible = False
ws.ChartObjects(3).Visible = False
ws.ChartObjects(4).Visible = False
ws.ChartObjects(5).Visible = False
ws.ChartObjects(6).Visible = False
ws.ChartObjects(7).Visible = False
ws.ChartObjects(8).Visible = False
ws.ChartObjects(9).Visible = True
ws.ChartObjects(10).Visible = False
ws.ChartObjects(12).Visible = False
End If
If Me.TabStrip1.Value = 10 Then
ws.ChartObjects(1).Visible = False
ws.ChartObjects(2).Visible = False
ws.ChartObjects(3).Visible = False
ws.ChartObjects(4).Visible = False
ws.ChartObjects(5).Visible = False
ws.ChartObjects(6).Visible = False
ws.ChartObjects(7).Visible = False
ws.ChartObjects(8).Visible = False
ws.ChartObjects(9).Visible = False
ws.ChartObjects(10).Visible = True
ws.ChartObjects(12).Visible = False
End If
End Sub
What if, at the start of the sub, you hide all of the chart objects. Then you just have to set 1 object to be visible depending on what the value is. Your 150 or so lines of code got reduced down to about 20. This will also make maintaining your code a lot easier. Imagine the edits you'd have to make if you wanted to hide and show ChartObjects(11)!
You can *greatly* simplify your code base...you should start there before adding new features.