PDA

View Full Version : Solved: Making my code smaller



Lutoniall
03-23-2008, 12:28 PM
Is there any way of making this code smaller, thanks in advance

Case 0
line1.Visible = True
line2.Visible = True
line3.Visible = True
line4.Visible = True
line5.Visible = True
line6.Visible = True
line7.Visible = False
Case 1
line1.Visible = False
line2.Visible = False
line3.Visible = False
line4.Visible = True
line5.Visible = True
line6.Visible = False
line7.Visible = False
Case 2
line1.Visible = False
line2.Visible = True
line3.Visible = True
line4.Visible = True
line5.Visible = False
line6.Visible = True
line7.Visible = True
Case 3
line1.Visible = False
line2.Visible = False
line3.Visible = True
line4.Visible = True
line5.Visible = True
line6.Visible = True
line7.Visible = True
Case 4
line1.Visible = True
line2.Visible = False
line3.Visible = False
line4.Visible = True
line5.Visible = True
line6.Visible = False
line7.Visible = True
Case 5
line1.Visible = True
line2.Visible = False
line3.Visible = True
line4.Visible = False
line5.Visible = True
line6.Visible = True
line7.Visible = True
Case 6
line1.Visible = True
line2.Visible = True
line3.Visible = True
line4.Visible = False
line5.Visible = True
line6.Visible = True
line7.Visible = True
Case 7
line1.Visible = False
line2.Visible = False
line3.Visible = True
line4.Visible = True
line5.Visible = True
line6.Visible = False
line7.Visible = False
Case 8
line1.Visible = True
line2.Visible = True
line3.Visible = True
line4.Visible = True
line5.Visible = True
line6.Visible = True
line7.Visible = True
Case 9
line1.Visible = True
line2.Visible = False
line3.Visible = True
line4.Visible = True
line5.Visible = True
line6.Visible = False
line7.Visible = True
End Select

Norie
03-23-2008, 12:33 PM
It would help to know what line1, line2 etc are.

mdmackillop
03-23-2008, 01:27 PM
Looks very familiar (http://vbaexpress.com/forum/showthread.php?t=18482)

Sub SetLines()
Case 0
arr1 = Array(1, 2, 3, 4, 5, 6)
arr2 = Array(7)
Call Lines(arr1, arr2)
Case 1
arr1 = Array(1, 2, 3, 6, 7)
arr2 = Array(4, 5)
Call Lines(arr1, arr2)
'etc.
End Sub

Sub Lines(arr1, arr2)
For Each a In arr1
Me.Controls("line" & a) = True
Next
For Each a In arr2
Me.Controls("line" & a) = False
Next
End Sub

Bob Phillips
03-23-2008, 03:12 PM
Another way



Case 0
SetLines True, True, True, True, True, True, False
Case 1
SetLines False, False, False, True, True, False, False
Case 2
SetLines False, True, True, True, False, True, True
Case 3
SetLines False, False, True, True, True, True, True
Case 4
SetLines True, False, False, True, True, False, True
Case 5
SetLines True, False, True, False, True, True, True
Case 6
SetLines True, True, True, False, True, True, True
Case 7
SetLines False, False, True, True, True, False, False
Case 8
SetLines True, True, True, True, True, True, True
Case 9
SetLines True, False, True, True, True, False, True
End Select

Private Sub SetLines(l1 As Boolean, l2 As Boolean, l3 As Boolean, _
l4 As Boolean, l5 As Boolean, l6 As Boolean, _
l7 As Boolean)
line1.Visible = l1
line2.Visible = l2
line3.Visible = l3
line4.Visible = l4
line5.Visible = l5
line6.Visible = l6
line7.Visible = l7
End Sub

Northwolves
03-24-2008, 05:31 AM
line1.Visible = Index Like "[!1-3,7]"
line2.Visible = Index Like "[0,2,6,8]"
line3.Visible = Index Like "[!1,4]"
line4.Visible = Index Like "[!5-6]"
line5.Visible = Index Like "[!2]"
line6.Visible = Index Like "[0,2,3,5,6,8]"
line7.Visible = Index Like "[!1,7]"


Regards
Northwolves

grichey
03-24-2008, 02:57 PM
line1.Visible = Index Like "[!1-3,7]"
line2.Visible = Index Like "[0,2,6,8]"
line3.Visible = Index Like "[!1,4]"
line4.Visible = Index Like "[!5-6]"
line5.Visible = Index Like "[!2]"
line6.Visible = Index Like "[0,2,3,5,6,8]"
line7.Visible = Index Like "[!1,7]"


Regards
Northwolves

I haven't tried this yet. Does it work? Clever!

Northwolves
03-24-2008, 06:32 PM
I haven't tried this yet. Does it work? Clever!

Sure.And the comma is not necessary.


line1.Visible = Index Like "[!1237]"
line2.Visible = Index Like "[0268]"
line3.Visible = Index Like "[!14]"
line4.Visible = Index Like "[!56]"
line5.Visible = Index Like "[!2]"
line6.Visible = Index Like "[!1479]"
line7.Visible = Index Like "[!17]"


Regards
Northwolves