Option Explicit
' อัตราค่าบริการ ประเภท 11 บ้านที่อยู่อาศัย
' คือใช้พลังงานไฟฟ้าเกิน 150 หน่วยต่อเดือน
Const FeePaid As Double = 40.9
' คือ 40.9 บาท เป็นค่าบริการถอดมิเตอร์ (ล่วงหน้า) ... ส่วน 107 บาท เป็นบริการใส่กลับคืน (ตามหลัง) ... 55555+ คิดได้ไงเนี่ย ....
PriVate Sub cmdCalElectric_Click()
Dim FirstUnit As Double ' ไม่เกิน 150 หน่วย (150 หน่วยแรก)
Dim SecondUnit As Double ' มากกว่า 150 หน่วย แต่ไม่เกิน 400 หน่วย (หรือ 400 - 150 = 250 หน่วย)
Dim ThirdUnit As Double ' มากกว่า 400 หน่วยขึ้นไป
Dim SumElectricCost As Double ' (1) ผลรวมของค่าไฟฟ้ามาตรฐาน
Dim SumFT As Double ' (2). ค่า FT คูณจำนวนหน่วย
Dim Vat As Double ' (3). เอา 1 + 2 แล้วหาค่าภาษี 7%
Dim TotalAmount As Double ' (4) เอา 1 + 2 + 3 คืออัตราค่าไฟฟ้าทั้งหมด
If txtUnit.Text = 0 Or IsNull(txtUnit.Text) Then Exit Sub
If txtFT.Text = "" Or IsNull(txtFT.Text) Then txtFT.Text = "0"
txtSummary.Text = ""
' กรณีแรกใช้ไฟฟ้าระหว่าง 0 - 150 หน่วย
If Val(txtUnit.Text) <= 150 Then
FirstUnit = Val(txtUnit.Text) * 1.8047
' บวกค่าบริการด้วย (สงสัยว่ามันบริการอะไร ...)
SumElectricCost = FirstUnit + FeePaid
SumFT = Val(txtUnit.Text) * Val(txtFT.Text)
Vat = ((SumElectricCost + SumFT) * 7) / 100
TotalAmount = SumElectricCost + SumFT + Vat
txtSummary.Text = "==================" & vbCrLf & _
"รวมจำนวนเงิน = " & Format(SumElectricCost, "#,##0.00") & vbCrLf & _
"ค่า FT = " & Format(SumFT, "#,##0.00") & vbCrLf & _
"==================" & vbCrLf & _
"รวมเงินค่าไฟฟ้า = " & Format(SumElectricCost + SumFT, "#,##0.00") & vbCrLf & _
"ภาษีมูลค่าเพิ่ม = " & Format(Vat, "#,##0.00") & vbCrLf & vbCrLf & _
"รวมเงินที่ต้องชำระ: " & Format(TotalAmount, "#,##0.00") & " บาท."
' ใช้ไฟฟ้าระหว่าง 151 - 400 หน่วย (หรือ 400 - 150 = 250 หน่วย)
ElseIf (Val(txtUnit.Text) > 150) And (Val(txtUnit.Text) <= 400) Then
FirstUnit = 150 * 1.8047
SecondUnit = (Val(txtUnit.Text) - 150) * 2.7781
SumElectricCost = Format(FirstUnit + SecondUnit + FeePaid, "#,##0.00")
SumFT = Val(txtUnit.Text) * Val(txtFT.Text)
Vat = ((SumElectricCost + SumFT) * 7) / 100
TotalAmount = SumElectricCost + SumFT + Vat
txtSummary.Text = "150 หน่วยแรก = " & Format(FirstUnit, "#,##0.00") & vbCrLf & _
"250 หน่วยต่อไป = " & Format(SecondUnit, "#,##0.00") & vbCrLf & _
"==================" & vbCrLf & _
"รวมจำนวนเงิน = " & Format(SumElectricCost, "#,##0.00") & vbCrLf & _
"ค่า FT = " & Format(SumFT, "#,##0.00") & vbCrLf & _
"==================" & vbCrLf & _
"รวมเงินค่าไฟฟ้า = " & Format(SumElectricCost + SumFT, "#,##0.00") & vbCrLf & _
"ภาษีมูลค่าเพิ่ม = " & Format(Vat, "#,##0.00") & vbCrLf & vbCrLf & _
"รวมเงินที่ต้องชำระ: " & Format(TotalAmount, "#,##0.00") & " บาท."
' ใช้ไฟฟ้าตั้งแต่ 401 หน่วยขึ้นไป
ElseIf (Val(txtUnit.Text) > 400) Then
FirstUnit = 150 * 1.8047
SecondUnit = 250 * 2.7781
ThirdUnit = (Val(txtUnit.Text) - 400) * 2.978
SumElectricCost = FirstUnit + SecondUnit + ThirdUnit + FeePaid
SumFT = Val(txtUnit.Text) * Val(txtFT.Text)
Vat = ((SumElectricCost + SumFT) * 7) / 100
TotalAmount = SumElectricCost + SumFT + Vat
txtSummary.Text = "150 หน่วยแรก = " & Format(FirstUnit, "#,##0.00") & vbCrLf & _
"250 หน่วยต่อไป = " & Format(SecondUnit, "#,##0.00") & vbCrLf & _
"400 หน่วยขึ้นไป = " & Format(ThirdUnit, "#,##0.00") & vbCrLf & _
"==================" & vbCrLf & _
"รวมจำนวนเงิน = " & Format(SumElectricCost, "#,##0.00") & vbCrLf & _
"ค่า FT = " & Format(SumFT, "#,##0.00") & vbCrLf & _
"==================" & vbCrLf & _
"รวมเงินค่าไฟฟ้า = " & Format(SumElectricCost + SumFT, "#,##0.00") & vbCrLf & _
"ภาษีมูลค่าเพิ่ม = " & Format(Vat, "#,##0.00") & vbCrLf & vbCrLf & _
"รวมเงินที่ต้องชำระ: " & Format(TotalAmount, "#,##0.00") & " บาท."
End If
' =========== แถม ===========
' กรณีของการใช้ Select Case ...
'Select Case Val(txtUnit.Text)
' Case 0 To 150
' MsgBox "0 - 150 (หรือ 150 หน่วยแรก)"
' Case 151 To 400
' MsgBox "151 - 400 (หรือ 250 หน่วย)"
' Case Else
' MsgBox "401หน่วย ขึ้นไป"
'End Select
' ==========================
Call HLText(txtUnit)
End Sub
' จะใช้ตัวนี้ได้ก็ต่อเมื่อตั้งค่าคุณสมบัติของฟอร์ม KeyPreview = True ก่อนด้วยครับ
' หมายความว่าเราสามารถใช้ปุ่มฟังค์ชั่นต่างๆของฟอร์มได้ ...
PriVate Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
' กดปุ่มฟังค์ชั่น F8
Case vbKeyF8
Call cmdCalElectric_Click
' กดปุ่มฟังค์ชั่น F10
Case vbKeyF10
End
End Select
End Sub
PriVate Sub Form_Load()
Me.Move (Screen.Width - Width) \ 2, (Screen.Height - Height) \ 2
txtUnit.Text = ""
txtFT.Text = "0.9255"
txtSummary.Text = ""
End Sub
PriVate Sub txtFT_GotFocus()
' ฟังค์ชั่นนี้อยู่ใน modFunction เพื่อเลือกข้อมูลใน Text Box ทั้งหมด
Call HLText(txtFT)
End Sub
PriVate Sub txtFT_KeyPress(KeyAscii As Integer)
If KeyAscii = vbKeyReturn Then
KeyAscii = 0
Call cmdCalElectric_Click
Else
' ฟังค์ชั่นนี้อยู่ใน modFunction เพื่อตรวจสอบการกดคีย์ 0 - 9 และ จุดทศนิยม
KeyAscii = CheckCurrency(KeyAscii, txtFT)
End If
End Sub
PriVate Sub txtUnit_KeyPress(KeyAscii As Integer)
' กดปุ่ม Enter ส่งรหัส ASCII =13
If KeyAscii = vbKeyReturn Then
KeyAscii = 0
Call cmdCalElectric_Click
Else
' ฟังค์ชั่นนี้อยู่ใน modFunction เพื่อตรวจสอบการกดคีย์ 0 - 9 เท่านั้น
KeyAscii = CheckDigitOnly(KeyAscii)
End If
End Sub
|