Have userform & reams of code!

M

Mark \(InWales\)

Hello world

As you know I am new to VBA and trying to learn but what I could really do
with is some pointers in shortening code etc. The following code (not
written with the macro recorder!) is very long but I don't seem to be able
to shorten it with my limited knowledge... I also have a problem with
putting Else & End if's in the wrong slot - but you probably guessed that!
Anyone want to try and teach an old dog some new tricks.

Private Sub Command4_Click()
'This bit makes the correct number of frames visible depending on the user
input
Dim s As Variant
s = Text2.Text
If s = "" Then 'i.e. if no number is
entered then display msgbox
MsgBox "You must tell us how many products are going on this pallet!",
vbInformation
Frame2.Visible = False
Frame3.Visible = False
Frame4.Visible = False
Else
End If
On Error Resume Next
If s = "1" Then
Frame2.Visible = True
Frame3.Visible = False
Frame4.Visible = False
Else
End If
If s = "2" Then
Frame2.Visible = True
Frame3.Visible = True
Frame4.Visible = False
Else
If s = "3" Then
Frame2.Visible = True
Frame3.Visible = True
Frame4.Visible = True
Else
If s > "3" Then
MsgBox "You have entered " & s & ". Which bit of Max 3 do you not
understand?", vbInformation
Else
End If
End If
End If
End Sub

TIA
Mark (InWales)
 
B

Bob Phillips

Hi Mark,

A bit simpler

Private Sub Command4_Click()
'This bit makes the correct number of frames visible
'depending on the user input
Dim s As Variant
s = Text2.Text
Frame2.Visible = False
Frame3.Visible = False
Frame4.Visible = False
If s = "" Then 'i.e. if no number is entered then display msgbox
MsgBox "You must tell how many products are going on this pallet!",
_
vbInformation
ElseIf s = "1" Then
Frame2.Visible = True
ElseIf s = "2" Then
Frame2.Visible = True
Frame3.Visible = True
ElseIf s = "3" Then
Frame2.Visible = True
Frame3.Visible = True
Frame4.Visible = True
ElseIf s > "3" Then
MsgBox "You have entered " & s & ". The max is 3!", _
vbInformation
End If
End Sub
 
M

Mark \(InWales\)

Hi Bob

A bit simpler, it felt as if I was writing a book!

Many thanks Bob for taking the time

Mark
 
N

NickHK

Mark,
See if this helps.
<Air Code>
Dim s as long
s=val(Text2.Text)

select case s
case 0
MsgBox "You must tell us how many products are going on this pallet!",
vbInformation

case >3
MsgBox "You have entered " & s & ". Which bit of Max 3 do you not
understand?", vbInformation
end select

Frame2.Visible = ((s>0) and (s<=3))
Frame3.Visible = ((s>1) and (s<=3))
Frame4.Visible = ((s>2) and (s<=3))
</Air Code>

NickHK
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top