这篇文章是临时加进去的,不在我这周的文章推送计划范围内。是因为有位群里的朋友求助类似的问题,这类问题也是比较典型的,在学习VBA入门时需要给以点拨的知识点集合范围内,所以特意在这里给大家大范围地讲解一下。本来这种大范围的解答是很少机会的,也希望有用到的朋友能收获一些必要的帮助。
这位朋友的问题是:如何删除A列中"合计"字符的行。而且自己录制了一段宏,但不好用,问这是为什么。
这里谈到录制宏,也希望大家先能弄懂一些必要的知识点才可以做这样的操作,不然是很机械的,出现问题都不知道是哪里的问题。要先去积累自己的知识,到了一定的阶段再去做这些录制。这样,当出现问题时可以自己去找问题的所在。
这里我把这位朋友的问题给引申一下,不仅是删除带"合计"字符的行,而且要智能删除你需要删除的行,那么今日所讲的内容就是,如何利用VBA,智能删除你需要删除的行。
我们先看代码:
Sub KK()
2 Dim FJX
3 Sheets("CBOM").Select
4 UU = InputBox("输入要删除的行中A列含有的唯一字符!")
5 UU = Trim(UU)
6 Set FJX = Sheets("CBOM").Columns("A").Find(UU, AFTER:=[A1], lookat:=xlWhole)
7 If Not FJX Is Nothing Then
8 TT = FJX.Row
9 Rows(TT & ":" & TT).Select
10 Selection.Delete
11 MsgBox ("删除OK"): End
12
13 End If
14 MsgBox ("A列中没有找到要删除的字符,请重新确认")
15
16 End Sub
上面是很简单的一段代码,就可以完成上述的功能,下面是代码的截图。
代码讲解:
1首先要输入你需要删除行中A列的唯一字符,这里是指唯一的字符或字符串,如果你的A列中含有多个这样的字符或字符串,那么会从上到下删除第一个。
2这里用了INPUTBOX的输入接口作为人机对话的输入,当你告诉程序你的需求时,程序会把这个值传给UU。
3在程序中为了防止误操作,要对UU做处理,用TRIM函数处理,不清楚此函数用法的要再去学习我之前的资料。
4然后利用FIND查找函数来完成对A列的查找,查找的值是处理过的UU,在A1单元格开始向下查找,要求是单元格的VALUE和UU完成相等。
5将查找的结果记入FJX。
6如果FJX不为空,即可以查找的到,那么把查找到的单元格的行数赋值给TT,并对此行做DELETE处理,提示"删除OK!"。
7如果为空,即没有查找到,那么,提示"A列中没有找到要删除的字符,请重新确认"。
上面就是程序运行的整个过程,十分的简单,但很好地说明了VBA的运行过程,可以说,此程序可以作为是一般的查找处理的格式化程序。
下面我们看代码的执行过程:
将上述代码拷贝到模块中,建立好关联按钮,点DELETE.
在弹出的对话框中输入ee10。
下面的截图中含有ee10的行被删除了。
整个过程十分的流畅。
今日内容回向:
1 人机对话的接口函数是什么?
2 当输入数值时,如何防止误操作,主要是指多录入空格,且无法发现。
3 如何在FJX中取出行的值?
4 如何整行删除行?
5 引申,如果是多行都是需要删的值,如何进行全部的删除呢?
分享成果,随喜正能量
閱讀更多 VBA專家 的文章