四时宝库

程序员的知识宝库

VBA提高办公效率之二

重申观点:使用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

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接