返回列表 上一主題 發帖

[發問] 怎麼抓取A資料表假日上班的日期與時間到B資料表的儲存格中

假日上班申請單(資料表怎麼判斷)

請假&出勤申請單(上傳用).zip (38.55 KB)

請問各位專業的大大:
我的目的是將11月班表假日(六、日)有出勤的日子,直接再假日出勤單上顯示
此附件為1人整月上班日子的範本,如果可以直接對照的話,那麼公司同仁的假日出勤單都可直接列印出,就不用各別檢查key in了

如附件有兩個資料表,資料表"假日出勤單"內,紅字部分我想直接對照資料表"11月"進行判斷,請問該如何寫呢?
因為我還是生手,知道要用if判斷式,但不知道該怎麼寫出來,請各位大大指導~

感恩
不會EXCALL的笨蛋

TOP

回復 1# prince0413
你上傳的檔案少了副檔名,
我自行在後面加上 .zip 後才看到檔案.

你看看是否可以符合你的需求:
請假&出勤申請單-a.zip (47 KB)
  1. Private Sub cbCrtTbl_Click()
  2.   Dim iDate%, iLoc%, iTbl%, iEnd%
  3.   Dim lRow&
  4.   Dim sStr$
  5.   Dim wsSou As Worksheet, wsTar As Worksheet
  6.   
  7.   Set wsSou = Sheets("11月")
  8.   Set wsTar = Sheets("假日出勤單")
  9.   wsTar.Activate
  10.   
  11.   lRow = 11
  12.   With wsSou
  13.     iTbl = 0
  14.     Do While .Cells(lRow, 4) <> ""
  15.       sStr = .Cells(lRow, 6)
  16.       iLoc = InStr(1, sStr, "/") + 1
  17.       Do While iLoc < Len(sStr)
  18.         iEnd = InStr(iLoc, sStr, ".")
  19.         If iEnd = 0 Then iEnd = Len(sStr) + 1
  20.         iDate = Mid(sStr, iLoc, iEnd - iLoc)
  21.         wsTar.Cells(5 + iTbl * 14, 1) = CDate("2013/11/" & iDate)
  22.         wsTar.Cells(5 + iTbl * 14, 2) = .Cells(lRow, 4)
  23.         If iTbl = 1 Then
  24.           wsTar.PrintPreview
  25.           iTbl = -1
  26.         End If
  27.         iLoc = iEnd + 1
  28.         iTbl = iTbl + 1
  29.       Loop
  30.       lRow = lRow + 1
  31.     Loop
  32.     If iTbl = 1 Then
  33.       wsTar.Cells(5 + iTbl * 14, 1) = ""
  34.       wsTar.Cells(5 + iTbl * 14, 2) = ""
  35.       wsTar.PrintPreview
  36.     End If
  37.     .Activate
  38.   End With
  39. End Sub
複製代碼

TOP

回復 2# luhpro

大大不好意思

我有貼你的程式碼進去
執行後跑出的值都是錯誤日期呢

是否我有設定錯誤呢?
不會EXCALL的笨蛋

TOP

回復 3# prince0413
如果你確定 Sheets("11月") 的
F11=11/9.23.30               
F12=11/3.10.17.24               
F13=11/2.9.23.30               
那應該就不會有錯,
不如你把檔案傳上來看看.

PS. 我的程式是依你提供的範例檔做出來的,
抓的是如下圖中 Mark 起來的6個儲存格中的資料,
請再確認一下:

TOP

回復 4# luhpro


謝謝大大

我在研究看看好呢
感恩
不會EXCALL的笨蛋

TOP

回復 4# luhpro


還是大大你有在假日出勤表上設定一個cbCrtTbl的按鈕?
我沒設  所以直接執行才會錯誤?!
不會EXCALL的笨蛋

TOP

回復 4# luhpro

請假&出勤申請單(上傳用).ZIP.zip (50.88 KB)
   
大大你好

這是我貼你的程式的版本

按按鈕執行時  出來的日期怪怪的   而且"出勤事由"那裡的星期X也沒有抓到資料呢~"~

是我哪裡設定錯誤嗎
不會EXCALL的笨蛋

TOP

本帖最後由 luhpro 於 2013-11-14 22:35 編輯
回復  luhpro
大大你好
這是我貼你的程式的版本
按按鈕執行時  出來的日期怪怪的   而且"出勤事由"那裡的星期X也沒有抓到資料呢~"~
prince0413 發表於 2013-11-14 17:16

日期怪怪的? 應該不會的啊, 你看我的抓圖 :
第一頁
第二頁
第四頁
第六頁
至於 "出勤事由" 內沒資料這個問題,
上面的程式我本來就沒做這個部份.
因為不確定你的事由是否要由程式自動產生,
亦或是之後再由手寫補上.
既然你希望程式自動產生,
那就再調整一下囉.
  1. Sub cbCrtTbl_Click()
  2.   Dim iDate%, iLoc%, iTbl%, iEnd%
  3.   Dim lRow&
  4.   Dim sStr$
  5.   Dim wsSou As Worksheet, wsTar As Worksheet

  6.   Set wsSou = Sheets("11月")
  7.   Set wsTar = Sheets("假日出勤單")
  8.   wsTar.Activate
  9.   lRow = 11

  10.   With wsSou
  11.     iTbl = 0
  12.     Do While .Cells(lRow, 4) <> ""
  13.       sStr = .Cells(lRow, 6)
  14.       iLoc = InStr(1, sStr, "/") + 1
  15.       Do While iLoc < Len(sStr)
  16.         iEnd = InStr(iLoc, sStr, ".")
  17.         If iEnd = 0 Then iEnd = Len(sStr) + 1
  18.         iDate = Mid(sStr, iLoc, iEnd - iLoc)
  19.         wsTar.Cells(5 + iTbl * 14, 1) = CDate("2013/11/" & iDate)
  20.         wsTar.Cells(5 + iTbl * 14, 2) = .Cells(lRow, 4)
  21.         wsTar.Cells(5 + iTbl * 14, 4) = "(星期" & Choose(Weekday(CDate("2013/11/" & iDate), 2), _
  22.                             "一", "二", "三", "四", "五", "六", "日") & ")沙龍營業"
  23.         
  24.         If iTbl = 1 Then
  25.           wsTar.PrintPreview
  26.           iTbl = -1
  27.         End If

  28.         iLoc = iEnd + 1
  29.         iTbl = iTbl + 1
  30.       Loop
  31.       lRow = lRow + 1
  32.     Loop

  33.     If iTbl = 1 Then
  34.       wsTar.Cells(5 + iTbl * 14, 1) = ""
  35.       wsTar.Cells(5 + iTbl * 14, 2) = ""
  36.       wsTar.Cells(5 + iTbl * 14, 4) = ""
  37.       wsTar.PrintPreview
  38.     End If
  39.     .Activate
  40.   End With
  41. End Sub
複製代碼
請假&出勤申請單-a.zip (51.03 KB)

TOP

回復 8# luhpro


大大您好

假日SHOW"全日"    代表有上班     才需要寫假日出勤單

11/9  則是無出勤    所以不需要抓資料呢  

我貼大大您的程式執行出來的結果抓出來的資料都是無上班的日子呢     

補充: 全日也有分早、晚班時間,如果單單顯示全日則代表整天,都是靠下面的時間和日期表做判斷的哦

PS: 大大可否解釋一下程式的意義,因為我想要學,之後可能會有很多人的班表,我想做個下拉式選單,選出某某人,然後在像此方式印出他的出勤申請單

不好意思    我沒有讀很多程式的書     所以很麻煩您
不會EXCALL的笨蛋

TOP

請假&出勤申請單(上傳用).zip.zip (51.83 KB) 回復 8# luhpro


大大您好

這是我有針對"11月"資料表稍為修改後的檔案(新增假日有分早晚班及全日班)

但是貼您的程式執行後出來的日期並不是該人假日上班的日期呢

請問我是哪裡有設定錯誤嗎?!
不會EXCALL的笨蛋

TOP

        靜思自在 : 受人點水之恩,須當湧泉以報。
返回列表 上一主題