aboutsummaryrefslogtreecommitdiff
path: root/challenge-140/eric-cheung/excel-vba/ch-2.bas
blob: 4530e5ce1f1e2a3976aafc57b266383f03261b11 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
Attribute VB_Name = "ModTask_02"
Option Explicit

Sub Task_02()

    '' Example 1
''    Const nNumRow As Integer = 2
''    Const nNumCol As Integer = 3
''    Const nElemNum As Integer = 4
    
    '' Example 2
    Const nNumRow As Integer = 3
    Const nNumCol As Integer = 3
    Const nElemNum As Integer = 6

    Dim strMsg As String
    Dim nRowLoop As Integer, nColLoop As Integer, nLoop As Integer
    Dim nArr(1 To nNumRow * nNumCol) As Integer
    
    '' Initialize
    nLoop = 1
    For nRowLoop = 1 To nNumRow
        For nColLoop = 1 To nNumCol
            nArr(nLoop) = nRowLoop * nColLoop
            nLoop = nLoop + 1
        Next nColLoop
    Next nRowLoop
    
    '' Sort
    For nRowLoop = 1 To nNumRow * nNumCol - 1
        For nColLoop = nRowLoop + 1 To nNumRow * nNumCol
            If nArr(nRowLoop) > nArr(nColLoop) Then
                nLoop = nArr(nRowLoop)
                nArr(nRowLoop) = nArr(nColLoop)
                nArr(nColLoop) = nLoop
            End If
        Next nColLoop
    Next nRowLoop
    
    '' Display
    strMsg = "Now the " & nElemNum
    
    If nElemNum = 1 Then
        strMsg = strMsg & "st"
    ElseIf nElemNum = 2 Then
        strMsg = strMsg & "nd"
    ElseIf nElemNum = 3 Then
        strMsg = strMsg & "rd"
    Else
        strMsg = strMsg & "th"
    End If

    strMsg = strMsg & " element in the table is " & nArr(nElemNum)

    MsgBox strMsg, vbOKOnly, strMyTitle
    
End Sub