This commit is contained in:
louiscklaw
2025-02-01 02:10:58 +08:00
commit 655c626d6f
75 changed files with 11521 additions and 0 deletions

31
.gitattributes vendored Normal file
View File

@@ -0,0 +1,31 @@
*.mp4 filter=lfs diff=lfs merge=lfs
*.zip filter=lfs diff=lfs merge=lfs
*.7z filter=lfs diff=lfs merge=lfs
*.tar.gz filter=lfs diff=lfs merge=lfs
*.jpg filter=lfs diff=lfs merge=lfs
*.png filter=lfs diff=lfs merge=lfs
*.avif filter=lfs diff=lfs merge=lfs
*.webm filter=lfs diff=lfs merge=lfs
*.mkv filter=lfs diff=lfs merge=lfs
# Documents
*.doc diff=astextplain
*.DOC diff=astextplain
*.docx diff=astextplain
*.DOCX diff=astextplain
*.dot diff=astextplain
*.DOT diff=astextplain
*.pdf diff=astextplain
*.PDF diff=astextplain
*.rtf diff=astextplain
*.RTF diff=astextplain
*.gif filter=lfs diff=lfs merge=lfs
*.GIF filter=lfs diff=lfs merge=lfs
*.bmp filter=lfs diff=lfs merge=lfs
*.BMP filter=lfs diff=lfs merge=lfs
*.tiff filter=lfs diff=lfs merge=lfs
*.TIFF filter=lfs diff=lfs merge=lfs
*.wav filter=lfs diff=lfs merge=lfs
*.WAV filter=lfs diff=lfs merge=lfs
*.log filter=lfs diff=lfs merge=lfs

1
.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
**/~*.*

Binary file not shown.

Binary file not shown.

2
clean.bat Normal file
View File

@@ -0,0 +1,2 @@
rmdir *.bas
rmdir *.cls

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 MiB

7
gitUpdate.bat Normal file
View File

@@ -0,0 +1,7 @@
git status .
@pause
git add .
git commit -m"update wenarama,"
start git push

16
gitUpdate.sh Executable file
View File

@@ -0,0 +1,16 @@
#!/usr/bin/env bash
set -ex
git config --global http.version HTTP/1.1
git config --global lfs.allowincompletepush true
git config --global lfs.locksverify true
git config --global http.postBuffer 5368709120
git add .
git commit -m 'update,'
git push
echo "done"

44
meta.md Normal file
View File

@@ -0,0 +1,44 @@
---
tags: [vba, excel, accounting, banking]
---
# wenarama
## balance history
Q:
Hi, 你呢兩日有時間講個電話,傾吓用咩模式比較好?
A:
ok ar, 可以安排,通電話方面夜晚 8 ~ 11 方便嘛?
Q:
我諗法係,每次上堂之前我會 send excel files 俾你,大概話俾你知我想做乜嘢。跟住上堂可以教我。
不過可能頭幾次要講解下 IDE, vba syntax etc
A:
ok ar, 可以的話請預早一兩日 send 過黎 : )
### notes
Q: 不過可能頭幾次要講解下 IDE, vba syntax etc
我會比較傾向我做完,再同你講下點解我要咁做
如果你係連 syntax 都未清楚的話,咁可以順手睇埋/問埋
因為我覺得單獨 背/記 syntax 係垃圾行為,
其實 點樣用/幾時用 先係要學嘅事
syntax 你 上網/自己寫寫下果個 code base 都有得抄,
唔需要刻意去 學/背/記
當然我都可以比個 kick off 你,
用人話講即係好似燒味拼盤咁樣樣有 D 輕輕介紹一下
但係 in-deep 到你用到果陣時就自然會知 / google
[[slides/slide-deck]]
[//begin]: # "Autogenerated link references for markdown compatibility"
[slides/slide-deck]: slides/slide-deck.md "Excel VBA"
[//end]: # "Autogenerated link references"

BIN
slides/excel-vba.pdf Normal file

Binary file not shown.

BIN
slides/images/backdrop.jpg (Stored with Git LFS) Normal file

Binary file not shown.

BIN
slides/images/excel.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
slides/images/thank_you.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
slides/images/vba-button.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
slides/images/vba-debug-menu.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
slides/images/vba-developer-tab.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
slides/images/vba-enable-developer-menu-1.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
slides/images/vba-enable-developer-menu-2.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
slides/images/vba-enable-macro.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
slides/images/vba-file-menu.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
slides/images/vba-helloworld-run.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
slides/images/vba-ide.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
slides/images/vba-module-menu.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
slides/images/vba-module.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
slides/images/vba-run-menu.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
slides/images/vba-save-as-xlsm.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
slides/images/vba-save-with-macro.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
slides/images/vba-start.png (Stored with Git LFS) Normal file

Binary file not shown.

344
slides/index.html Normal file

File diff suppressed because one or more lines are too long

3715
slides/package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

18
slides/package.json Normal file
View File

@@ -0,0 +1,18 @@
{
"name": "slides",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"ren_html": "marp slide-deck.md -o index.html",
"ren_pdf": "marp --allow-local-files --pdf-notes slide-deck.md -o index.pdf"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"@marp-team/marp-cli": "^3.3.1"
}
}

396
slides/slide-deck.md Normal file
View File

@@ -0,0 +1,396 @@
---
theme: gaia
_class: lead
paginate: true
backgroundColor: #fff
backgroundImage: url('./images/backdrop.jpg')
---
![bg left:40% 80%](./images/excel.png)
# **Excel VBA**
Excel VBA introduction
https://louiscklaw.github.io/
---
### VBA IDE
![bg height:66% ](./images/vba-ide.png)
---
### Enable VBA IDE 1/2
![bg height:66% ](./images/vba-enable-developer-menu-1.png)
---
### VBA Start IDE
![bg height:50% ](./images/vba-start.png)
![bg height:50% ](./images/vba-button.png)
---
### VBA - Save with macro enabled workbook 1/2
![bg height:50% ](./images/vba-save-with-macro.png)
![bg height:50% ](./images/vba-save-as-xlsm.png)
---
### VBA - Save with macro enabled workbook 2/2
![bg height:66% ](./images/vba-enable-macro.png)
---
### VBA - File menu
![bg height:66%](./images/vba-file-menu.png)
<!-- "run", "interrupt", "break point" -->
---
### VBA - Run menu
![bg height:66%](./images/vba-run-menu.png)
<!-- "run", "interrupt", "break point" -->
---
### VBA - Debug menu
![bg height:66%](./images/vba-debug-menu.png)
<!-- "step into", "step over" -->
---
### VBA - Module
![bg height:50% ](./images/vba-module-menu.png)
![bg height:50% ](./images/vba-module.png)
---
### VBA looping - For loop 1/2
```VB
For counter = start To end [Step stepcount]
[statement 1]
....
[statement n]
[Exit For]
[statement 11]
....
[statement n]
Next
```
---
<!-- please draft me a sample of VBA for loop -->
### VBA looping - For loop 2/2
```VB
Sub ForLoopExample()
Dim i As Integer
' Loop from 1 to 5
For i = 1 To 5
' Print the value of i
Debug.Print i
Next i
' Loop from 10 to 1 with a step of -1
For i = 10 To 1 Step -1
' Print the value of i
Debug.Print i
Next i
End Sub
```
---
### VBA looping - While loop 1/2
```
While condition(s)
[statements 1]
[statements 2]
...
[statements n]
Wend
```
---
<!-- please draft me a sample of VBA while loop -->
### VBA looping - While loop 2/2
```VB
Sub WhileLoopExample()
Dim i As Integer
' Loop while i is less than or equal to 5
i = 1
While i <= 5
' Print the value of i
Debug.Print i
' Increment i by 1
i = i + 1
Wend
' Loop while i is greater than 0
i = 10
Do While i > 0
' Print the value of i
Debug.Print i
' Decrement i by 1
i = i - 1
Loop
End Sub
```
---
### VBA - Functions 1/2
```VB
Function Functionname(parameter-list)
statement 1
.......
statement n
End Function
```
---
<!-- please draft me a sample of VBA function -->
### VBA - Functions 2/2
```VB
Function AddNumbers(num1 As Double, num2 As Double) As Double
' Add two numbers and return the result
AddNumbers = num1 + num2
End Function
Sub TestAddNumbers()
Dim result As Double
' Call the AddNumbers function and store the result in the 'result' variable
result = AddNumbers(5.5, 3.2)
' Display the result
MsgBox "The result is: " & result
End Sub
```
---
<!-- please draft me a sample of VBA Sub -->
### VBA - Subs 1/2
```VB
Sub Area(x As Double, y As Double)
MsgBox x * y
End Sub
```
---
<!-- please draft me a sample of VBA Sub -->
### VBA - Subs 2/2
```VB
Sub GreetUser(name As String)
' Display a greeting message with the provided name
MsgBox "Hello, " & name & "! Welcome to our program."
End Sub
Sub TestGreetUser()
' Call the GreetUser subroutine and pass a name
GreetUser "John"
End Sub
```
---
### VBA - Message Box
```VB
MsgBox(prompt[,buttons][,title][,helpfile,context])
```
TODO: screen capture of Msgbox
---
### VBA - Constants
```VB
Const MyInteger As Integer = 42
Const myDate As Date = #2/2/2020#
Const myDay As String = "Sunday"
```
### VBA - Variables
```VB
Dim MyInteger As Integer = 42
Dim myDate As Date = #2/2/2020#
Dim myDay As String = "Sunday"
```
---
### VBA - Arithmatic Operators
let A = 5, B = 10
sign | means/equals
-----|-----------------------
\+ | A + B will give 15
\- | A - B will give -5
\* | A * B will give 50
/ | B / A will give 2
% | B % A will give 0
^ | B ^ A will give 100000
---
### VBA - Comparison Operators
let A = 5, B = 10
sign | means/equals
-----|-------------------
= | (A = B) is False.
<> | (A <> B) is True.
\> | (A > B) is False.
< | (A < B) is True.
\>= | (A >= B) is False.
<= | (A <= B) is True.
---
### VBA - If Statement 1/3
```VB
If(boolean_expression) Then
Statement 1
.....
.....
Statement n
End If
```
---
### VBA - If Elseif - Else statement 2/3
```VB
If(boolean_expression) Then
Statement 1
.....
Statement n
ElseIf (boolean_expression) Then
Statement 1
.....
Statement n
ElseIf (boolean_expression) Then
Statement 1
.....
Statement n
Else
Statement 1
.....
Statement n
End If
```
---
### VBA - If statement example 3/3
```VB
Sub CheckNumber(number As Integer)
' Check if the number is greater than 10
If number > 10 Then
' Display a message if the condition is true
MsgBox "The number is greater than 10."
Else
' Display a message if the condition is false
MsgBox "The number is not greater than 10."
End If
End Sub
```
---
<style scoped>
h6 { font-size: 18px; }
</style>
### VBA - Helloworld Example 1/2
```VB
Sub HelloWorld()
' Display a message box with "Hello, World!"
MsgBox "Hello, World!"
End Sub
Sub TestHelloWorld()
' Call the HelloWorld subroutine
HelloWorld
End Sub
```
###### Note to Louis: show debug, show run
---
### VBA - Helloworld Example 2/2
![bg height:66% ](./images/vba-helloworld-run.png)
---
# VBA - Q n A / Thank you
![bg height:33% ](./images/thank_you.png)
<!--
---
### VBA - Procedures
```VB
Procedures
```
---
### VBA - Procedures
```VB
Procedures
```
---
### VBA - Procedures
```VB
Procedures
```
--- -->

BIN
slides_01/excel-vba.pdf Normal file

Binary file not shown.

BIN
slides_01/images/backdrop_00.jpg (Stored with Git LFS) Normal file

Binary file not shown.

BIN
slides_01/images/backdrop_01.jpg (Stored with Git LFS) Normal file

Binary file not shown.

BIN
slides_01/images/backdrop_02.jpg (Stored with Git LFS) Normal file

Binary file not shown.

BIN
slides_01/images/backdrop_03.jpg (Stored with Git LFS) Normal file

Binary file not shown.

BIN
slides_01/images/backdrop_04.jpg (Stored with Git LFS) Normal file

Binary file not shown.

BIN
slides_01/images/backdrop_05.jpg (Stored with Git LFS) Normal file

Binary file not shown.

BIN
slides_01/images/backdrop_06.jpg (Stored with Git LFS) Normal file

Binary file not shown.

BIN
slides_01/images/backdrop_07.jpg (Stored with Git LFS) Normal file

Binary file not shown.

BIN
slides_01/images/backdrop_08.jpg (Stored with Git LFS) Normal file

Binary file not shown.

BIN
slides_01/images/backdrop_09.jpg (Stored with Git LFS) Normal file

Binary file not shown.

BIN
slides_01/images/excel.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
slides_01/images/thank_you.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
slides_01/images/vba-button.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
slides_01/images/vba-debug-menu.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
slides_01/images/vba-developer-tab.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
slides_01/images/vba-enable-developer-menu-1.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
slides_01/images/vba-enable-developer-menu-2.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
slides_01/images/vba-enable-macro.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
slides_01/images/vba-file-menu.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
slides_01/images/vba-helloworld-run.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
slides_01/images/vba-ide.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
slides_01/images/vba-module-menu.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
slides_01/images/vba-module.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
slides_01/images/vba-run-menu.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
slides_01/images/vba-save-as-xlsm.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
slides_01/images/vba-save-with-macro.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
slides_01/images/vba-start.png (Stored with Git LFS) Normal file

Binary file not shown.

344
slides_01/index.html Normal file

File diff suppressed because one or more lines are too long

BIN
slides_01/index.pdf Normal file

Binary file not shown.

3715
slides_01/package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

21
slides_01/package.json Normal file
View File

@@ -0,0 +1,21 @@
{
"name": "slides",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"ren_html": "marp slide-deck.md -o index.html",
"ren_pdf": "marp --allow-local-files --pdf-notes slide-deck.md -o index.pdf",
"gitUpdate":"git add . && git commit -m'update,'"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"@marp-team/marp-cli": "^3.3.1"
},
"dependencies": {
"live-server": "^1.2.2"
}
}

400
slides_01/slide-deck.md Normal file
View File

@@ -0,0 +1,400 @@
---
theme: gaia
_class: lead
paginate: true
backgroundColor: #fff
backgroundImage: url('./images/backdrop_09.jpg')
---
![bg left:40% 80%](./images/excel.png)
# **Excel VBA**
Excel VBA introduction
https://louiscklaw.github.io/
---
### VBA IDE
![bg height:66% ](./images/vba-ide.png)
---
### Enable VBA IDE 1/2
![bg height:66% ](./images/vba-enable-developer-menu-1.png)
---
### VBA Start IDE
![bg height:50% ](./images/vba-start.png)
![bg height:50% ](./images/vba-button.png)
---
### VBA - Save with macro enabled workbook 1/2
![bg height:50% ](./images/vba-save-with-macro.png)
![bg height:50% ](./images/vba-save-as-xlsm.png)
---
### VBA - Save with macro enabled workbook 2/2
![bg height:66% ](./images/vba-enable-macro.png)
---
### VBA - File menu
![bg height:66%](./images/vba-file-menu.png)
<!-- "run", "interrupt", "break point" -->
---
### VBA - Run menu
![bg height:66%](./images/vba-run-menu.png)
<!-- "run", "interrupt", "break point" -->
---
### VBA - Debug menu
![bg height:66%](./images/vba-debug-menu.png)
<!-- "step into", "step over" -->
---
### VBA - Module
![bg height:50% ](./images/vba-module-menu.png)
![bg height:50% ](./images/vba-module.png)
---
### VBA looping - For loop 1/2
```VB
For counter = start To end [Step stepcount]
[statement 1]
....
[statement n]
[Exit For]
[statement 11]
....
[statement n]
Next
```
---
<!-- please draft me a sample of VBA for loop -->
### VBA looping - For loop 2/2
```VB
Sub ForLoopExample()
Dim i As Integer
' Loop from 1 to 5
For i = 1 To 5
' Print the value of i
Debug.Print i
Next i
' Loop from 10 to 1 with a step of -1
For i = 10 To 1 Step -1
' Print the value of i
Debug.Print i
Next i
End Sub
```
---
### VBA looping - While loop 1/2
```
While condition(s)
[statements 1]
[statements 2]
...
[statements n]
Wend
```
---
<!-- please draft me a sample of VBA while loop -->
### VBA looping - While loop 2/2
```VB
Sub WhileLoopExample()
Dim i As Integer
' Loop while i is less than or equal to 5
i = 1
While i <= 5
' Print the value of i
Debug.Print i
' Increment i by 1
i = i + 1
Wend
' Loop while i is greater than 0
i = 10
Do While i > 0
' Print the value of i
Debug.Print i
' Decrement i by 1
i = i - 1
Loop
End Sub
```
---
### VBA - Functions 1/2
```VB
Function Functionname(parameter-list)
statement 1
.......
statement n
End Function
```
---
<!-- please draft me a sample of VBA function -->
### VBA - Functions 2/2
```VB
Function AddNumbers(num1 As Double, num2 As Double) As Double
' Add two numbers and return the result
AddNumbers = num1 + num2
End Function
Sub TestAddNumbers()
Dim result As Double
' Call the AddNumbers function and store the result in the 'result' variable
result = AddNumbers(5.5, 3.2)
' Display the result
MsgBox "The result is: " & result
End Sub
```
---
<!-- please draft me a sample of VBA Sub -->
### VBA - Subs 1/2
```VB
Sub Area(x As Double, y As Double)
MsgBox x * y
End Sub
```
---
<!-- please draft me a sample of VBA Sub -->
### VBA - Subs 2/2
```VB
Sub GreetUser(name As String)
' Display a greeting message with the provided name
MsgBox "Hello, " & name & "! Welcome to our program."
End Sub
Sub TestGreetUser()
' Call the GreetUser subroutine and pass a name
GreetUser "John"
End Sub
```
---
### VBA - Message Box
```VB
MsgBox(prompt[,buttons][,title][,helpfile,context])
```
TODO: screen capture of Msgbox
---
### VBA - Constants
```VB
Const MyInteger As Integer = 42
Const myDate As Date = #2/2/2020#
Const myDay As String = "Sunday"
```
### VBA - Variables
```VB
Dim MyInteger As Integer = 42
Dim myDate As Date = #2/2/2020#
Dim myDay As String = "Sunday"
```
---
### VBA - Arithmatic Operators
let A = 5, B = 10
| sign | means/equals |
| ---- | ---------------------- |
| \+ | A + B will give 15 |
| \- | A - B will give -5 |
| \* | A \* B will give 50 |
| / | B / A will give 2 |
| Mod | B Mod A will give 0 |
| ^ | B ^ A will give 100000 |
---
### VBA - Comparison Operators
let A = 5, B = 10
| sign | means/equals |
| ---- | ------------------ |
| = | (A = B) is False. |
| <> | (A <> B) is True. |
| \> | (A > B) is False. |
| < | (A < B) is True. |
| \>= | (A >= B) is False. |
| <= | (A <= B) is True. |
---
### VBA - If Statement 1/3
```VB
If(boolean_expression) Then
Statement 1
.....
.....
Statement n
End If
```
---
### VBA - If Elseif - Else statement 2/3
```VB
If(boolean_expression) Then
Statement 1
.....
Statement n
ElseIf (boolean_expression) Then
Statement 1
.....
Statement n
ElseIf (boolean_expression) Then
Statement 1
.....
Statement n
Else
Statement 1
.....
Statement n
End If
```
---
### VBA - If statement example 3/3
```VB
Sub CheckNumber(number As Integer)
' Check if the number is greater than 10
If number > 10 Then
' Display a message if the condition is true
MsgBox "The number is greater than 10."
Else
' Display a message if the condition is false
MsgBox "The number is not greater than 10."
End If
End Sub
```
---
<style scoped>
h6 { font-size: 18px; }
</style>
### VBA - Helloworld Example 1/2
```VB
Sub HelloWorld()
' Display a message box with "Hello, World!"
MsgBox "Hello, World!"
End Sub
Sub TestHelloWorld()
' Call the HelloWorld subroutine
HelloWorld
End Sub
```
###### Note to Louis: show debug, show run
---
### VBA - Helloworld Example 2/2
![bg height:66% ](./images/vba-helloworld-run.png)
---
# VBA - Q n A / Thank you
![bg height:33% ](./images/thank_you.png)
## <!--
### VBA - Procedures
```VB
Procedures
```
---
### VBA - Procedures
```VB
Procedures
```
---
### VBA - Procedures
```VB
Procedures
```
--- -->

2332
slides_01/yarn.lock Normal file

File diff suppressed because it is too large Load Diff