Board logo

標題: [發問] 表單_運算式 [打印本頁]

作者: solely    時間: 2010-9-22 13:48     標題: 表單_運算式

本帖最後由 solely 於 2011-6-5 22:18 編輯

這幾天看了oobird Hsieh兩位老師的回文(保護工作表)
我也模擬了一下,感覺蠻炫的...pw→menu→personnel
使用者的密碼12345 自已的密碼solely(總不能把自已也鎖了XD)
由於我的邏輯觀念不好,也還不會用with,所以使用了if.
我的問題是.....
[attach]2843[/attach]
1.我想在keyin投保金額後,自動顯示健保費
   可是我若不先輸入眷口數和補助的人數就會跳異常-.-"""
  1. Private Sub Cmbx_health_Change()
  2. TextBox11 = (Round(Cmbx_health * 0.0517 * 0.3, 0) - Round(Cmbx_health * 0.0062 * 0.3, 0)) * (1 + dependant - subsidy)
  3. End Sub
複製代碼
2.若是利用我的(工作表_類別)來換算保費,又該如何寫程式??
3.如上圖 上半段是基本人事資料 下半段是薪資資料
   是否有方法 在共用同一張表單(personnel)的情況下
   可以讓使用者12345只看到上半段的資料
   曾想過利用If ct.Name Like "TextBox*" Then ct.Visible = false的方式
   可是不知道怎麼運用?
[attach]2844[/attach]
作者: Hsieh    時間: 2010-9-22 16:44

回復 1# solely


1.
  TextBox11 = (Round(Val(Cmbx_health) * 0.0517 * 0.3, 0) - Round(Val(Cmbx_health) * 0.0062 * 0.3, 0)) * (1 + Val(dependant) - Val(subsidy))

2.
換算保費,你要再甚麼時機換算,將結果放在何處?還有就是保費的換算公式為何?

3.
比較簡單作法是,物件的VISIBLE先設為FALSE,啟動表單時再判斷密碼,若密碼正確就全部顯示
[attach]2846[/attach]
作者: solely    時間: 2010-9-22 20:47

回復 2# Hsieh
1.Val、countdollar我學會怎麼使用了,感謝版主!!
2.換算保費,我是打算在新增資料的時候就算好
    至於換算結果,想請問版主是放在sheets(人事資料)
    還是另外開個薪資資料存放比較好??(若以隱密性為考量)
3.保費的詳細計算方式,我想自已先試著寫
    只是我不知道在表單裡要怎麼抓取sheets(類別)的資料
    例如textbox11=VLOOKUP(Cmbx_health,類別!A250,4)*(1+ dependant - subsidy)
   vba要怎麼表示
4.以solely密碼進入,下半段的薪資資料看不到
    沒用過Public不知道問題出在哪??
作者: Hsieh    時間: 2010-9-22 21:47

以solely密碼進入,下半段的薪資資料看不到
是因為你使用End結束所有工作
pw表單模組
  1. Private Sub CommandButton1_Click()
  2. If TextBox1 = "12345" Then
  3.     menu.Show: GoTo 100
  4.    ElseIf TextBox1 = "solely" Then
  5.    GoTo 100
  6. End If
  7.      ThisWorkbook.Close
  8. 100
  9. wp = TextBox1.Text
  10. Unload Me
  11. End Sub
複製代碼

作者: solely    時間: 2010-9-23 22:52

本帖最後由 solely 於 2010-9-24 07:42 編輯

回復 4# Hsieh
原來unload和end有差別XDD...謝謝版主~
想請問一下,round不是四捨五入嗎?
為什麼TextBox11健保費 若是150,000換算出來的值是2326
我是哪裡出錯了
With Personnel
   h = Val(.Cmbx_health)
  .TextBox11=Round(h*0.0517*0.3,0)
作者: Hsieh    時間: 2010-9-23 23:12

回復 5# solely
健保費率計算公式我不知道
你要依照計算公式來設計流程
請有算過健保的人幫忙
作者: solely    時間: 2010-9-23 23:22

回復 6# Hsieh

投保薪資<42000
健保費=(投保薪資*5.17%-費差0.62%)*個人負擔30%
投保薪資>42000 and <53000
健保費=(投保薪資*5.17%-費差0.62%*20%)*個人負擔30%
投保薪資>=53000
健保費=(投保薪資*5.17%-費差0)*個人負擔30%
所以round(150,000*0.0517-0)*30%應該是2327
可是程式算出來是2326  不知道是為什麼??
作者: solely    時間: 2010-9-24 00:03

我想......可能是我的電腦需要休息了XDD
刪去所有直接算
Sub countdollar()
With Personnel
   h = Val(.Cmbx_health)
  .TextBox11=Round(h*0.0517*0.3,0)
End With
End Sub
算出來的值是2326... 0.0
作者: Hsieh    時間: 2010-9-24 14:43

With Personnel
   h = Val(.Cmbx_health)
  .TextBox11=Application.Round(h*0.0517*0.3,0)
End With
為何會有如此差異?原因為何?還請知道的前輩指導




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)