標題:
[發問]
比對不同工作表的儲存格以及刪除內容
[打印本頁]
作者:
netfish777
時間:
2018-10-3 10:09
標題:
比對不同工作表的儲存格以及刪除內容
請問各位前輩,如果有十六張工作表,
工作表1 總共有15行的值
A B C
1 13 9 YY
2 CC 44 XX
3 77 99 33
4 2A PP 89
....................................
我想在工作表2 到16都設定一個按鈕來執行VBA,
假設工作表2 儲存格A1的值是 CC,在工作表2按下按鈕則搜尋工作表1 A欄儲存格CC這個值在第二行,然後刪除工作表1第二行 A1到A3的內容
假設工作表3 儲存格A1的值是 2A,在工作表3按下按鈕則搜尋工作表1 A欄儲存格CC這個值在第四行,然後刪除工作表1第四行 A1到A3的內容
其餘工作表按鈕功能都以此類推
請問能否讓這十五個工作表的按鈕共用同一個VBA?懇請指教,感謝
作者:
n7822123
時間:
2018-10-4 01:14
本帖最後由 n7822123 於 2018-10-4 01:16 編輯
回復
1#
netfish777
你的解說感覺邏輯怪怪的,我試著修改如下
你看對不對
工作表1 總共有15行的值
A B C
1 13 9 YY
2 CC 44 XX
3 77 99 33
4 2A PP 89
....................................
假設工作表2 儲存格A1的值是 CC,在工作表2按下按鈕則搜尋工作表1 A欄儲存格CC這個值在第二行,
然後刪除工作表1
第二列 A2到C2
的內容
假設工作表3 儲存格A1的值是 2A,在工作表3按下按鈕則搜尋工作表1 A欄儲存格
2A
這個值在第四行,
然後刪除工作表1
第四列 A4到C4
的內容
作者:
netfish777
時間:
2018-10-4 17:10
回復
2#
n7822123
啊 是的說明我打錯了,很抱歉
就是您所修改的內容才對,感謝
作者:
n7822123
時間:
2018-10-4 22:44
本帖最後由 n7822123 於 2018-10-4 22:57 編輯
回復
3#
netfish777
能否提供範例檔案,因為這樣有點瞎子摸象
會有很多問題需要釐清
例如:
1.如果第一工作表D欄以後還有資料,D欄以後的資料都保留,只刪除A,B,C 三欄的資料
還是一併刪除?
2.你舉的兩個例子都在工作表1的A欄,是不是B欄與C欄不再比對範圍?
作者:
Hsieh
時間:
2018-10-5 14:54
回復
3#
netfish777
一般模組
所有按鈕都指定同一個巨集
Sub Del_Find()
Dim A As Range
With 工作表1
Set A = .Columns("A:A").Find(ActiveSheet.[A1], lookat:=xlWhole)
If Not A Is Nothing Then A.Resize(, 3).ClearContents '清除內容
'If Not A Is Nothing Then A.Resize(, 3).Delete xlShiftUp '刪除列
End With
End Sub
複製代碼
作者:
netfish777
時間:
2018-10-5 19:21
回復
4#
n7822123
因為我剛學VBA,想寫個紀錄股票股利的EXCEL,寫了一半但是還沒寫完全出來@@
工作表1是定存股總明細,A欄十五格記錄著十五種股票代碼
工作表2到16則一個工作表紀錄一種股票的買賣以及股利明細
工作表2的A1股票代碼就是 工作表1的A1,工作表3的A1股票代碼就是 工作表1的A2,以此類推
假設我把工作表2的股票全部出清,只要按個按鈕就可自動清除工作表2該股票的買賣資料以及工作表1 A1 B1 C1三格股價資訊
您的問題
1.如果第一工作表D欄以後還有資料,D欄以後的資料都保留,只刪除A,B,C 三欄的資料
還是一併刪除?
只需刪除ABC三蘭的資料,D蘭以後只有版框圖案不可刪除
2.你舉的兩個例子都在工作表1的A欄,是不是B欄與C欄不再比對範圍?
只有比對A欄,也就是股票代碼,其他欄都不用比對
作者:
netfish777
時間:
2018-10-5 21:40
本帖最後由 netfish777 於 2018-10-5 21:43 編輯
回復
4#
n7822123
我剛剛把檔案大致完成了,這是我利用網路高手分享的加以拼裝修改,麻煩請前輩看一下
工作表1 的 C1 是股票代碼 是自動抓取 "一覽表" 的 C5 , 工作表2 的 C1 則是抓取 一覽表 的 C6 ,以此類推
每個工作表都有個 情除按鈕,假設我按 工作表1 的清除紐,
希望能用 C1 的股票代碼去找出 "一覽表" 這支股票是在哪一行,然後把該行 C5到N5 的內容清除而不移動任何儲存格
請問能不能十五個工作表的清除紐都能共用一個VBA程式
懇請指教,感謝
作者:
n7822123
時間:
2018-10-6 02:31
本帖最後由 n7822123 於 2018-10-6 02:40 編輯
回復
7#
netfish777
套用Hsieh 超版的程式
簡單,如下
Sub 清除一覽表某股票()
Sheet1.Columns(3).Find([c1], lookat:=xlWhole).Resize(, 12).ClearContents
End Sub
作者:
netfish777
時間:
2018-10-6 20:57
本帖最後由 netfish777 於 2018-10-6 21:10 編輯
回復
8#
n7822123
真的可以了,但是發現有個問題
如果在沒有買賣資料的空白工作表之中按下清除按鈕
會出現 " 沒有設定物件變數或者With變數"的錯誤訊息
請問該如何排除?感謝
作者:
n7822123
時間:
2018-10-6 23:11
回復
9#
netfish777
If [C1] <> 0 Then Sheet1.Columns(3).Find([c1], lookat:=xlWhole).Resize(, 12).ClearContents
作者:
netfish777
時間:
2018-10-6 23:39
回復
10#
n7822123
都沒問題了,我原本還想把每個工作表的C1儲存格使用IF來解決
結果大大直接在VBA加個IF就搞定了,真是高手
感謝 Hsieh 以及 n7822123兩位前輩指點,感恩
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)