excel - 插入行后清除某些列
问题描述
我有以下代码,它在双击要插入新行的上面的行后添加一行:
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
但是行号可能会根据他们双击的位置而有所不同......但我不确定如何使这种动态变化。
任何帮助将不胜感激!
解决方案
使用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
推荐阅读
- python - 如何将这些数据框索引转换为列?
- validation - Symfony 4.1.4 - 验证注释 NotBlank 在编辑对象数据时不起作用,但在添加新对象时起作用
- css - 更简单的方法是使用 CSS 网格模板区域来跨越多个列
- python - 使用 Enum 时 Admin 中的 Django 选择
- amazon-web-services - 示例 api 网关测试事件 json
- docker - 在另一个容器中使用另一个容器
- ruby-on-rails - 注册后如何将用户重定向回登录表单?
- r - 在三元组列表中查找动词(部分匹配?)
- ios - 在核心数据中展开可选值时发现 nil
- ios - 免费试用取消是否显示在 App Store Connect/iTunes Connect 中?