Board logo

標題: [發問] EXCEL VBA.如何自動輸入資料(以tab跳下一格) [打印本頁]

作者: symis    時間: 2013-3-22 11:12     標題: excel 2007 vba 如何寫自動輸入資料的code?

工作表中,有不規則的cell要輸入測試資料,數量很多,假設是:(A1:C1,F1:H1,A3:C3,F3:H3,B5:B7,D5:D7,E5:E7,A8,C9:D9)
請問如何能讓電腦自動輸入資料?
輸入的資料從1開始,逐次加1即可,這樣無論文字或數字皆可適用
(唯一會有問題的是日期欄位,輸入的數字可能會不合法,故暫不考慮,還是有高人有解?)
謝謝!
作者: GBKEE    時間: 2013-3-22 13:24

回復 1# symis
看不懂你的說明!請傳上範例檔案,會清楚些.
作者: symis    時間: 2013-3-22 14:38

本帖最後由 symis 於 2013-3-22 14:41 編輯

顯示方式: 如圖:
[attach]14426[/attach]
謝謝!
作者: symis    時間: 2013-3-22 14:38

http://upload.pmp4.net/view/g/20130322113919vt2q1.jpg.html

作者: symis    時間: 2013-3-22 14:47

不好意思,3f的c5的14是多打的,故4f也是錯的
我重傳好了
[attach]14427[/attach]
作者: GBKEE    時間: 2013-3-22 17:38

回復 5# symis
是這樣嗎?
  1. Option Explicit
  2. Sub Ex()
  3.     Dim Rng As Range, i As Integer, e As Range
  4.     Set Rng = Range("A1:C1,F1:H1,A3:C3,F3:H3,B5:B7,D5:D7,E5:E7,A8,C9:D9")
  5.     'Set Rng = Selection             '或是工作表上選定的儲存格
  6.     For i = 1 To Rng.Areas.Count
  7.         'Areas 屬性 套用至範例特定傳回 Areas 集合,此集合代表多重範圍中的所有範圍。唯讀。
  8.         'Count 屬性。傳回集合物件中物件數目。唯讀 Integer。
  9.         For Each e In Rng.Areas(i)
  10.             e.Value = e.Address     '不知你要動輸入??資料
  11.         Next
  12.     Next
  13. End Sub
複製代碼

作者: symis    時間: 2013-3-25 15:52

是的GBKEE 大,很感謝您
現在又有另一個需求: 類似像5f的圖,但是並不事先預定要輸入的範圍,而是輸入第每一格後,按tab到一下格,直到最底下為止。
這個需求我自己想一下,謝謝!
作者: GBKEE    時間: 2013-3-25 16:10

回復 7# symis
不事先預定要輸入的範圍
範圍是哪裡:須說明一下
作者: symis    時間: 2013-3-25 17:44     標題: EXCEL VBA.如何自動輸入資料(以tab跳下一格)

我用的是: EXCEL 2007
檔案在:
http://www.FunP.Net/467011
執行時,開啟巨集,不開連結
內有3個sheet: 第10頁,第11頁,第13頁
我已經寫好一段vba,能自動依欄號填入資料
問題1: 因原作者的tab跳格設計不良,故在判斷上並不理想,導致可能有漏輸入的格子,該如何因應?
問題2:第13頁已經能自動輸入白底的格子,黃底格不用輸入,請問,綠底格為下拉式選單,或日期格式,要怎樣才能自動輸入?
我想: 遇下拉式選單,一律選第一項,遇年月日,一律填99/12/31
感謝!
作者: symis    時間: 2013-3-28 17:02

請問:
1. 在自動輸入的過程中,程式要怎知道哪一格有下拉式選單?
2. 知道了以後,程式要如何自動選擇第一項?
謝謝!
作者: GBKEE    時間: 2013-3-28 19:19

回復 10# symis
在你的檔案中,不是下拉選單應是驗證清單.
預設工作表中移動儲存格的事件
  1. Option Explicit
  2. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  3.     If Not Target.Validation Is Nothing Then Target = Split(Target.Validation.Formula1, ",")(0)
  4. End Sub
複製代碼
[attach]14476[/attach]
作者: symis    時間: 2013-4-3 11:36

感謝GBKEE的教導,
我漏看本貼有第2頁,所以一直在等人回覆... 真是不好意思!
另外我對於 下拉選單 和 驗證清單, 傻傻分不清楚, 請問二者如何區別? (看起來都是combobox ? )
另外,對於您的code,我執行後,出現錯誤,圖片如下:

(註: 奇怪,用本網的圖片上傳功能,都不能成功,超慢)
excel檔案如下:
http://www.funp.net/599274
作者: barrykuo    時間: 2013-4-4 10:05

  1. Set Rng = Range("A1:C1,F1:H1,A3:C3,F3:H3,B5:B7,D5:D7,E5:E7,A8,C9:D9")
  2.     'Set Rng = Selection
複製代碼
請問GBKEE大大,您寫'Set Rng = Selection意思是,在Excel執行中選擇儲存格,可以設定Rng等於選定的儲存格嘛?如果把'Set Rng = Selection的'去掉。
作者: GBKEE    時間: 2013-4-4 12:56

回復 14# barrykuo
Set Rng = Range("A1:C1,F1:H1,A3:C3,F3:H3,B5:B7,D5:D7,E5:E7,A8,C9:D9")
設定變數="A1:C1,F1:H1,A3:C3,F3:H3,B5:B7,D5:D7,E5:E7,A8,C9:D9"這些範圍
'Set Rng = Selection 這註解是說明也可以: 設定變數=工作表上所選擇的作用中儲存格範圍
作者: GBKEE    時間: 2013-4-4 15:04

本帖最後由 GBKEE 於 2013-4-4 15:06 編輯

回復 12# symis
你的圖示是系統 要求你要更新參照
檔案中有名稱定義=INVKind_13  參照到其他活頁簿  ->    ='C:\work\租稅減免附冊\Sample檔\[101txt_3.xlsm]清單選項'!$D$52:$D$54



[attach]14537[/attach]


如需上傳檔案  如圖:

[attach]14535[/attach]

資料驗證

[attach]14536[/attach]


下拉清單  ComboBox 控制項

[attach]14538[/attach]
作者: symis    時間: 2013-4-9 11:04

感謝GBKEE 超級版大,您真的很適合當老師或教授,在這裡有點大才小用,埋沒人才啦!
請問:
1. 若要執行巨集後,讓程式自動輸入每一格,程式要怎知道哪一格有資料驗證清單或下拉式選單?
2. 知道了以後,程式要如何自動選擇 選單的第一項?
謝謝!
另外,(題外話)
不大了解,為何一定要按「回復」按鈕,參與者才能收到通知? 「引用」不行嗎? 「快速回復」不行嗎?
一般會以為只要留言,有設定接收通知的人都會收到才是。




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