Board logo

標題: [發問] Excel 2010 建立按鈕 輸入索引值 擷取資料至指定欄位 [打印本頁]

作者: givigan    時間: 2011-5-31 16:17     標題: Excel 2010 建立按鈕 輸入索引值 擷取資料至指定欄位

本帖最後由 givigan 於 2011-5-31 17:06 編輯

軟體:Excel
版本:2010

大家好
小弟是excel的新手
只會使用+-*/之類的用法

之前在某賣場上班時
有用過一個檔案
它的功能是
4個欄位
兩三百筆的資料
這兩三百筆資料是要從別的地方複製過來
貼到定位

然後旁邊有個按鈕 寫請按我
按下去吼
他會開始擷取
欄位3數字為1以上就將整筆資料擷取
並去掉欄位2跟4
只將欄位1跟3的值
貼到指定位置
以上是之前看到的功能


==================================
現階段小弟
有個任務
家裡的POS系統有問題
無法列印貨價卡(以前也沒印過)
都用標價在商品上
但是還是常會有顧客問價錢
所以想說用名片紙印貨價卡出來
再裁就好了反正價格不常改

目前從POS系統裡面找到商品資料的檔案.dbf
用EXCEL開啟後欄位將近二十個
資料品項上萬筆(不過有很多都沒賣了)
另存成excel
檔案如下
http://givigan.myweb.hinet.net/test.xlsx

想說也做個按鈕
但是可以輸入商品編號比如A123(主索引)
就會自動擷取A123這筆資料的 商品編號、品名、價格
到我設計好的指定欄位中


http://givigan.myweb.hinet.net/excel.xlsx

因A4一頁可放33個品項
故做出來的按鈕可否有33個可key in索引值的欄位
或者是僅有一個欄位key in
key in完後因第一個裡面有值
故自動選擇沒有值的欄位填入

以上是小弟的想法
因接觸excel不久
不知此想法有無可行性
如可行
有否可參考的相關範例可提供
感謝
作者: Hsieh    時間: 2011-5-31 16:36

回復 1# givigan
問題在於資料庫的格式
請上傳簡單的dbf檔案以供測試
作者: givigan    時間: 2011-5-31 17:04

回復  givigan
問題在於資料庫的格式
請上傳簡單的dbf檔案以供測試
Hsieh 發表於 2011-5-31 16:36

您好
dbf在別台電腦上
直接開啟怕POS系統運作會出問題
所以我的想法是把dbf檔案複製到這台電腦上操作
複製過來以後直接用excel開啟
然後儲存成excel檔案
如下
http://givigan.myweb.hinet.net/test.xlsx

這樣會比較好操作嗎?
作者: Hsieh    時間: 2011-5-31 19:54

回復 3# givigan


    既然dbf資料用複製的,就貼在同檔案的工作表內
在表格的工作簿內設置一個按鈕按鈕的程式碼如下
  1. Private Sub CommandButton1_Click()
  2. 10
  3. n = InputBox("輸入主索引", , "U952")
  4. ar = Array("編號", "品名", "售價")
  5. With Sheets("工作表2")
  6. Set a = .[A:A].Find(n, lookat:=xlWhole)
  7. If a Is Nothing Then MsgBox "無此編號": GoTo 10
  8. Do Until n = ""
  9. If Application.CountBlank([A1:I24]) = 0 Then MsgBox "A4紙張已滿": Exit Sub
  10. Set b = Range("A1:I24").SpecialCells(xlCellTypeBlanks).Cells(1)
  11. b.Resize(, 3) = ar
  12. b.Offset(1, 0).Resize(, 3) = Array(a.Value, a.Offset(, 1).Value, a.Offset(, 7).Value)
  13. n = InputBox("輸入主索引", , "U952")
  14. Loop
  15. End With
  16. End Sub
複製代碼

作者: givigan    時間: 2011-5-31 21:26

回復 4# Hsieh


好的感謝大大
明天上班時再試試看
多謝指導
作者: givigan    時間: 2011-6-1 15:07

感謝大大,可以正常使用了,
不過我不會用按鈕@@
我用了個文字方塊指定巨集過去

這跟c++好像喔...

b.Resize(, 3) = ar
這個是往右移三格的意思嗎?
作者: givigan    時間: 2011-6-6 18:55

本帖最後由 givigan 於 2011-6-6 19:33 編輯
回復  givigan


    既然dbf資料用複製的,就貼在同檔案的工作表內
在表格的工作簿內設置一個按鈕按鈕 ...
Hsieh 發表於 2011-5-31 19:54



大大您好,前幾天本來程式可以正常運作
小弟修改了幾個幾個地方後
變成輸入商品編號進去 資料有植入
但是輸入第二個編號的時候
他還是出現上一筆的資料
就算輸入的是沒有的編號
也不會顯示無此編號
依然會重複植入第一筆的資料

而我把大大的原本程式碼再複製過去
把工作表名稱改回工作表2
還是一樣情形@@
只會輸入第一筆的資料
是我電腦哪邊設定動到嗎?

檔案如下
[attach]6508[/attach]

http://givigan.myweb.hinet.net/excel2.rar
  1. Private Sub push()
  2. 10
  3. n = InputBox("輸入商品編號", , "")
  4. ar = Array("編號", "品名", "售價")
  5. With Sheets("資料庫")
  6. Set a = .[A:A].Find(n, lookat:=xlWhole)
  7. If a Is Nothing Then MsgBox "無此編號": GoTo 10
  8. Do Until n = ""
  9. If Application.CountBlank([A1:I18]) = 0 Then MsgBox "A4紙張已滿": Exit Sub
  10. Set b = Range("A1:I18").SpecialCells(xlCellTypeBlanks).Cells(1)
  11. b.Resize(, 3) = ar
  12. b.Offset(1, 0).Resize(, 3) = Array(a.Value, a.Offset(, 1).Value, a.Offset(, 7).Value)
  13. n = InputBox("輸入商品編號", , "")
  14. Loop
  15. End With
  16. End Sub
複製代碼

作者: Hsieh    時間: 2011-6-6 22:11

  1. Private Sub push()
  2. 10
  3. n = InputBox("輸入商品編號", , "")
  4. ar = Array("編號", "品名", "售價")
  5. With Sheets("資料庫")
  6. Set a = .[A:A].Find(n, lookat:=xlWhole)
  7. If a Is Nothing Then MsgBox "無此編號": GoTo 10
  8. Do Until n = ""
  9. If Application.CountBlank([A1:I18]) = 0 Then MsgBox "A4紙張已滿": Exit Sub
  10. Set b = Range("A1:I18").SpecialCells(xlCellTypeBlanks).Cells(1)
  11. b.Resize(, 3) = ar
  12. b.Offset(1, 0).Resize(, 3) = Array(a.Value, a.Offset(, 1).Value, a.Offset(, 7).Value)
  13. n = InputBox("輸入商品編號", , "")
  14. Set a = .[A:A].Find(n, lookat:=xlWhole)
  15. If a Is Nothing Then MsgBox "無此編號": GoTo 10
  16. Loop
  17. End With
  18. End Sub
複製代碼

作者: givigan    時間: 2011-6-7 11:40

Hsieh 發表於 2011-6-6 22:11


原來在那邊多那兩行就可以解決了@@
多謝大大指導




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