Board logo

標題: [發問] 資料搜尋問題 [打印本頁]

作者: ayubbs    時間: 2013-8-3 02:27     標題: 資料搜尋問題

各位大大好~
日常資料處理但VBA剛入門不太熟悉應用,有問題想請問,
1.如何使用如TextBox功能將取得資料做為搜尋特定字樣 textbox所獲取的字串如何引用
2.以此特定字串找得該字後如何操作可將excel列全數刪除。此報表因資料庫輸出後無法預估所
佔筆數皆會以列方式呈現,需要的資料列下皆為不需的資料可以引用何種語法方式此字樣以下
列全數刪除,因無法指定在那一列。
謝謝大家
如又或是使用InputBox方式操作是否較具便利性,另有一問題尋問textbox及inputbox是否皆不
直接由excel儲存格上覆制內容貼上功能,謝謝解答

不好意思麻煩大家了
作者: luhpro    時間: 2013-8-3 10:53

回復 1# ayubbs
我試著分別用 TextBox、ListBox 與 ComboBox 來實做:
[attach]15674[/attach]
1. 在 Sheet2 有保留原始測試資料, 以便於測試功能後資料缺失時還原資料用.

2. TextBox 需以滑鼠左鍵拖曳 Mark 整行的姓名(兩個字, 例如 : 趙六), 於放開滑鼠左鍵後, 即完成選取的動作.
   因為比較不好選擇到標的, 建議可先點一下姓名, 再按鍵盤上的向上向下按鍵找到標的,再依上述內容執行 Mark 動作即可.

3. ListBox 則於點擊上或下箭頭找到標的姓名時, 再以滑鼠左鍵點一下該姓名, 即完成選取的動作.

4. ComboBox 則於下拉式選單中選取標的姓名, 即完成選取的動作.

5. 選取完成後, 點一下 "刪除資料" 按紐, 就可以刪除所有相同姓名的資料列.


另外我早前實做測試的另一個檔案,[attach]15675[/attach]

若選到最後一個姓名(例如 : 吳八)後,

再執行 ListBox 的 RemoveItem 方法會發生錯誤,

但不是刪最後一筆時就不會有錯誤,[attach]15676[/attach]

不知道問題出在哪裡?
作者: ayubbs    時間: 2013-8-3 11:32

回復 2# luhpro


    謝謝大大熱心協助.因人在外面我回到家後測試,再回報結果~感謝
作者: GBKEE    時間: 2013-8-4 17:22

回復 3# ayubbs

[attach]15689[/attach]
如圖 拉長它就沒有錯誤了(為何會如此我也不知道)

或修改程式碼
  1. rivate Sub cbDel_Click()
  2.     Dim i As Integer
  3.     'Application.EnableEvents = False  '這對控制項沒有作用
  4.     With lbName
  5.         i = .ListIndex
  6.         If i = -1 Then Exit Sub
  7.         Selection.Delete
  8.         If .ListIndex + 1 = .ListCount Then .Value = .ListIndex - 1
  9.         If .ListCount >= 1 Then .RemoveItem (i)
  10.     End With
  11.    'Application.EnableEvents = True
  12.    ' Call lbName_Change
  13. End Sub
複製代碼

作者: ayubbs    時間: 2013-8-5 11:27

回復 4# GBKEE
不好意思那麼晚才回覆~工作較忙碌到現在才回覆
謝謝luhpro大~跟GBKEE版大的協助回覆,不過真的很不好意思。
可能是我表達的方式不正確,造成luhpro的誤解方向不對,很抱歉,我想要的尋找資料方式我重新說明一下,因工作中經常
需核對資料,該資料為資料庫輸出的xls檔案,其中以有套板的格式,很多的欄位,列數依查詢比較的區間可能會有數百數千資料
區間要再大些可能會有上萬筆,但此資料他有一些部份資料有類似流水號的欄位,但輸出時卻無法指定流水號區間調出資料,只
能以週或月的方式輸出資料。

因查詢頻度太高,經常花了很多時間一直做重覆的動作,想簡化程序,想用一個含有設定好的獨立vba檔案去執行排序去除不需要
的列數,有構想使用txtbox輸入指定的流水號,以直接到方便直接選擇到該列將該列以下不需要的資料全數刪除因抬頭還有項目需
看所以無法向上刪除只能向下刪除,但我的vba實在很差....無法達成,是否可再向大大版請教是否可有方式可解決

流程約如下    設置一個檔案aa.xls於Sheet1建一CommandButton用於開啟UserForm1,UserForm1製作一表單 TextBox 輸入流水號
→使用CommandButton1引用TextBox內數據查尋到bb.xsl檔內該筆資料所在列將其該列含以下列自動全數
刪除不需詢問,另其它動作一些篩選比對動作也於此CommandButton作時機一併作動。
但先找到該工作列為最先開始的程序。

各位老師們能否順便指導一般使用 txtbox 內數值,要何寫的方式才可引用他做為一參考數據其參數運用的方式。

真的感到很不好意思又再次麻煩大家了,真的要多努力了,一些語法只會做很簡式的單獨使用,湊在一起就卡死了,要再多努力了。
謝謝
作者: GBKEE    時間: 2013-8-5 15:12

回復 5# ayubbs
引用TextBox內數據查尋到bb.xls檔內該筆資料所在列將其該列含以下列自動全數
該筆資料在哪一欄 (A欄或B欄  或...)
請上傳 bb.xls 的範本,好了解之.
作者: ayubbs    時間: 2013-8-5 23:26

本帖最後由 ayubbs 於 2013-8-5 23:28 編輯

回復 6# GBKEE


    版大如附件,需分析欄位為C欄再麻煩你了,C欄項目內並非一定會依流水號排㡰多數時候都需要自己排序
作者: GBKEE    時間: 2013-8-6 17:29

回復 7# ayubbs
Sheet1建一CommandButton
  1. Private Sub CommandButton1_Click()
  2.     UserForm1.Show
  3. End Sub
複製代碼
[attach]15709[/attach]
  1. Option Explicit
  2. Dim WB As Workbook, Rng As Range
  3. Private Sub CommandButton1_Click()
  4.     If Not Rng Is Nothing Then
  5.         With Rng.Parent
  6.             Set Rng = .Range(Rng.Offset(1), Rng.Offset(1).End(xlDown))
  7.             Rng.EntireRow.Delete
  8.         End With
  9.     End If
  10.         CommandButton1.Enabled = False
  11. End Sub
  12. Private Sub TextBox1_Change()
  13.     CommandButton1.Enabled = False
  14.     Set Rng = WB.Sheets("明細表").Range("C:C").Find(TextBox1, LookAt:=xlWhole)
  15.     If Not Rng Is Nothing Then CommandButton1.Enabled = True
  16. End Sub

  17. Private Sub UserForm_Initialize()
  18.     CommandButton1.Enabled = False
  19.   ' Set WB = Workbooks.Open("D:\你的目錄資料夾\BB.XLS")   '如 BB.XLS 沒開啟用此程式碼 開啟
  20. End Sub

  21. Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
  22.    '  WB.Close True                                        如 BB.XLS 不是用程式碼開啟的 不要用此程序
  23. End Sub
複製代碼

作者: ayubbs    時間: 2013-8-6 18:04

回復 8# GBKEE


謝謝版大指導,初步測試~可以正常使用,真的是太感謝了,稍晚些我再把剩餘動作整理~合併看是否還有其它問題因為手邊現在
還缺檔案可以整併測試,沒辦法確定後續動作 ^^
作者: ayubbs    時間: 2013-8-7 11:32

回復 8# GBKEE

版主大大~有另一些問題想請教指導,因刪除時並未有資料排序因流水號產時輸出時並不一定全數有排列,可否先讓資料排序
後再行刪除指定號(含)該列位及其它不需要的列,另抬頭列要刪除該在何處加入語法又該如何實行,想讓表列明細較為乾淨整齊
些,再如尚有已錄製好巨集該用何方式插入可以在刪除動作完成後,繼續執行而不停擺完成動作~


>"< 抱歉在努力k書惡補中~但日常工作還在持續一直進行~先能運用再一一了解原理~ 非常感謝
作者: GBKEE    時間: 2013-8-7 17:25

回復 10# ayubbs
資料的排序:可錄製後,套到
Private Sub UserForm_Initialize()
   '錄製 ....
End Sub




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