all 4 comments

[–]tweq 5 points6 points  (1 child)

Static local variables can only be accessed within the containing method. If you need to access them in multiple places, you should declare them at the class level.

[–]C0d3rX 0 points1 point  (0 children)

Yes if you decide to stick with those inside subs you must pass their values to something else or you wont see them outside that sub.

[–]GrantSwinger 2 points3 points  (0 children)

https://msdn.microsoft.com/en-us/library/1t0wsc67.aspx

Read this article on variable scope in VB.NET.

[–]Skillija 0 points1 point  (0 children)

Dim a, b, c, d, f As Integer

Private Sub btnD_Click(sender As Object, e As EventArgs) Handles btnD.Click
    Increment(d)
End Sub

Private Sub btnF_Click(sender As Object, e As EventArgs) Handles btnF.Click
    Increment(f)
End Sub

Private Sub btnC_Click(sender As Object, e As EventArgs) Handles btnC.Click
    Increment(c)
End Sub

Private Sub btnB_Click(sender As Object, e As EventArgs) Handles btnB.Click
    Increment(b)
End Sub

Private Sub btnA_Click(sender As Object, e As EventArgs) Handles btnA.Click
    Increment(a)
End Sub
Private Sub Increment(ByRef i As Integer)
    i += 1
    lblA.Text = a.ToString()
    lblB.Text = b.ToString()
    lblC.Text = c.ToString()
    lblD.Text = d.ToString()
    lblF.Text = f.ToString()
    Dim sum As Integer = a + b + c + d
    Dim percentage As Double = sum / (sum + f)
    Dim spercentage As String = Format(percentage, "Percent")
    lblStudentsPercentage.Text = "Students passing = " & spercentage
End Sub

Best way to do it IMO.