|
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
- Private Sub Worksheet_Change(ByVal Target As Range) '单元格改变触发的change事件
- Application.EnableEvents = False '关闭事件,以避免重复触发事件
- '实现不能输入的功能
- If Target.Row >= 6 And Target.Row <= 500 Then '行大于等于6 小于等于500才触发事件
- If Target.Column >= 8 And Target.Column <= Range("m1").Column Then '列大于等于8 小于等于m列才触发事件
- If Cells(Target.Row, 6) = "广播" Then '如果单元格输入值所在行的第6列=广播 那么
- MsgBox "选择广播时禁止输入此单元格", vbExclamation '弹窗提示
- Target.Value = "" '输入值清空
- End If
- End If
- End If
- '实现清空的功能
- If Target.Row >= 6 And Target.Row <= 500 Then '限定事件触发的行列范围
- If Target.Column = 6 Then
- If Target.Value = "广播" Then '如果输入值=广播 那么
- Target.Offset(0, 2).Resize(1, 6).ClearContents '输入值向右偏移2列为顶点扩展1行号6列的区域清空
- End If
- End If
- End If
- Application.EnableEvents = True '事件开启
- End Sub
- Sub 清空()
- arr1 = Sheet3.Range("b6:n" & Sheet3.Range("b" & Rows.Count).End(xlUp).Row)
- '单元格B6:n最大行的区域装入数组
- For i = 1 To UBound(arr1, 1) '从第1行循环到最大行
- If arr1(i, 5) = "广播" Then '如果第i行第5列=广播 那么
- For j = 7 To UBound(arr1, 2) - 1 '从第7列到最大列-1列的区域清空
- arr1(i, j) = ""
- Next j
- End If
- Next i
- With Sheet3.Range("b6") 'with省略语句
- .Resize(UBound(arr1, 1), UBound(arr1, 2)) = arr1
- '数组重新写入到以单元格b6为顶点扩展数组的行数,列数的单元格区域
- End With
- End Sub
复制代码 |
评分
-
1
查看全部评分
-
|