Board logo

標題: [發問] 想利用excel及圖書館哪種條碼機紀錄學生到學校時間 [打印本頁]

作者: kkman123    時間: 2012-11-27 22:40     標題: 想利用excel及圖書館哪種條碼機紀錄學生到學校時間

本帖最後由 kkman123 於 2012-11-27 22:41 編輯

請教各位高手,我想利用excel及圖書館哪種條碼機紀錄學生到學校時間:

                                   11月27日        11月28日        11月29日        11月30日
96001                8:12                       
96002                           7:40                       
96003                7:32                       
96004                           7:55                       
96005                           8:01                       


1.利用條碼機掃瞄學生學號。
2.比如今天是11月27日,掃瞄到學生96001的條碼後,會在11月27日和96001交會那格顯示出掃瞄時間8:12
3.隔天11月28日,掃瞄時會在11月28日和96001交會那格顯示出掃瞄時間

感謝各位高手!
作者: die78325    時間: 2012-11-28 09:14

回復 1# kkman123


    那也要看你的掃描功能有沒有辦法跟EXCEL連動八= ="
例如 "逼" 一下    工作頁的A1會產生編號 這樣的話 才有辦法設計哦@@"

也可能是我太淺了  請其他大大加以回覆......
作者: kkman123    時間: 2012-11-28 11:37

回復 2# die78325


您好,有試過,嗶一聲後excel有顯示學生的資料!

不好意思,我在花蓮的小學校服務,學校老師早上一到學校就會在圖書館陪小朋友閱讀30分鐘,
因為圖書館有條碼機,所以想利用條碼機配合excel自己設計一個記錄小朋友閱讀時間的檔案,
也讓老師們能節省時間,因為對excel不熟悉,才google到這裡詢問大家的。
感恩!
作者: die78325    時間: 2012-11-28 14:42

回復 3# kkman123

請先把EXCEL照我圖這樣打
    [attach]13309[/attach]


第一步---- 使用鍵盤 ALT + F11 打開VBA編輯  在左邊找ThisWorkbook 點兩下打開右側視窗並貼上以下
  1. Private Sub Workbook_Open()
  2. [b2] = Format(Date, "yyyy/mm/dd")
  3. End Sub
複製代碼
第二步---- 在ThisWorkbooks那一排點選右鍵 → 插入 → 模組
並把以下貼進去
  1. Option Explicit
  2. Sub 逼()
  3.     Dim 日期 As Range, 學號 As Range
  4.     With [A3] '設定哪行開始    '請照圖來做EXCEL
  5.         Set 日期 = Range(.Cells, .Cells.End(xlToRight)).Find([b1], LookAT:=xlWhole)
  6.         Set 學號 = Range(.Cells, .Cells.End(xlDown)).Find([[color=Red]A1[/color]])   '紅色處為逼之後產生的位置  預設為A1
  7.         Cells(學號.Row, 日期.Column) = Time
  8.     End With
  9. End Sub
複製代碼
第三步----
在EXCEL內新增一個圖案 (隨便)
點選圖案右鍵 →指定巨集   → 選擇『 逼 』確定  

以後就逼完就按圖案   應該就快多了 至少不用找日期找學號在打入時間

原本想幫妳做逼一下就直接執行  但 我試一直出現錯誤 請其他大大幫你解決這一部分
作者: Hsieh    時間: 2012-11-28 14:58

回復 3# kkman123
據了解條碼機讀入的資料是顯示在作用中的儲存格內
以此邏輯則必須將讀取條碼時直接點選該儲存格後再刷條碼
所以,就將檔案開啟時指定某一特定儲存格作為讀取使用(任何學號均讀入該儲存格)
然後利用工作表Change事件程序觸動,把該儲存格資料寫入對應位置
作者: kkman123    時間: 2012-11-28 15:56

[attach]13313[/attach][attach]13313[/attach]回復 5# Hsieh


    看到回應好感動啊!網路真的太厲害了! 感謝 die78325 和 Hsieh !
    不好意思,我試了十幾次,可是一直顯示這個錯誤,又請同事幫我把圖片檔案複製下來(請看圖片)   
    不知道是哪裡出錯了。
     再次感謝!
作者: kkman123    時間: 2012-11-28 16:12

[attach]13315[/attach][attach]13315[/attach]回復 6# kkman123


    不好意思,是事先出現還有"型態不符合"的這個視窗的。
    感恩!
作者: die78325    時間: 2012-11-28 17:10

回復 7# kkman123


Set 學號 = Range(.Cells, .Cells.End(xlDown)).Find([A1])

改為

Set 學號 = Range(.Cells, .Cells.End(xlDown)).Find([A1])
抱歉 原先因為想讓它變紅色讓你知道A1是可以更動的 結果沒想到把網頁的設置也用進去了
請修改後再測試!
作者: die78325    時間: 2012-11-28 17:30

回復 7# kkman123


    發現為什麼我不能使用觸發了= =因為要再要觸發的工作頁裡設定
   看你的表是做在哪個工作表  一樣打開VBA設置  這次不要打開THISWORKBOOK 這次點選你檔案的地方 例如 : 工作表1

  一樣打開 貼入以下程式   即可達成 逼一下就自動帶入程式  在逼一次就在執行新的學號
  1. Sub Worksheet_Change(ByVal Target As Range)
  2. If Target.Address = "$A$1" Then Call 逼
  3. End Sub
複製代碼

作者: kkman123    時間: 2012-11-28 18:16

本帖最後由 kkman123 於 2012-11-28 18:18 編輯

[attach]13317[/attach][attach]13317[/attach][attach]13316[/attach][attach]13316[/attach]回復 9# die78325

die78325 ,您好:好感謝您這麼熱心地幫忙!
不好意思,能力不足,又要請教您了!
剛剛發生了問題如(圖一)和(圖二)。
試了好幾次,黃黃的還是一直出現。
不好意思,又要麻煩您了!
感恩!
作者: die78325    時間: 2012-11-28 18:37

本帖最後由 die78325 於 2012-11-28 18:40 編輯

回復 10# kkman123


      你現在是直接觸發A1才錯誤
還是點選按鈕會錯誤  請重複我剛回答的部分再檢查一次
EXCEL都要照我的做  等你了解整個程式碼後再自行修改位置    我現在測試都正常哦 !

[A3]開始打   學號  [B3]  11/27  [C3]  11/28
觸發的程式要打在你目前有資料的那個工作頁   看你下面是 工作頁1還是工作頁2  在ALT +F11 那邊要選擇你的工作頁貼入觸發條件
或者先把觸發刪除 先用按鈕的 可以之後再去測試觸發的 !
B3 C3 D3 E3 F3這些日期欄位 都要設定成 [attach]13318[/attach]
作者: kkman123    時間: 2012-11-28 20:16

回復 11# die78325

die78325 ,您好:
我試出來了!原來我以為B1是嗶一下之後會自動出現的,原來B1是要由我設好來辨別日期的!
感恩啊!!:)
現在繼續測試觸發功能!!
謝謝您!!
感恩!!
作者: die78325    時間: 2012-11-28 20:54

回復 12# kkman123


    B1 我有幫你設定程式了 每次打開會自動打入今天的日期 所以你只要今天上完課就關掉
明天一早來打開就可以直接使用感應器來逼了  只要你下面的表格先打好以後的日期就可以了 ^^
我也才剛學一兩個禮拜.....希望學更多資訊可以幫助更多有需要的人^^ 也要請其他大大多教教我了
作者: kkman123    時間: 2012-11-28 21:07

回復 13# die78325


    die78325 ,您好:
觸發也能正確使用!
感恩啊,想了好久的事情沒想到在這個網站有好心的您幫忙!
明天會告訴主任,下個月就可以開始使用!
老師們也不用準備那麼多簽到簿寫來寫去,有更多時間陪讀了!
再次感恩!
作者: Hsieh    時間: 2012-11-28 21:09

回復 10# kkman123
假設刷條碼的資料會寫入IV1
就利用IV1產生變化時在對應位置寫入時間
在該工作表模組程式碼
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. t = Time
  3. Application.EnableEvents = False
  4. If Target.Address <> "$IV$1" Then _
  5. MsgBox "刷卡位置錯誤;請重新刷卡": Target.ClearContents: [IV1].Select: _
  6. Application.EnableEvents = True: Exit Sub
  7. r = Application.Match(CDbl(Date), Columns("A"), 0)
  8. k = Application.Match(Target, Rows(1), 0)
  9. Cells(r, k) = t
  10. Application.EnableEvents = True
  11. End Sub
複製代碼
[attach]13319[/attach]
[attach]13320[/attach]
作者: die78325    時間: 2012-11-28 21:42

回復 15# Hsieh


    果然高手就是高手  ~"~
我還要打兩三段
大大只要打一段就可以達到目的了......
也感謝大大讓我又多學了一課
r = Application.Match(CDbl(Date), Columns("A"), 0)
k = Application.Match(Target, Rows(1), 0)
這兩行不是很懂  大大可以解釋給我聽嗎@@?
作者: Hsieh    時間: 2012-11-28 21:57

本帖最後由 Hsieh 於 2012-11-28 21:59 編輯

回復 16# die78325
利用工作表函數MATCH找出對應的欄列位置
CDbl(Date)是因為工作表內的日期還是被認為數値所以轉成數値後才能正確找到日期位置
作者: kkman123    時間: 2012-11-29 10:05

回復 17# Hsieh

不好意思,請教:
研究了一晚,有將格式更正成我要的模式,也可以正常運作耶!
但是想要自己嘗試載入日期,有上網找到是用 =today() 的功能。
但是b1設定=today()後,卻一直發現錯誤。
感恩!感恩!
作者: Hsieh    時間: 2012-11-29 10:29

回復 18# kkman123


    可以上傳檔案以便了解錯誤出在哪裡
作者: kkman123    時間: 2012-11-29 11:14

[attach]13326[/attach][attach]13326[/attach]回復 19# Hsieh

1.檔案一(手動日期):D1的日期要手動輸入,A1用條碼機掃入96001後,可以顯示學生姓名(E1)時間(F1),下面的時間會也會顯示時間(D4)

2.檔案二(想要一開檔案就自動會入日期,我把D1改成 =TDAY()):D1的日期要手動輸入,A1用條碼機掃入96001後,可以顯示學生姓名(E1)時間(F1),但是下面的時間會顯示錯誤(D4)訊息。

上傳檔案大家參考,檔案來源都是die78325的設計! 都要感謝die78325的幫忙 !:)
不好意思,因為還是小學生,所以不能下載檔案。

感恩!再感恩!
作者: die78325    時間: 2012-11-29 11:33

本帖最後由 die78325 於 2012-11-29 11:36 編輯

回復 20# kkman123


發現您的問題了
你在VBA裡面  Thisworkbook內的程式要改為
b1  改為 d1  因為你日期欄位變動了
  1. Private Sub Workbook_Open()
  2. [d1] = Format(Date, "yyyy/mm/dd")
  3. End Sub
複製代碼
D1日期欄位不用打入公式  就把上面改好就好!
還有 F欄你設公式  不會每秒更動 除非一直重新計算   ((F欄其實是多餘的))  
因為我VBA友幫你設定打入目前時間
改完記得把你的D3改為11/29 不然你表內沒有11/29的 會錯誤 所以 如果日期不改  明天使用即可正常!
作者: kkman123    時間: 2012-11-29 12:41

回復 21# die78325

感謝die78325!
的確f1是多餘的。
當檔案再開啟時,果真日期會帶入今天的日期。
我現在把檔案設定在開始-程式集-啟動中,只要一開機就可以自動開啟excel檔案,然後直接拿條碼機就可以將資料讀入了!好方便啊!
再次感謝die78325的幫忙!
不好意思,還有一個問題請教:excel如何能夠每次開啟檔案時游標都會在A1呢?
我目前試過是存檔前把游標移到A1再存檔,下次打開時游標就會在A1。

感恩!
作者: die78325    時間: 2012-11-29 12:49

回復 22# kkman123

這邊是開啟就會自動指定A1
Private Sub Workbook_Open()
[d1] = Format(Date, "yyyy/mm/dd")
[A1].Select
End Sub

下面這些是多了 逼完之後自動回到A1 所以可以一直 逼 逼 逼

Option Explicit
Sub 逼()
    Dim 日期 As Range, 學號 As Range
    With [A3] '設定哪行開始    '請照圖來做EXCEL
        Set 日期 = Range(.Cells, .Cells.End(xlToRight)).Find([d1], LookAT:=xlWhole)
        Set 學號 = Range(.Cells, .Cells.End(xlDown)).Find([A1])   '紅色處為逼之後產生的位置  預設為A1
        Cells(學號.Row, 日期.Column) = Time
    End With
[A1].Select
End Sub
以上紅色都是要新增進去的   
其實H大大寫的程式 有一個重要的部分   如果你如果不在A1的地方逼 就會說位置錯誤 幫你回歸到A1
但如果你現在用的很OK 先暫時先這樣用八   如果你有特別需求 在幫你改@@"
作者: kkman123    時間: 2012-11-29 12:54

回復 23# die78325

To die78325,H大大:
測試過了!一切都很順利!
以學校來說是非常夠用的了!
感恩,感恩,在感恩啊!
作者: kkman123    時間: 2012-12-9 11:54

今天學到了一個:
在module1裡面加上
Workbooks(1).Save
這樣每輸入一個"逼"就會自動存檔一次喔!
作者: kkman123    時間: 2012-12-17 10:25

die78325,您好:
非常感謝您先前的幫忙!
不好意思,最近使用後發現條碼機有時會讀錯資料,導致程式一直出現除錯,有些老師會不知到怎麼解決。
週末研究了之前Hsie大大的程式,功力不足不太清楚該放在哪裡。。
可以請您提示:若想要增加辨識資料,讀錯後顯示『請重新再刷一次』,該怎麼做呢?
再次感恩!
作者: 234353    時間: 2015-3-25 14:50

我也需要类似i这样的登记系统,就是帮学生造一个条码卡  然后像超市购物时候 把卡移到条码读取器, 电脑就自动记录下读取的条码,然后记录下时间 和对应得学生资料存储起来
作者: for253    時間: 2016-5-5 19:14

回復 26# kkman123


    這篇文章很實用,但無奈是對ECXEL不熟,找到這裡來,權限不足XD。。




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