返回列表 上一主題 發帖

[發問] 如何寫符合條件後用MXGBOX方式表示

[發問] 如何寫符合條件後用MXGBOX方式表示

請教各位大大 小弟有一個資料庫 裡面有人名,加班小時,月份等等資料

小弟我想增加一個功能是在輸入的時候顯示"這個人"在"這個月"的"工作時數"有沒有超過30小時

如果有則用Msgbox方式表示,如沒有則不顯示

因為你沒有詳細的資料
我只能預設
A1儲存格為這個月的總加班時數
B1為人名
C1為月份


Sub test1()
Dim I As Integer
'計算A1到A100共有幾個項目,就跑幾次迴圈
For I = 1 To Application.WorksheetFunction.CountA(Range("a1:a100"))
If Cells(1, 1) > 30 Then MsgBox Cells(1, 2) & "在" & Cells(1, 3) & "月份,總工作時數為" & Cells(1, 1) & "小時"
Next I

End Sub
PKKO

TOP

用PKKO提供的方法,再加上worksheet_change
可以達到輸入的時候顯示的效果.

如果能提供EXCEL/頁面位置,可以更易解释給你聴
懂得發問,答案就會在其中

今日の一秒は  明日にない
http://kimbalko-chi.blogspot.com
http://kimbalko.blogspot.com

TOP

回復 2# PKKO


    感謝大大的教導,只是我需要在MAGBOX顯示前先比對    我輸入的這筆資料"這個人"在"這個月"的加班時數加總  

需要同時符合月份、姓名    跟SUMIFS函數一樣(2個條件),只是不懂得如何在VBA裡用程式碼去判斷後加總

TOP

回復 3# kimbal


    謝謝版主的提醒,因為檔案裏面有個資所以不方便提供上來.............

TOP

還是提供範例吧!
不然無法寫出您的需求
把個人資料刪除換成ABC即可
PKKO

TOP

回復 6# PKKO

附上檔案~~

OT Keyin.rar (113.43 KB)

TOP

你附上了檔案,但看不太懂你的檔案...
PKKO

TOP

本帖最後由 GBKEE 於 2014-8-28 05:06 編輯

回復 7# 小華
  1. Workbooks.Open Filename:=y.Range("L20") '開啟資料庫
複製代碼
'你的資料庫是在Workbooks.Open裡,還是[OT  Keyin.xlsm]!DataBasa
  1. Private Sub Enter_Click()
  2.     Dim Rng As Range, The_allTime As Single, AddTime As Single, Msg As Boolean
  3.     If ComboBox1 <> "" And Year01 <> "" And Month01 <> "" Then
  4.                 With Sheets("DataBasa")
  5.             Set Rng = .Range("a6").CurrentRegion    '資料庫
  6. '*******************設資料庫準則
  7.             .Cells(1, .Columns.Count) = "日期條件"  '條件式準則欄位名稱,須與資料庫的欄位名稱不相同
  8.             .Cells(2, .Columns.Count) = "=AND(YEAR(日期)=" & Year01 & ",MONTH(日期)=" & Month01 & ")"
  9.             
  10.             .Cells(1, .Columns.Count - 1) = "姓名" ' "總工時"
  11.             .Cells(2, .Columns.Count - 1) = ComboBox1
  12.             
  13.             The_allTime = Application.DSum(Rng, "總工時", .Cells(1, .Columns.Count - 1).Resize(2, 2))
  14.             'Application.DSum  資料庫函數(H0 參數:=資料庫,參數:=欄位,參數:=準則條件) 加總
  15.             If The_allTime > 30 Then
  16.                 Msg = True
  17.                 MsgBox ComboBox1 & "  " & Year01 & "/" & Month01 & "加班時數 " & The_allTime
  18.                
  19.             ElseIf ComboBox6 <> "" And ComboBox5 <> "" Then
  20.                 AddTime = (TimeValue(ComboBox6) - TimeValue(ComboBox5)) * 24  '新增加班時數
  21.              If The_allTime + AddTime > 30 Then     '以加班時數+新憎班時數
  22.                 Msg = True
  23.                 MsgBox ComboBox1 & "  " & Year01 & "/" & Month01 & "加班時數 " & The_allTime & " + " & AddTime
  24.              End If
  25.             End If
  26.         End With
  27.     End If
  28.     If Msg Then Exit Sub   '有超過30小時,離開程式

  29. Set w = Sheets("DataBasa")
  30. Set Y = Sheets("Base")
  31. AAAA = ""
  32. '你繼續下去的程式碼
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 9# GBKEE


    感謝版大~~我先來消化一下你寫的程式碼~~

我的資料庫是在[OT  Keyin.xlsm]!DataBasa

TOP

        靜思自在 : 【生命在呼吸間】佛陀說:「生命在呼吸間。」人無法管住自己的生命,更無法擋住死期,讓自己永住人間。既然生命去來這麼無常,我們更應該好好地愛惜它、利用它、充實它,讓這無常、寶貴的生命,散發它真善美的光輝,映照出生命真正的價值。
返回列表 上一主題