Board logo

標題: [發問] 不同Sheet欄位資料同步移除 [打印本頁]

作者: li_hsien    時間: 2019-2-15 09:23     標題: 不同Sheet欄位資料同步移除

我有兩張工作表(Sheet1、Sheet2)

我想要在Sheet1刪除整欄的時候

Sheet2也把該欄刪除

目前是想到用Private Sub Worksheet_Change(ByVal Target As Range)來判斷Target.Row

可是USER如果在Sheet1一次刪除多欄(選ROW1~ROW3後刪除) Target.Row只會抓到ROW1

這樣我沒辦法告訴Sheet2也需要刪除ROW2~ROW3

註:
1. USER的刪除行為會是整欄刪除,不會只刪除某個CELL
2. Sheet1&Sheet2欄位對應,但資料不完全相同
3. Sheet1&Sheet2不須判斷資料內容,只要Sheet1刪除,Sheet2也跟著刪除對應的ROW即可

再請各位指教

謝謝 !

[attach]30106[/attach]
作者: 准提部林    時間: 2019-2-15 10:06

change 可以判斷刪除還是更新數據嗎???
可考慮用[按鈕]執行刪除
作者: li_hsien    時間: 2019-2-15 10:17

回復 2# 准提部林

我用change想說Sheet1跟Sheet2的總欄位來比
(可能用=COUNTA(A:A)來算)

如果Sheet1比Sheet2的欄位少 就是USER有刪除

那我就抓Target.row來刪Sheet2的欄位
(可是現在刪多欄Target.row抓不到)

目前希望讓USER直覺的方式來直接刪除

不用再點選按鈕來觸發條件

還是您有建議的按鈕操作方式

再請指教

謝謝
作者: 准提部林    時間: 2019-2-15 12:30

應是 [整列] 刪除吧~~

Private Sub Worksheet_Change(ByVal Target As Range)
Dim xRng As Range
On Error Resume Next
Set xRng = Sheets("Sheet1").Range("XXXX") '檢測定義名稱(Sheet1)是否有效  
If Not xRng Is Nothing Then Exit Sub '若XXXX定義名稱還有效, 表示不是刪除, 跳出
Set xRng = Sheets("Sheet2").Range("YYYY") '檢測定義名稱(Sheet2)是否有效
On Error GoTo 0
If Not xRng Is Nothing Then xRng.EntireRow.Delete '同步刪除Sheet2的YYYY位址列
End Sub


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
ThisWorkbook.Names("XXXX").Delete '刪除定義名稱
ThisWorkbook.Names("YYYY").Delete '刪除定義名稱
On Error GoTo 0
With Target
     If .Columns.Count <> Columns.Count Then Exit Sub '非選取[整列]跳出
     .Cells.Name = "XXXX" '定義名稱(Sheet1)
     Sheets("Sheet2").Range(.Address).Name = "YYYY" '定義名稱(Sheet2)
End With
End Sub
作者: li_hsien    時間: 2019-2-15 14:40

回復 4# 准提部林

感謝准提部林提醒

筆誤... 應是刪除"列" !

方法可行

超神 !!!

註解詳盡

而且還有檢測機制


感謝版主協助 !

學習了 !
作者: 千暉尋    時間: 2019-2-26 22:42

原來定義名稱還能有這用途,學到了.




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