aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xchallenge-137/eric-cheung/excel-vba/Challenge_137.xlsmbin0 -> 35238 bytes
-rwxr-xr-xchallenge-137/eric-cheung/excel-vba/ch-1.bas51
-rwxr-xr-xchallenge-137/eric-cheung/excel-vba/ch-2.bas47
3 files changed, 98 insertions, 0 deletions
diff --git a/challenge-137/eric-cheung/excel-vba/Challenge_137.xlsm b/challenge-137/eric-cheung/excel-vba/Challenge_137.xlsm
new file mode 100755
index 0000000000..31373a147e
--- /dev/null
+++ b/challenge-137/eric-cheung/excel-vba/Challenge_137.xlsm
Binary files differ
diff --git a/challenge-137/eric-cheung/excel-vba/ch-1.bas b/challenge-137/eric-cheung/excel-vba/ch-1.bas
new file mode 100755
index 0000000000..faee7a2cc6
--- /dev/null
+++ b/challenge-137/eric-cheung/excel-vba/ch-1.bas
@@ -0,0 +1,51 @@
+Attribute VB_Name = "ModTask_01"
+Option Explicit
+
+Public Const strMyTitle As String = "Eric Cheung"
+
+Function FindWeekNumGivenDate(nInputDate As Long) As Integer
+
+ '' Credit:
+ '' http://kbase.icbconsulting.com/vba/determine-the-week-number-using-a-date
+
+ Dim nNum_01 As Integer, nNum_02 As Integer, nNum_03 As Long, nNum_04 As Integer
+
+ If nInputDate < 1 Then
+ FindWeekNumGivenDate = 0
+ Exit Function
+ End If
+
+ nNum_01 = Weekday(nInputDate, vbSunday)
+ nNum_02 = Year(nInputDate + (8 - nNum_01) Mod 7 - 3)
+ nNum_03 = DateSerial(nNum_02, 1, 1)
+ nNum_04 = (Weekday(nNum_03, vbSunday) + 1) Mod 7
+ FindWeekNumGivenDate = Int((nInputDate - nNum_03 - 3 + nNum_04) / 7) + 1
+
+End Function
+
+Function FindNumWeekGivenYear(nInputYear As Integer) As Integer
+
+ FindNumWeekGivenYear = FindWeekNumGivenDate(DateSerial(nInputYear, 12, 31))
+
+End Function
+
+Sub Task_01()
+
+ Const nStartYear As Integer = 1900
+ Const nStartEnd As Integer = 2100
+
+ Dim strMsg As String
+ Dim nLoop As Integer
+
+ For nLoop = nStartYear To nStartEnd
+ If FindNumWeekGivenYear(nLoop) = 53 Then
+ If strMsg <> "" Then
+ strMsg = strMsg & ", "
+ End If
+ strMsg = strMsg & nLoop
+ End If
+ Next nLoop
+
+ MsgBox strMsg, vbOKOnly, strMyTitle
+
+End Sub
diff --git a/challenge-137/eric-cheung/excel-vba/ch-2.bas b/challenge-137/eric-cheung/excel-vba/ch-2.bas
new file mode 100755
index 0000000000..b6e2b6eebc
--- /dev/null
+++ b/challenge-137/eric-cheung/excel-vba/ch-2.bas
@@ -0,0 +1,47 @@
+Attribute VB_Name = "ModTask_02"
+Option Explicit
+
+Function IsPalindromeNum(ByVal strNumCheck As String) As Boolean
+
+ IsPalindromeNum = False
+ If strNumCheck = StrReverse(strNumCheck) Then
+ IsPalindromeNum = True
+ End If
+
+End Function
+
+Sub Task_02()
+
+ '' Credit
+ '' https://datagenetics.com/blog/october12015/index.html
+
+ Const nInput As Integer = 56 '' Example 1
+ '' Const nInput As Integer = 57 '' Example 2
+ '' Const nInput As Integer = 59 '' Example 3
+
+ Const nMaxLoop As Integer = 500
+
+ Dim strMsg As String, strTemp As String
+ Dim nLoop As Integer
+
+ strTemp = CStr(nInput)
+ strMsg = "1"
+
+ For nLoop = 1 To nMaxLoop
+
+ If Val(strTemp) > 10000000 Then
+ Exit For
+ End If
+
+ If IsPalindromeNum(strTemp) Then
+ strMsg = "0"
+ Exit For
+ End If
+
+ strTemp = CStr(Val(strTemp) + Val(StrReverse(strTemp)))
+
+ Next nLoop
+
+ MsgBox strMsg, vbOKOnly, strMyTitle
+
+End Sub