网站首页 > 教程分享 正文
转发
使用VBA来整理表格,甚至批量自动导出报表,其实就是模拟了人的行为。在整理表格的时候,我们常常需要选定某个区域,做复制、剪切或者粘贴的操作。
因此,如何使用VBA来模拟这样的行为呢,这就涉及到range的用法了。另外为了更好的选择我们需要的单元格,本篇还会涉及到Cells、offset、resize、CurrentRegion、UsedRange等等的用法小记。这边我们将会根据一个个需求来学习VBA。
需求1:选择B2单元格
Sub main()
Range("B2")
.SelectEnd Sub
B2单元格是第2行,第2列,因此我们也可以使用Cells来改写
Sub main()
Cells(2, 2).Select
End Sub
需求2:选择B2单元格,要求使用变量
我们写VBA的时候,为了面对比较多变的情况,单元格的位置肯定有的时候是不固定的,需要使用到变量。因此这边我们可以这样改写。
Sub main()
Dim num As Integer
Let num = 2
Range("B" & num)
.Select
End Sub
range的接受的参数是一个字符串,因此只要用连接符 & 配置成正确的字符串格式,就不会报错了。
如果使用Cells,Cells中含变量是更加方便的,一般我们循环的时候都是用Cells来循环的。
Sub main()
Dim num As Integer
Let num = 2 Cells(num, num).Select
End Sub
需求3:选择A1:B5单元格区域
Sub main()
Range("A1:B5").Select
End Sub
这边也是这样,只要给range一个正确的字符串格式的参数就可以了。
还可以使用Range和Cells搭配使用。
Sub main()
Range(Cells(1, 1), Cells(5, 2)).Select
End Sub
注意Cells的参数是这样的:Cells(行的数字,列的数字)
或者Range和Range之间也是可以混合使用的。
Sub main()
Range(Range("A1"), Range("B5")).Select
End Sub
需求4:选择选择A1:B5单元格区域,要求使用变量
Sub main()
Dim n1 As Integer
Dim n2 As Integer
Let n1 = 1
Let n2 = 5
Range("A" & n1 & ":B" & n2).Select
End Sub
需求5:选择第一列最后一个非空的单元格
Sub main()
Range("A65536").End(xlUp).Select
End Sub
需求6:选择第二行最后一个非空的单元格
这个必须得使用Cells定位。我们可以这么做
Sub main()
Cells(2,Columns.Count).End(xlToLeft).Select
End Sub
Columns.Count代码最后一列,同理Rows.Count代表最后一行,因此需求5也可以用Cells改写,这里就不赘述了。
需求7:选择A列最后一个空单元格
Sub main()
Range("A65536").End(xlUp).Offset(1,0).Select
End Sub
这个比较有用,因为我们每次汇总的时候,都要复制粘贴,为了保持表格的连续性。都需要定位到最后一个空单元格。
需求8:选择第1行最后一个空单元格
Sub main()
Cells(1, Columns.Count).End(xlToLeft).Offset(0, 1).Select
End Sub
这边就涉及到offset的用法了,offset的用法如下例:
offset(|A| , |B|) : 以选择单元格为起点,向下挪移A个单元格,向右挪移B个单元格。
offset(-|A| , -|B|) : 以选择单元格为起点,向上挪移A个单元格,想左挪移B个单元格。
需求9:不使用CurrentRegion、UsedRange,选择整个区域
这个需求我们以后常常会用,复制所有区域的数据到另一个sheet或者其他工作簿中。如果不使用CurrentRegion或UsedRange,我的思路是,先定位一个起始单元格比如A1,如果不需要表头可以定位A2,然后找到A2单元格所处的行的最后一个非空单元格,然后在顺势往下找到该列所处的最后一个非空单元格,选中。就是我们要的整个区域了。
Sub main()
Range(Range("A1"), Cells(1, Columns.Count). _ End(xlToLeft). _ End(xlDown)).Select
End Sub
这边为了美观,进行了适当的折行,折行需要添加一个下划线_作为占位符,然后就可以换行了。切记下划线与前面的内容中间需要有空格。
需求10:使用CurrentRegion、UsedRange
Sub main()
Range("A1").CurrentRegion.Select
End Sub
使用CurrentRegion可以轻松选择所有区域。但是如果是不连续的区域,这边的选择会显得有些错误。如下图
因此我们可以使用UsedRange选择所有被使用的单元格
Sub main()
ActiveSheet.UsedRange.Select
End Sub
UsedRange需要加上是在哪个Sheet中,无法默认是ActiveSheet。因此我们加上sheet名称。
猜你喜欢
- 2025-05-03 根据月份自动求和,这个最简单的Excel函数99%用户想不到!
- 2025-05-03 ChatGPT与Excel如何联动,1秒生成报表!实操如下
- 2025-05-03 Excel 进阶宝典:10 个鲜为人知的技巧,让表格处理效率飙升
- 2025-05-03 Excel常用技能分享与探讨(5-宏与VBA简介 VBA之图表自动化)
- 2025-05-03 C#学习随笔—自定义控件(面板)(c#自定义控件按钮)
- 2025-05-03 文本运算符“&”和文本连接函数 CONCAT 到底有啥神奇的用处
- 2025-05-03 Fabric.js 拖放元素进画布 - 掘金
- 2025-05-03 从零开发HarmonyOS(鸿蒙)运动手表小游戏—数字华容道
- 2025-05-03 一文读懂播放内核解码音视频编码数据并播放的实现原理
- 2025-05-03 打造一个 Compose 版的俄罗斯方块
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- css导航条 (66)
- sqlinsert (63)
- js提交表单 (60)
- param (62)
- parentelement (65)
- jquery分享 (62)
- check约束 (64)
- curl_init (68)
- sql if语句 (69)
- import (66)
- chmod文件夹 (71)
- clearinterval (71)
- pythonrange (62)
- 数组长度 (61)
- javafx (59)
- 全局消息钩子 (64)
- sort排序 (62)
- jdbc (69)
- php网页源码 (59)
- assert h (69)
- httpclientjar (60)
- postgresql conf (59)
- winform开发 (59)
- mysql数字类型 (71)
- drawimage (61)
本文暂时没有评论,来添加一个吧(●'◡'●)