[英]Conditionally clear contents of range of cells in a row based on cell value
[英]How to clear contents of a range in a row, when a specific cell of that row is selected?
我有一个表格,范围从(“C22:Q26”),其中单元格(“R22”),(“R23”),(“R24”)到(“R26”)是要连续选择的单元格,清除内容。
I want to clear contents of a range("C22:Q22"), when cell ("R22") is selected.
Similarly clear contents of a range("C23:Q23"), when cell ("R23") is selected, and so on up to range("C26:Q26") when cell ("R26") is selected.
我写了这个,放在工作表代码中。
Sub clearcontents()
If Range("r22").Selected Then
Range("R22").Offset(, -15).Resize(, 15).Select
Range("R22").Offset(, -15).Resize(, 15).clearcontents
ElseIf Range("r23").Selected Then
Range("R23").Offset(, -15).Resize(, 15).Select
Range("R23").Offset(, -15).Resize(, 15).clearcontents
ElseIf Range("r24").Selected Then
Range("R24").Offset(, -15).Resize(, 15).Select
Range("R24").Offset(, -15).Resize(, 15).clearcontents
ElseIf Range("r25").Selected Then
Range("R25").Offset(, -15).Resize(, 15).Select
Range("R25").Offset(, -15).Resize(, 15).clearcontents
ElseIf Range("r26").Selected Then
Range("R26").Offset(, -15).Resize(, 15).Select
Range("R26").Offset(, -15).Resize(, 15).clearcontents
End If
End Sub
尝试使用Worksheet.SelectionChange
事件。 将以下代码添加到工作表代码模块。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.CountLarge <> 1 Then Exit Sub
If Not Intersect(Target, Me.Range("R22:R26")) Is Nothing Then
Me.Range("C" & Target.Row & ":Q" & Target.Row).ClearContents
End If
End Sub
如果您的代码在“Worksheet_SelectionChange”宏中并且没有触发,我会仔细检查您是否启用了事件。
否则这段代码应该做你想做的事,一些检查还需要选择一个单元格:
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim rColumn As Range
Dim tTable As Range
Set rColumn = Me.Range("R22:R26")
Set tTable = Me.Range("C22:Q26")
If Not Intersect(Target, rColumn) Is Nothing Then
If Target.Count = 1 Then
Intersect(Target.EntireRow, tTable).ClearContents
End If
End If
End Sub
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.