返回列表 上一主題 發帖

[發問] 考勤表VBA難題求助

回復 1# missbb

Range(fr, fc)中的fr、fc必需為Address不是用欄號和列號
所以要改成Cells(fr, fc)

TOP

本帖最後由 lpk187 於 2015-8-15 20:02 編輯

回復 3# missbb


   
Sub match2()
'combine id card no and date for searching


Dim srcrange As Range, fndrange As Range
Dim fstaddress As String, i As Integer
Dim fc As Integer
Dim fr As Integer
Dim fr2 As Integer

Worksheets("attendance report").Activate

fc = 1
fr = 4
fr2 = 3

Set srcrange = Worksheets("data").Range("a4").CurrentRegion.Columns(9)
Set fndrange = srcrange.Find(what:=Cells(fr, fc) & Format(Cells(fr2, 11), "d/m/yyyy"))
If Not fndrange Is Nothing Then

fstaddress = fndrange.Address

i = 5
Do
Cells(i, 11).Value = fndrange.Offset(, -2).Value
Cells(i + 1, 11).Value = fndrange.Offset(3, -2).Value
Cells(i + 7, 11).Value = fndrange.Offset(2, -2).Value
Cells(i + 8, 11).Value = fndrange.Offset(1, -2).Value
i = 1 + 1
Loop Until fndrange.Address = fstaddress
Else
MsgBox "XX"
End If
End Sub

TOP

本帖最後由 lpk187 於 2015-8-15 21:15 編輯

回復 5# missbb

我不知道對不對,以下給你參考
  1. Sub match2()
  2. 'combine id card no and date for searching
  3. Dim srcrange As Range, fndrange As Range
  4. Dim fstaddress As String, i As Integer
  5. Dim fc As Integer
  6. Dim fr As Integer
  7. Dim fr2 As Integer
  8. Worksheets("attendance report").Activate
  9. fc = 1
  10. fr = 4
  11. fr2 = 3
  12. Set srcrange = Worksheets("data").Range("a4").CurrentRegion.Columns(9)

  13. For Each Rng In [k3:ao3]
  14.     Set fndrange = srcrange.Find(Cells(fr, fc) & Format(Rng, "d/m/yyyy"))
  15.     If Not fndrange Is Nothing Then
  16.         Cells(5, Rng.Column).Value = fndrange.Offset(, -2).Value
  17.         Cells(6, Rng.Column).Value = fndrange.Offset(3, -2).Value
  18.         Cells(12, Rng.Column).Value = fndrange.Offset(2, -2).Value
  19.         Cells(13, Rng.Column).Value = fndrange.Offset(1, -2).Value
  20.         i = 1 + 1
  21.     Else
  22.     MsgBox "XX"
  23.     End If
  24. Next
  25. End Sub
複製代碼

TOP

本帖最後由 lpk187 於 2015-8-15 23:55 編輯

回復 7# missbb

(1) 如何做下一個員工呢, 因為共有200多人?
Ans:
這要看你員工編號要從哪裡讀取了,只要知美在哪讀取員工編號,就比較好做了!


考勤表 20150815 v4.rar (113.63 KB)

還有有時讀出的資料,有5筆這時又該如何呢?
我上傳的檔案,是把第5第放在下班時間,第4筆則不顯示

TOP

本帖最後由 lpk187 於 2015-8-16 00:50 編輯

回復 9# missbb

試試看!
我還是利用ee data資料夾來做,嗯,這樣比較方便!
    考勤表 20150815 v4.rar (117.04 KB)

TOP

回復 11# missbb

我發現,可能你當初寫這檔案時曾產生溢位而導致檔案變很大,來到1.7M
已經幫你處理好了(不過畫面有點不像原來的樣子),另外新增加一些功能”清除資料“ 及 ”自動填寫日期“以及程式解說,以利你明瞭程式的動作
   
考勤表 20150815 v5.rar (44.95 KB)

TOP

回復 15# missbb

ActiveSheet.Range("A4:AP23").Select
   
    Selection.Copy次<<這裡裡是選擇上面範圍A4:AP23製範圍的複製
但下面的紅色部份卻把上面的選擇更換掉了,所以它只能貼一次,第二次就會出錯了!
For i = 1 To QQQQ
     ActiveSheet.Range("A" & 1 + i * 20).Select
    ActiveSheet.Paste
  Next i
要複製貼上,只要一句就可解決,如下範例:
  1. Sub COPY_FORMAT()
  2. Dim i As Integer
  3.     Worksheets("attendance report").Activate
  4.     QQQQ = Worksheets("ee data").Cells(Rows.Count, "b").End(xlUp).Row
  5. For i = 1 To QQQQ
  6.     ActiveSheet.Range("A4:AP23").Copy Range("A" & 1 + i * 20)
  7. Next i
  8. End Sub
複製代碼

TOP

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