返回列表 上一主題 發帖

[發問] 不同Sheet欄位資料同步移除

[發問] 不同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即可

再請各位指教

謝謝 !

RemoveSheetData.zip (3.97 KB)
用功到世界末日那一天∼∼∼

change 可以判斷刪除還是更新數據嗎???
可考慮用[按鈕]執行刪除
EXCEL參考資料:
http://blog.xuite.net/smile1000mile/blog

TOP

回復 2# 准提部林

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

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

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

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

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

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

再請指教

謝謝
用功到世界末日那一天∼∼∼

TOP

應是 [整列] 刪除吧~~

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
EXCEL參考資料:
http://blog.xuite.net/smile1000mile/blog

TOP

回復 4# 准提部林

感謝准提部林提醒

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

方法可行

超神 !!!

註解詳盡

而且還有檢測機制


感謝版主協助 !

學習了 !
用功到世界末日那一天∼∼∼

TOP

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

TOP

        靜思自在 : 屋寬不如心寬。
返回列表 上一主題