more than one Select All Checkboxes for each frame - vba

Following Userform has 4 (Four) Select All Check-boxes.
SelectAllE for Eastern Europe
SelectAllA for Middle East & Africa
SelectAllL for Latin America & Caribbean
SA for Select All Regions (Working)
only the fourth one is working correctly
Following are codes for each Checkboxes
Private Sub SA_Click() ' this one is working Correctly
Dim ctl As Control
Dim j As Long
For Each ctl In Me.Controls
If TypeOf ctl Is MSForms.CheckBox Then
If Me.Controls(ctl.Name).Value = True Then
Me.Bulgaria.Value = True
Me.Croatia.Value = True
Me.Croatia.Value = True
Me.czechrepublic.Value = True
Me.Estonia.Value = True
Me.Hungary.Value = True
Me.Latvia.Value = True
Me.Lithuania.Value = True
Me.Macedonia.Value = True
Me.Poland.Value = True
Me.Romania.Value = True
Me.Russia.Value = True
Me.Ukraine.Value = True
Me.Bahrain.Value = True
Me.CoteD.Value = True
Me.Egypt.Value = True
Me.Ghana.Value = True
Me.Iraq.Value = True
Me.Kenya.Value = True
Me.Kuwait.Value = True
Me.Morocco.Value = True
Me.Namibia.Value = True
Me.Nigeria.Value = True
Me.Oman.Value = True
Me.Palestine.Value = True
Me.Qatar.Value = True
Me.Rwanda.Value = True
Me.SaudiArabia.Value = True
Me.Turkey.Value = True
Me.Uganda.Value = True
Me.UAE.Value = True
Me.Zimbabwe.Value = True
Me.Chile.Value = True
Me.Mexico.Value = True
Me.Colombia.Value = True
Else
Me.Bulgaria.Value = False
Me.Croatia.Value = False
Me.Croatia.Value = False
Me.czechrepublic.Value = False
Me.Estonia.Value = False
Me.Hungary.Value = False
Me.Latvia.Value = False
Me.Lithuania.Value = False
Me.Macedonia.Value = False
Me.Poland.Value = False
Me.Romania.Value = False
Me.Russia.Value = False
Me.Ukraine.Value = False
Me.Bahrain.Value = False
Me.CoteD.Value = False
Me.Egypt.Value = False
Me.Ghana.Value = False
Me.Iraq.Value = False
Me.Kenya.Value = False
Me.Kuwait.Value = False
Me.Morocco.Value = False
Me.Namibia.Value = False
Me.Nigeria.Value = False
Me.Oman.Value = False
Me.Palestine.Value = False
Me.Qatar.Value = False
Me.Rwanda.Value = False
Me.SaudiArabia.Value = False
Me.Turkey.Value = False
Me.Uganda.Value = False
Me.UAE.Value = False
Me.Zimbabwe.Value = False
End If
End If
Next
End Sub
Private Sub SelectallE_Click() ' this one is not working Correctly
Dim ctl As Control
Dim j As Long
For Each ctl In Me.Controls
If TypeOf ctl Is MSForms.CheckBox Then
If Me.Controls(ctl.Name).Value = True Then
Me.Bulgaria.Value = True
Me.Croatia.Value = True
Me.Croatia.Value = True
Me.czechrepublic.Value = True
Me.Estonia.Value = True
Me.Hungary.Value = True
Me.Latvia.Value = True
Me.Lithuania.Value = True
Me.Macedonia.Value = True
Me.Poland.Value = True
Me.Romania.Value = True
Me.Russia.Value = True
Me.Ukraine.Value = True
Else
Me.Bulgaria.Value = False
Me.Croatia.Value = False
Me.Croatia.Value = False
Me.czechrepublic.Value = False
Me.Estonia.Value = False
Me.Hungary.Value = False
Me.Latvia.Value = False
Me.Lithuania.Value = False
Me.Macedonia.Value = False
Me.Poland.Value = False
Me.Romania.Value = False
Me.Russia.Value = False
Me.Ukraine.Value = False
Me.Chile.Value = False
Me.Mexico.Value = False
Me.Colombia.Value = False
End If
End If
Next
End Sub
Private Sub SelectAllA_Click() ' this one is not working Correctly
Dim ctl As Control
Dim j As Long
For Each ctl In Me.Controls
If TypeOf ctl Is MSForms.CheckBox Then
If Me.Controls(ctl.Name).Value = True Then
Me.Bahrain.Value = True
Me.CoteD.Value = True
Me.Egypt.Value = True
Me.Ghana.Value = True
Me.Iraq.Value = True
Me.Kenya.Value = True
Me.Kuwait.Value = True
Me.Morocco.Value = True
Me.Namibia.Value = True
Me.Nigeria.Value = True
Me.Oman.Value = True
Me.Palestine.Value = True
Me.Qatar.Value = True
Me.Rwanda.Value = True
Me.SaudiArabia.Value = True
Me.Turkey.Value = True
Me.Uganda.Value = True
Me.UAE.Value = True
Me.Zimbabwe.Value = True
Else
Me.Bahrain.Value = False
Me.CoteD.Value = False
Me.Egypt.Value = False
Me.Ghana.Value = False
Me.Iraq.Value = False
Me.Kenya.Value = False
Me.Kuwait.Value = False
Me.Morocco.Value = False
Me.Namibia.Value = False
Me.Nigeria.Value = False
Me.Oman.Value = False
Me.Palestine.Value = False
Me.Qatar.Value = False
Me.Rwanda.Value = False
Me.SaudiArabia.Value = False
Me.Turkey.Value = False
Me.Uganda.Value = False
Me.UAE.Value = False
Me.Zimbabwe.Value = False
End If
End If
Next
End Sub
Private Sub SelectAllL_Click() ' this one is not working Correctly
Dim ctl As Control
Dim j As Long
For Each ctl In Me.Controls
If TypeOf ctl Is MSForms.CheckBox Then
If Me.Controls(ctl.Name).Value = True Then
Me.Chile.Value = True
Me.Mexico.Value = True
Me.Colombia.Value = True
Else
Me.Chile.Value = False
Me.Mexico.Value = False
Me.Colombia.Value = False
End If
End If
Next
End Sub

Your code is too complicated, why not keeping it more simple? Since you are inside the Click event you know the control and don't need to loop each control of the userform!
Private Sub SA_Click()
SelectAllA.Value = SA.Value
SelectAllL.Value = SA.Value
SelectallE.Value = SA.Value
End Sub
Private Sub SelectallE_Click()
Bulgaria.Value = SelectallE.Value
Croatia.Value = SelectallE.Value
Croatia.Value = SelectallE.Value
czechrepublic.Value = SelectallE.Value
Estonia.Value = SelectallE.Value
Hungary.Value = SelectallE.Value
Latvia.Value = SelectallE.Value
Lithuania.Value = SelectallE.Value
Macedonia.Value = SelectallE.Value
Poland.Value = SelectallE.Value
Romania.Value = SelectallE.Value
Russia.Value = SelectallE.Value
Ukraine.Value = SelectallE.Value
End Sub
Private Sub SelectAllA_Click()
Bahrain.Value = SelectAllA.Value
CoteD.Value = SelectAllA.Value
Egypt.Value = SelectAllA.Value
Ghana.Value = SelectAllA.Value
Iraq.Value = SelectAllA.Value
Kenya.Value = SelectAllA.Value
Kuwait.Value = SelectAllA.Value
Morocco.Value = SelectAllA.Value
Namibia.Value = SelectAllA.Value
Nigeria.Value = SelectAllA.Value
Oman.Value = SelectAllA.Value
Palestine.Value = SelectAllA.Value
Qatar.Value = SelectAllA.Value
Rwanda.Value = SelectAllA.Value
SaudiArabia.Value = SelectAllA.Value
Turkey.Value = SelectAllA.Value
Uganda.Value = SelectAllA.Value
UAE.Value = SelectAllA.Value
Zimbabwe.Value = SelectAllA.Value
End Sub
Private Sub SelectAllL_Click()
Chile.Value = SelectAllL.Value
Mexico.Value = SelectAllL.Value
Colombia.Value = SelectAllL.Value
End Sub

Related

VBA Procedure too large; having trouble running a sub procedure

I've divided an excel worksheet into different sections, each section being 20 rows in size (example: Section 1 = rows 132 to 152, Section 2 = rows 153 to 173, etc.). There are 100 sections. I'm running a procedure in VBA that, for each section, will hide a certain number of rows based on a desired number of rows for each section. After about running the routine on 23 sections, I get a "Procedure too Large" error. I was told that I should run a sub procedure to solve the problem. I'm not sure how to do that. I'm using Sub proc1(), but it's not working. Here is the first part of the code, followed by the Sub proc1(). It's not working. I'm now getting the following error immediately after the Sup proc1() line:
Ambiguous name detected: Worksheet_Change
If anyone can help me with the proper code after the Sub proc1() that would help immensely!
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Unprotect
ActiveSheet.Activate
If Not Application.Intersect(Range("G20"), Range(Target.Address)) Is Nothing Then
Select Case Target.Value
Case Is = "0": Rows("132:152").EntireRow.Hidden = True
Case Is = "1": Rows("134:152").EntireRow.Hidden = True
Rows("123:133").EntireRow.Hidden = False
Case Is = "2": Rows("135:152").EntireRow.Hidden = True
Rows("123:134").EntireRow.Hidden = False
Case Is = "3": Rows("136:152").EntireRow.Hidden = True
Rows("123:135").EntireRow.Hidden = False
Case Is = "4": Rows("137:152").EntireRow.Hidden = True
Rows("123:136").EntireRow.Hidden = False
Case Is = "5": Rows("138:152").EntireRow.Hidden = True
Rows("123:137").EntireRow.Hidden = False
Case Is = "6": Rows("139:152").EntireRow.Hidden = True
Rows("123:138").EntireRow.Hidden = False
Case Is = "7": Rows("140:152").EntireRow.Hidden = True
Rows("123:139").EntireRow.Hidden = False
Case Is = "8": Rows("141:152").EntireRow.Hidden = True
Rows("123:140").EntireRow.Hidden = False
Case Is = "9": Rows("142:152").EntireRow.Hidden = True
Rows("123:141").EntireRow.Hidden = False
Case Is = "10": Rows("143:152").EntireRow.Hidden = True
Rows("123:142").EntireRow.Hidden = False
Case Is = "11": Rows("144:152").EntireRow.Hidden = True
Rows("123:143").EntireRow.Hidden = False
Case Is = "12": Rows("145:152").EntireRow.Hidden = True
Rows("123:144").EntireRow.Hidden = False
Case Is = "13": Rows("146:152").EntireRow.Hidden = True
Rows("123:145").EntireRow.Hidden = False
Case Is = "14": Rows("147:152").EntireRow.Hidden = True
Rows("123:146").EntireRow.Hidden = False
Case Is = "15": Rows("148:152").EntireRow.Hidden = True
Rows("123:147").EntireRow.Hidden = False
Case Is = "16": Rows("149:152").EntireRow.Hidden = True
Rows("123:148").EntireRow.Hidden = False
Case Is = "17": Rows("150:152").EntireRow.Hidden = True
Rows("123:149").EntireRow.Hidden = False
Case Is = "18": Rows("151:152").EntireRow.Hidden = True
Rows("123:150").EntireRow.Hidden = False
Case Is = "19": Rows("152:152").EntireRow.Hidden = True
Rows("123:151").EntireRow.Hidden = False
Case Is = "20": Rows("123:152").EntireRow.Hidden = False
End Select
End If
and so on...then:
If Not Application.Intersect(Range("G43"), Range(Target.Address)) Is Nothing Then
Select Case Target.Value
Case Is = "0": Rows("615:635").EntireRow.Hidden = True
Case Is = "1": Rows("617:635").EntireRow.Hidden = True
Rows("615:616").EntireRow.Hidden = False
Case Is = "2": Rows("618:635").EntireRow.Hidden = True
Rows("615:617").EntireRow.Hidden = False
Case Is = "3": Rows("619:635").EntireRow.Hidden = True
Rows("615:618").EntireRow.Hidden = False
Case Is = "4": Rows("620:635").EntireRow.Hidden = True
Rows("615:619").EntireRow.Hidden = False
Case Is = "5": Rows("621:635").EntireRow.Hidden = True
Rows("615:620").EntireRow.Hidden = False
Case Is = "6": Rows("622:635").EntireRow.Hidden = True
Rows("615:621").EntireRow.Hidden = False
Case Is = "7": Rows("623:635").EntireRow.Hidden = True
Rows("615:622").EntireRow.Hidden = False
Case Is = "8": Rows("624:635").EntireRow.Hidden = True
Rows("615:623").EntireRow.Hidden = False
Case Is = "9": Rows("625:635").EntireRow.Hidden = True
Rows("615:624").EntireRow.Hidden = False
Case Is = "10": Rows("626:635").EntireRow.Hidden = True
Rows("615:625").EntireRow.Hidden = False
Case Is = "11": Rows("627:635").EntireRow.Hidden = True
Rows("615:626").EntireRow.Hidden = False
Case Is = "12": Rows("628:635").EntireRow.Hidden = True
Rows("615:627").EntireRow.Hidden = False
Case Is = "13": Rows("629:635").EntireRow.Hidden = True
Rows("615:628").EntireRow.Hidden = False
Case Is = "14": Rows("630:635").EntireRow.Hidden = True
Rows("615:629").EntireRow.Hidden = False
Case Is = "15": Rows("631:635").EntireRow.Hidden = True
Rows("615:630").EntireRow.Hidden = False
Case Is = "16": Rows("632:635").EntireRow.Hidden = True
Rows("615:631").EntireRow.Hidden = False
Case Is = "17": Rows("633:635").EntireRow.Hidden = True
Rows("615:632").EntireRow.Hidden = False
Case Is = "18": Rows("634:635").EntireRow.Hidden = True
Rows("615:633").EntireRow.Hidden = False
Case Is = "19": Rows("635:635").EntireRow.Hidden = True
Rows("615:634").EntireRow.Hidden = False
Case Is = "20": Rows("615:635").EntireRow.Hidden = False
End Select
End If
Call proc1
Call proc2
End Sub
Sub proc1()
If Not Application.Intersect(Range("G44"), Range(Target.Address)) Is Nothing Then
Select Case Target.Value
Case Is = "0": Rows("636:656").EntireRow.Hidden = True
Case Is = "1": Rows("638:656").EntireRow.Hidden = True
Rows("636:637").EntireRow.Hidden = False
Case Is = "2": Rows("639:656").EntireRow.Hidden = True
Rows("636:638").EntireRow.Hidden = False
Case Is = "3": Rows("640:656").EntireRow.Hidden = True
Rows("636:639").EntireRow.Hidden = False
Case Is = "4": Rows("641:656").EntireRow.Hidden = True
Rows("636:640").EntireRow.Hidden = False
Case Is = "5": Rows("642:656").EntireRow.Hidden = True
Rows("636:641").EntireRow.Hidden = False
Case Is = "6": Rows("643:656").EntireRow.Hidden = True
Rows("636:642").EntireRow.Hidden = False
Case Is = "7": Rows("644:656").EntireRow.Hidden = True
Rows("636:643").EntireRow.Hidden = False
Case Is = "8": Rows("645:656").EntireRow.Hidden = True
Rows("636:644").EntireRow.Hidden = False
Case Is = "9": Rows("646:656").EntireRow.Hidden = True
Rows("636:645").EntireRow.Hidden = False
Case Is = "10": Rows("647:656").EntireRow.Hidden = True
Rows("636:646").EntireRow.Hidden = False
Case Is = "11": Rows("648:656").EntireRow.Hidden = True
Rows("636:647").EntireRow.Hidden = False
Case Is = "12": Rows("649:656").EntireRow.Hidden = True
Rows("636:648").EntireRow.Hidden = False
....and so on
You can use a loop and a some math to reduce your code a lot:
Private Sub Worksheet_Change(ByVal Target As Range)
Const BLOCK_SIZE As Long = 20 '(+1 header)
Dim n As Long, i As Long, rngCheck As Range, c As Range, rStart As Long
Me.Unprotect 'use Me to refer to the sheet itself
Set rngCheck = Me.Range("G20") 'first cell to check
rStart = 132 'start row (header) for section 1
For i = 1 To 100
Set c = Application.Intersect(rngCheck, Target) 'Target intersects with cell being checked?
If Not c Is Nothing Then
n = c.Value
If n > BLOCK_SIZE Then n = BLOCK_SIZE 'limit number of rows to show
Me.Cells(rStart, 1).Resize(BLOCK_SIZE + 1).EntireRow.Hidden = True 'hide all
If n > 0 Then Me.Cells(rStart, 1).Resize(n + 1).EntireRow.Hidden = False 'unhide the ones we want
End If
Set rngCheck = rngCheck.Offset(1, 0) 'next cell to check
rStart = rStart + (BLOCK_SIZE + 1) 'next block starting row
Next i
End Sub

Add a second bookmark to the same yes no button

I've created a yes no button that hides a bookmark, how can i add a second bookmark to the same yes no button. My Bookmarks name is TextToShow. i just want to add another bookmark to the same field.
Private Sub CheckBoxNo_Change()
Call ShowHideBookmark
End Sub
Sub ShowHideBookmark()
Dim Sterilisation As Range
Set Sterilisation = ActiveDocument.Bookmarks("TextToShow").Range
If CheckBoxNo.Value = True Then
With Sterilisation.Font
.Hidden = True
End With
With ActiveWindow.View
.ShowHiddenText = False
.ShowAll = False
End With
Else
With Sterilisation.Font
.Hidden = False
End With
With ActiveWindow.View
.ShowHiddenText = True
.ShowAll = True
End With
End If
End Sub
Sub ShowHideBookmark()
Dim Sterilisation As Range, Sterilisation2 As Range
Set Sterilisation = ActiveDocument.Bookmarks("TextToShow").Range
Set Sterilisation2 = ActiveDocument.Bookmarks("TextToShow2").Range
If CheckBoxNo.value = True Then
Sterilisation.Font.Hidden = True
Sterilisation2.Font.Hidden = True
With ActiveWindow.View
.ShowHiddenText = False
.ShowAll = False
End With
Else
Sterilisation.Font.Hidden = False
Sterilisation2.Font.Hidden = False
With ActiveWindow.View
.ShowHiddenText = True
.ShowAll = True
End With
End If
End Sub
Assuming (as per JK's approach) your second bookmarked range is named 'TextToShow2', try:
Private Sub CheckBoxNo_Change()
Application.ScreenUpdating = False
Dim bVal As Boolean: bVal = CheckBoxNo.Value
ActiveDocument.Bookmarks("TextToShow").Range.Font.Hidden = bVal
ActiveDocument.Bookmarks("TextToShow2").Range.Font.Hidden = bVal
ActiveWindow.View.ShowHiddenText = Not bVal
ActiveWindow.View.ShowAll = Not bVal
Application.ScreenUpdating = True
End Sub

hide/unhide many textboxes on a form based on combo value in ms-access (userform)

I currently have too many if statements; what is the best solution to coding hiding and unhiding about textboxes, I think I have 8 or more combinations here is the current code I have when trying this it only works with the last if statement combinations are as follows A-D, and all combinations between.:
If Combo308.Value = "A" Then
Combo305.Visible = True
Option103.Visible = True
Else
Combo305.Visible = False
Option103.Visible = False
End If
If Combo308.Value = "B" Then
Combo306.Visible = True
Option105.Visible = True
Else
Combo306.Visible = False
Option105.Visible = False
End If
If Combo308.Value = "D" Then
Combo309.Visible = True
Option111.Visible = True
Text310.Visible = True
Option113.Visible = True
Combo311.Visible = True
Option115.Visible = True
Text312.Visible = True
Option117.Visible = True
Text313.Visible = True
Option119.Visible = True
Combo314.Visible = True
Option121.Visible = True
Text315.Visible = True
Option123.Visible = True
Text316.Visible = True
Option125.Visible = True
Text317.Visible = True
Option127.Visible = True
Text318.Visible = True
Option129.Visible = True
Text319.Visible = True
Option131.Visible = True
Else
Combo309.Visible = False
Option111.Visible = False
Text310.Visible = False
Option113.Visible = False
Combo311.Visible = False
Option115.Visible = False
Text312.Visible = False
Option117.Visible = False
Text313.Visible = False
Option119.Visible = False
Combo314.Visible = False
Option121.Visible = False
Text315.Visible = False
Option123.Visible = False
Text316.Visible = False
Option125.Visible = False
Text317.Visible = False
Option127.Visible = False
Text318.Visible = False
Option129.Visible = False
Text319.Visible = False
Option131.Visible = False
End If
If Combo308.Value = "A,B" Then
Combo305.Visible = True
Option103.Visible = True
Combo306.Visible = True
Option105.Visible = True
Else
Combo305.Visible = False
Option103.Visible = False
Combo306.Visible = False
Option105.Visible = False
End If
If Combo308.Value = "A,B,C" Then
Combo305.Visible = True
Option103.Visible = True
Combo306.Visible = True
Option105.Visible = True
Combo307.Visible = True
Option109.Visible = True
Else
Combo305.Visible = False
Option103.Visible = False
Combo306.Visible = False
Option105.Visible = False
Combo307.Visible = False
Option109.Visible = False
End If
I guess you need first hide all controls, then unhide a selection:
Combo305.Visible = False
Option103.Visible = False
' etc. - all controls in question.
Select Case Combo308.Value
Case "A"
Combo305.Visible = True
Option103.Visible = True
Case "B"
Combo306.Visible = True
Option105.Visible = True
Case "D"
' etc.
'
Case "A,B,C"
Combo305.Visible = True
Option103.Visible = True
Combo306.Visible = True
Option105.Visible = True
Combo307.Visible = True
Option109.Visible = True
End Select
And do rename all your controls to have meaningful names.

if else Condition in vb.net

i want the user select duration before he/she continue click the checkbox(Cagayan) how to do that?
this is my code
Private Sub Rcagayan_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cagayan.CheckedChanged
If Duration.Text = "" Then
MessageBox.Show("Please Select Duration", "WARNING", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
End if
If Cagayan.Checked = False Then
Abulug.Checked = False
Allacapan.Checked = False
Alcala.Checked = False
Amulung.Checked = False
Aparri.Checked = False
Baggao.Checked = False
Ballesteros.Checked = False
Buguey.Checked = False
Camal.Checked = False
Claveria.Checked = False
Enrile.Checked = False
Gattaran.Checked = False
Gonzaga.Checked = False
Iguig.Checked = False
Lasam.Checked = False
Lallo.Checked = False
Pamplona.Checked = False
Penablanca.Checked = False
Piat.Checked = False
Rizal.Checked = False
SantaAna.Checked = False
StaTere.Checked = False
Santonino.Checked = False
Praxedes.Checked = False
Sanchez.Checked = False
Solana.Checked = False
Tuao.Checked = False
Tugue.Checked = False
btnUncheckedckbExpectedFalse.PerformClick()
btnAdvicedUnchecked.PerformClick()
Me.btncagayan.PerformClick()
Me.btnTstmFormat.PerformClick()
End If
End Sub
You have to add exit sub at the end of your first if block...
Private Sub Rcagayan_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cagayan.CheckedChanged
If Duration.Text = "" Then
MessageBox.Show("Please Select Duration", "WARNING", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
exit sub
End if
If Cagayan.Checked = False Then
Abulug.Checked = False
Allacapan.Checked = False
Alcala.Checked = False
Amulung.Checked = False
Aparri.Checked = False
Baggao.Checked = False
Ballesteros.Checked = False
Buguey.Checked = False
Camal.Checked = False
Claveria.Checked = False
Enrile.Checked = False
Gattaran.Checked = False
Gonzaga.Checked = False
Iguig.Checked = False
Lasam.Checked = False
Lallo.Checked = False
Pamplona.Checked = False
Penablanca.Checked = False
Piat.Checked = False
Rizal.Checked = False
SantaAna.Checked = False
StaTere.Checked = False
Santonino.Checked = False
Praxedes.Checked = False
Sanchez.Checked = False
Solana.Checked = False
Tuao.Checked = False
Tugue.Checked = False
btnUncheckedckbExpectedFalse.PerformClick()
btnAdvicedUnchecked.PerformClick()
Me.btncagayan.PerformClick()
Me.btnTstmFormat.PerformClick()
End If
End Sub

VB ComboBox Requires 2 Mouse Clicks to Select Index?

For some reason with this combobox I have in my code, when I run the program, it does not change the Selected Index with one mouse click. Instead, I have to select the drop down of the combo box again, and then select the index. Any ideas on what is going on here? Here is my code, I've tinkered with it for hours.
Public Class Form1
'Mod-level variable
Dim TransactionList As New List(Of Transaction)
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Me.Text = "Mike Smith's Bank Account"
Lb1.Visible = False
Lb2.Visible = False
Lb4.Visible = False
Tb1.Visible = False
Tb2.Visible = False
SubmitTransactionButton.Visible = False
TransactionListBox.Visible = False
End Sub
Private Sub Cb1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles Cb1.SelectedIndexChanged
If Tb1.Text = "" Then
Tb1.Text = "0.00"
ElseIf Cb1.Text = "" Then
Lb4.Visible = False
LbAction.Visible = False
Lb1.Visible = False
Lb2.Visible = False
Tb1.Visible = False
Tb2.Visible = False
TransactionListBox.Visible = False
SubmitTransactionButton.Visible = False
ElseIf Cb1.Text = "Credit" Then
Lb4.Visible = False
LbAction.Visible = False
Lb1.Visible = True
Lb2.Visible = True
LbAction.Visible = False
Tb1.Visible = True
Tb2.Visible = True
TransactionListBox.Visible = False
Lb1.Text = "Enter Credit Amount"
Lb2.Text = "Describe the Income"
SubmitTransactionButton.Visible = True
ElseIf Cb1.Text = "Debit" Then
LbAction.Visible = False
Lb1.Visible = True
Lb4.Visible = False
Lb2.Visible = True
LbAction.Visible = False
Tb1.Visible = True
Tb2.Visible = True
TransactionListBox.Visible = False
Lb1.Text = "Enter Debit Amount"
Lb2.Text = "Describe the Expense"
SubmitTransactionButton.Visible = True
ElseIf Cb1.Text = "Display Transactions" Then
TransactionListBox.Visible = True
Lb4.Visible = False
LbAction.Visible = False
Lb1.Visible = False
Lb2.Visible = False
Tb1.Visible = False
Tb2.Visible = False
SubmitTransactionButton.Visible = False
For Each transaction In TransactionList
TransactionListBox.Items.Add(
String.Format("{0}: {1:C}. {2}",
transaction.Type,
transaction.Amount,
transaction.Description))
Next
ElseIf Cb1.Text = "Display Balance" Then
Lb4.Visible = True
Lb1.Visible = False
Lb2.Visible = False
LbAction.Visible = False
Tb1.Visible = False
Tb2.Visible = False
TransactionListBox.Visible = False
Lb4.Text = "Current Balance: $"
End If
End Sub
Private Sub SubmitTransactionButton_Click(sender As Object, e As EventArgs) Handles SubmitTransactionButton.Click
Dim transactionTypeString As String = Cb1.Text
Dim transactionDescriptionstring As String = Tb2.Text
Dim transactionAmountDecimal As Decimal
If Tb1.Text IsNot "" Then
'Tb1.Text = "0.00"
Tb2.Text = ""
Cb1.Text = ""
Lb1.Visible = False
Lb2.Visible = False
Tb1.Visible = False
Tb2.Visible = False
SubmitTransactionButton.Visible = False
End If
Try
transactionAmountDecimal = Decimal.Parse(Tb1.Text)
TransactionList.Add(New Transaction(
transactionTypeString,
transactionAmountDecimal,
transactionDescriptionstring))
Catch FormatExceptionParameter As FormatException
transactionAmountDecimal = 0D
End Try
End Sub
End Class
Public Class Transaction
Public Sub New(type As String, amount As Decimal, description As String)
Me.Type = type
Me.Amount = amount
Me.Description = description
If Me.Type = "Credit" Then
Me.Amount *= -1
End If
End Sub
Public Property Type As String
Public Property Amount As Decimal
Public Property Description As String
End Class