Board logo

標題: [發問] 該如何輸入完資料後,自動往下一儲存格繼續輸入資料 [打印本頁]

作者: yueh0720    時間: 2011-7-19 12:58     標題: 該如何輸入完資料後,自動往下一儲存格繼續輸入資料

[attach]7053[/attach]
  有筆資料輸入,該如何簡化按鍵使用
  輸入姓名,國文分數,英文分數,自動跳至下一個姓名輸入位置("B4")
  數量500名學生,
作者: GBKEE    時間: 2011-7-19 13:39

回復 1# yueh0720
該工作表儲存格有輸入時的預設事件
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.     Dim Rng As Range, R1%, R2%
  3.     Set Rng = Range("B2").CurrentRegion
  4.     'CurrentRegion以任意空白列及空白欄的組合為邊界的連續範圍
  5.     If Not Application.Intersect(Target(1), Rng) Is Nothing Then   'Rng的範圍包含Target(1)的位址
  6.     'Target(1) ->工作表所選擇範圍的第一個儲存格
  7.         If Target(1).Row = Rng.Row Then Exit Sub    ' 在第一列
  8.         R1 = Rng.Column                             '第一欄的   欄數
  9.         R2 = Rng(1, Rng.Columns.Count).Column       '最後一欄的 欄數
  10.         If Application.CountA(Range(Cells(Target(1).Row, R1), Cells(Target(1).Row, R2))) = Rng.Columns.Count Then
  11.             '有資料數的儲存格=Rng的總欄數
  12.             Cells(Target(1).Row + 1, R1).Select  '選擇下一列的第1欄
  13.         End If
  14.        End If
  15. End Sub
複製代碼

作者: yueh0720    時間: 2011-7-19 13:52

忘了需要增加輸入姓名後,自動往國文分數儲存格移動
作者: GBKEE    時間: 2011-7-19 16:32

回復 3# yueh0720
試試看
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.     Dim Rng As Range, R1%, R2%
  3.     Set Rng = Range("B2").CurrentRegion
  4.     'CurrentRegion以任意空白列及空白欄的組合為邊界的連續範圍
  5.     If Not Application.Intersect(Target(1), Rng) Is Nothing Then   'Rng的範圍包含Target(1)的位址
  6.     'Target(1) ->工作表所選擇範圍的第一個儲存格
  7.         If Target(1).Row = Rng.Row Then Exit Sub    ' 在第一列
  8.         R1 = Rng.Column                             '第一欄的   欄數
  9.         R2 = Rng(1, Rng.Columns.Count).Column       '最後一欄的 欄數
  10.         If Application.CountA(Range(Cells(Target(1).Row, R1), Cells(Target(1).Row, R2))) = Rng.Columns.Count Then
  11.             '有資料數的儲存格=Rng的總欄數
  12.             Cells(Target(1).Row + 1, R1).Select  '選擇下一列的第1欄
  13.         Else      '有資料數的儲存格<>Rng的總欄數
  14.             If Target(1) <> "" Then
  15.                 R2 = IIf(Target(1).Column = R2, R1, Target(1).Column + 1)
  16.                 '如為最後一欄的 返回第1欄 否往右一欄
  17.                 Cells(Target(1).Row, R2).Select  '往右一欄
  18.             End If
  19.         End If
  20.        End If
  21. End Sub
複製代碼

作者: yueh0720    時間: 2011-7-19 17:30

版主,我將A欄設定為座號後,輸入完英文分數,即跳至座號欄位去
無法跳至姓名欄位
作者: GBKEE    時間: 2011-7-19 17:40

回復 5# yueh0720
你不附上檔案,我會一直在瞎子摸象的
作者: yueh0720    時間: 2011-7-19 17:52

沒有檔案,只是製作一個資料表格,多一個座位號碼在A欄
其它不會再更改新增了,
作者: av8d    時間: 2011-7-19 18:31

本帖最後由 av8d 於 2011-7-19 19:19 編輯

回復 1# yueh0720

假設你的最後一欄資料是英文好了,如果是要從英文D3跳到B4,然後輸入到D4直接跳到B5,我倒是有一個方法。

工具→巨集→錄至新巨集→快速鍵Ctrl+?(自行設定)(我是設定Q)→停止錄製→
Alt+F11→打開Macro1→Range("A" & ActiveCell.Row + 1).Select    將這段放入巨集內(如下圖)
  1. Sub Macro1()
  2. '
  3. ' Macro1 Macro
  4. ' Allen 在 2011/7/19 錄製的巨集
  5. '
  6. Range("A" & ActiveCell.Row + 1).Select
  7. '
  8. End Sub
複製代碼
只要您每次輸入到最後一欄,按下Ctrl+?(自行設定)(我是設定Q),即可跳到下一列的B欄。
如果還有不懂在發問囉!祝您早日完成成績表。
作者: Hsieh    時間: 2011-7-19 19:05

這樣的問題,如果自己不去了解程式碼
沒人可以一再的幫你更改
作者: GBKEE    時間: 2011-7-19 19:34

回復 7# yueh0720
這樣的問題,如果自己不去了解程式碼,沒人可以一再的幫你更改

你1樓的表單開頭在B2 -> Set Rng = Range("B2").CurrentRegion     'CurrentRegion以任意空白列及空白欄的組合為邊界的連續範圍
那你想資料表格,多一個座位號碼在A欄 這程式碼要改哪裡?
作者: yueh0720    時間: 2011-7-20 10:53

版主,謝謝
程式碼我試修改看看,若有問題在請教




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