
vba中如何选中某个区域后再去掉选中的首行
1个回答
展开全部
由于不知道选择某区域去掉所选区域的首行是什么意思,所以两个代码,第一个代码在选择的区域基础上重新少选1行,第二个代码删除所选区域的首行。
第一个代码:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'单元格鼠标点击事件
Application.EnableEvents = False '关闭事件响应
Application.ScreenUpdating = False '关闭屏幕刷新
a = Target.Address '被选择的单元格范围
b = InStr(a, ":") '查找冒号的位置
c = Left(a, b - 1) '开始单元格地址
d = Mid(a, b + 1, 20) '结束单元格地址
a = "" '初始化开始行号
For i = 1 To b - 1 '字符数循环
e = Mid(c, i, 1) '取1个字符
If Asc(e) > 47 And Asc(e) < 58 Then '为数字则执行
a = a & e '行号叠加
End If
Next i
e = Len(a) '行号位数
c = Left(c, b - 1 - e) '取开始列地址
c = c & a + 1 '新的开始单元格地址
a = c & ":" & d '新的单元格范围
Range(a).Select '重新选择范围
Application.ScreenUpdating = True '打开屏幕刷新
Application.EnableEvents = True '开启事件响应
End Sub
第二个代码:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'单元格鼠标点击事件
Application.EnableEvents = False '关闭事件响应
Application.ScreenUpdating = False '关闭屏幕刷新
a = Target.Address '被选择的单元格范围
b = InStr(a, ":") '查找冒号的位置
c = Left(a, b - 1) '开始单元格地址
d = Mid(a, b + 1, 20) '结束单元格地址
a = "" '初始化开始行号
For i = 1 To b - 1 '字符数循环
e = Mid(c, i, 1) '取1个字符
If Asc(e) > 47 And Asc(e) < 58 Then '为数字则执行
a = a & e '行号叠加
End If
Next i
Rows(a & ":" & a).Delete Shift:=xlUp '删除行
Application.ScreenUpdating = True '打开屏幕刷新
Application.EnableEvents = True '开启事件响应
End Sub
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询