重申观点:使用VBA是超低门槛体验程序员快乐的途径之一。
今天用个超简单的例子分享一下VBA是多么简单。
需求:把Excel表格中有内容单元格背景变为黄色,其他的不变。
方法一:手动选择有内容的单元格,然后点击把背景色改为黄色,或者全选所有单元格,先把全部单元格背景改为黄色,然后ctrl+G定位到“空值”,然后把背景色改为“无填充颜色”,在此不必详细赘述。
方法二:(纯粹用来学习VBA的,其实和方法一一样,只不过新手可以先从这个例子感受一下代码运行的过程)录制宏的方法录一下手动操作的过程,打开录制宏的代码去执行一下。
代码如下:
Sub 宏1()
'
' 宏1 宏
'
'
Range("A1:B19,C1,C2,C4,C18").Select'注释:选择相应区域
Range("C18").Activate
With Selection.Interior'注释:下面缩进的是With语句块,以End With结束,进行改背景颜色操作,看不懂没有关系,知道这些是一些参数的设置就行了,.Color部分就是设置颜色的参数
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End Sub
方法三:用计算机思维做事——利用循环判断有内容的单元格,并选择这些单元格,然后把其背景色改为黄色,用AI生成的代码如下(略有修改),在方法二中的VBA开发环境中点击“插入”——“模块”,然后黏贴下面代码,然后点击运行即可查看运行效果:
Sub 修改单元格背景色()
Dim rng As Range
Dim cell As Range
' 设置工作区域
Set rng = ThisWorkbook.Sheets("Sheet1").UsedRange
' 遍历每个单元格,For是循环语句的开头,If是判断语句的开头
For Each cell In rng
' 检查单元格是否有内容
If Not IsEmpty(cell.Value) Then
' 有内容则更改背景色为黄色
cell.Interior.Color = vbYellow
End If
Next cell
End Sub
是不是超简单?
这就是利用微软自带的录制宏功能和利用人工智能学习VBA的方法,是不是感觉再稍微懂点VBA的知识就能很快能把VBA用起来了?没错,就这么简单,让AI产生代码的提问句可以是这样:“把有内容的单元格背景色改为黄色的VBA代码”,只要把你需要的效果描述清楚就好,避免歧义。
VBA不止可以操作Excel,还可以操作Word、PPT等,例如,下面代码就是用来批量提取多个格式相同的Word文件中某一表格中的某几个单元格的内容的VBA代码。可以学起来了。
Sub 提取word表格()
mypath = ThisWorkbook.Path & "\"
myname = Dir(mypath & "*.docx")
m = 1
Do While myname <> ""
Set mydoc = GetObject(mypath & myname)
With mydoc
m = m + 1
With .Tables(3)
Cells(m, 1) = myname '序号
Range("A1:K1") = Array("序号", "表头1", "表头2")
Cells(m, 2) = Replace(.cell(4, 5).Range.Text, "", "")
'Cells(m, 4) = Replace(.cell(7, 2).Range.Text, "", "")
End With
.Close False
End With
myname = Dir()
Loop
Set mydoc = Nothing
MsgBox "提取完成"
End Sub