下面的代碼從sheet "Opened" (基于條件)復制行并粘貼到同一作業簿中的另一個sheet "Closed" 上,并且在sheet "Closed" 上有另一個事件代碼來防止改變該sheet的名字。
問題:(1)如果我在sheet "Opened" 被激活時運行復制代碼,我得到Run-time error 1004 That name is already taken.這個錯誤與sheet "closed" 有關。如果我在sheet "closed is" 被激活時運行代碼,就沒有這樣的錯誤。
Sub Copy_PasteSpecial()
Dim StatusColumn As Range
Dim DestRng As Range
Dim Cell As Object
Set StatusColumn = Sheets("Opened") 。 Range("H3", Sheets("Opened").Cells(Rows.count, "H").End(xlUp)
For Each Cell In StatusColumn
If Cell.value = "Close" Then
Set DestRng = Sheets("Closed").Range("A" & Rows. count).End(xlUp).Offset(1, 0)。
Cell.EntireRow.Copy
DestRng.PasteSpecial xlPasteValuesAndNumberFormats
DestRng.PasteSpecial xlPasteFormats
End If
Next單元格
End Sub
還有這個防止更改作業表名稱的代碼:
Private Sub worksheet_SelectionChange(ByVal Target As Excel.Range)
If ActiveSheet.name <> "Closed"/span> Then
ActiveSheet.name = "Closed"
End If
End Sub
這個鏈接為真正的作業簿。https://easyupload.io/7ftxik
uj5u.com熱心網友回復:
問題是,ActiveSheet在
Private Sub worksheet_SelectionChange(ByVal Target As Excel.Range)
If ActiveSheet.name <> "Closed"/span> Then
ActiveSheet.name = "Closed"
End If
End Sub
不是SelectionChange事件所在的表。那將是Target.Parent
Private Sub worksheet_SelectionChange(ByVal Target As Excel.Range)
If Target.Parent.Name <> "Closed"/span> Then
Target.Parent.Name = "Closed"/span>
End If
End Sub
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/307530.html
標籤:
上一篇:在一個輸入框中使用陣列
