我有以下代碼,它在雙擊上面要插入新行的行后添加一行:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
Target.Offset(1).EntireRow.Insert
Target.EntireRow.Copy Target.Offset(1).EntireRow
On Error Resume Next
Target.Offset(1).EntireRow.SpecialCells (xlConstants).ClearContents
End Sub
當您運行它時,它會使用 .ClearContents 清除整行的所有內容。
我希望看到的是,在最終用戶雙擊一行后,會插入一個新行,但它只會清除 E 到 R 列以及 T 列中的內容。
所以,我試過這個代碼:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
Target.Offset(1).EntireRow.Insert
Target.EntireRow.Copy Target.Offset(1).EntireRow
On Error Resume Next
Target.Offset(1).EntireRow.SpecialCells (xlConstants)
'need to clear data from columns E through R and column T
Target.Range("E:R").ClearContents
Target.Range("T").ClearContents
End Sub
我認為Target會拿起該行,但除非我定義特定的單元格編號,否則它不起作用。換句話說,如果我將代碼更改為此,它會起作用,但只能(并且始終)清除第 10 行:
Target.Range("E10:R10").ClearContents
但是行號可能會因雙擊的位置而異……但我不確定如何使其動態化。
任何幫助將不勝感激!
uj5u.com熱心網友回復:
請試試這個代碼:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
Target.Offset(1).EntireRow.Insert
Target.EntireRow.Copy Target.Offset(1).EntireRow
Intersect(Target.Offset(1).EntireRow, Range("E:R,T:T")).ClearContents
End Sub
uj5u.com熱心網友回復:
使用Cells符號可能更容易。這種方法也使用了Union方法。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
Target.Offset(1).EntireRow.Insert
Target.EntireRow.Copy Target.Offset(1).EntireRow
On Error Resume Next
Target.Offset(1).EntireRow.SpecialCells (xlConstants)
On Error GoTo 0
'need to clear data from columns E through R and column T
Union(Range(Cells(Target.Row, "E"), Cells(Target.Row, "R")), Cells(Target.Row, "T")).offset(1).ClearContents
End Sub
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/314260.html
下一篇:我如何在vba中將引數傳遞給函式
