vbarange应用例子 (vbawordrange用法详解)

说实话, 搞IT的小伙伴大多是懒的, 很不幸我也没能成为特例, 于是我把不知道啥时候从哪里收集的VBA基础资料搬运上来, 给好学者以参考.

本人是因为懒才玩的VBA, 因为各部门的同事经常碰到 量大且重复的 Excel操作, 问及有什么好的方法, 能快准狠的马骝的完成工作. 我试着就玩起了这个脚本, 深入到制作插件.

此时发生了一件奇葩的事儿, 由于懒人代码可省去大部分的人工操作, 因此也能腾出些时间大家做些自己喜欢做的事儿, 这时侯公司却企图给同事来个加活不加薪的不耻行为, 被同事拒绝, 最终离开公司. 于是我现在就不写了, 好心办了坏事儿, 不该啊.

又怕学的这可怜的知识给忘了, 就搞了个头条号, 捋一捋, 搬一搬, 把能想起来的, 能放上来的, 都整理一下. 近来做ERP成本没空, 好久都不动这个号了.

今天公司盘点库存, 让我统一做盘点单, 统一打印格式, 统一页眉页脚. 大小30个仓库, 如果一个个的来, 那不是要了老夫的命吗. 于是只导出数据, 将后期的格式和页面设置做成脚本, 导一个仓库一键处理, 自己预览一下, 就打印了. 代码查查资料写好2个小时, 测试OK, 30个仓库的数据 包括打印动作, 如果不计算导表时系统等待的时间, 一个小时不到就搞定了.

使用Excel的小伙伴都知道, 如果30个仓库, 仓库又分不同的责任人, 那导出的可不只30张表, 可能要翻一翻的哦. 这个调整格式, 设置页眉页脚的操作, 设置一次还好, 三到五次还行, 七八次还能免费接受, 让你连续设置七八十次呢. 所以, 闲暇时间学些小知识还是有必要的.

不说了, 资料奉上, 略加整理(如有侵权请告知, 即删), 请大家为原创者点赞!!!

------------------------------------------------------

引子:本文以MSDN中《Developers Guide to the Excel 2007 Range Object》一文为线索,

整理并归纳了自已以前学习Range对象时的一系列学习笔记。辑录于此,供有兴趣的朋友参考。

毫无疑问,Range对象是Excel对象模型中最重要的对象,几乎所有与工作表有关的实质性操作都涉及到Range对象,可以说,熟悉并熟练运用Range对象是掌握Excel VBA编程的关键。下面,让我们逐步了解、熟悉并开始使用Range对象吧。

在VBA代码中引用或选择Excel工作表的单元格或单元格区域

在使用Excel VBA编程时,我们通常需要频繁地引用单元格区域,然后再使用相应的属性和方法对区域进行操作。所谓单元格区域,指的是单个的单元格、或者包含连续或非连续的多个单元格组成的区域、或者是整行、整列、甚至是三维单元格区域等。

[应用1]引用当前工作表中的单个单元格(例如引用单元格C3)

可以使用下面列举的任一方式引用当前工作表中的单元格(C3):

(1)Range(“C3″)

(2)[C3]

(3)Cells(3, 3)

(4)Cells(3, “C”)

(5)Range(“C4″).Offset(-1)

Range(“D3″).Offset(, -1)

Range(“A1″).Offset(2, 2)

(6)若C3为当前单元格,则可使用:ActiveCell

(7)若将C3单元格命名为“Range1”,则可使用:Range(“Range1″)或[Range1]

(8)Cells(4, 3).Offset(-1)

(9)Range(“A1″).Range(“C3″)

此外,可以使用下面的代码选择当前工作表中的单元格D5:

ActiveSheet.Cells(5, 4).Select

或:ActiveSheet.Range(“D5″).Select

[应用2]引用当前工作表中的B2:D6单元格区域

可以使用下面列举的任一方式引用当前工作表中的单元格区域B2:D6:

(1)Range(“B2:D6”)

(2)Range(“B2″, “D6″)

(3)[B2:D6]

(4)Range(Range(“B2″), Range(“D6″))

(5)Range(Cells(2, 2), Cells(6, 4))

(6)若将B2:D6区域命名为“MyRange”,则又可以使用下面的语句引用该区域:

① Range(“MyRange”)

② [MyRange]

(7)Range(“B2″).Resize(5, 3)

(8)Range(“A1:C5″).Offset(1, 1)

(9)若单元格B2为当前单元格,则可使用语句:Range(ActiveCell, ActiveCell.Offset(4, 2))

(10)若单元格D6为当前单元格,则可使用语句:Range(“B2″, ActiveCell)

下面的过程将单元格区域 A1:D5 的字体设置为加粗。

Sub FormatRange()

Workbooks("Book1").Sheets("Sheet1").Range("A1:D5").Font.Bold = True

End Sub

Range(“A:A”) 代表当前工作表中的A 列,

Range(“1:1″)代表当前工作表中的第一行,

Range(“A:C”)代表当前工作表中从 A 列到 C 列的区域,

Range(“1:5″)代表当前工作表中从第一行到第五行的区域,

Range(“1:1,3:3,8:8″)代表当前工作表中第 1、3 和 8 行,

Range(“A:A,C:C,F:F”)代表当前工作表中的第A、C和F 列。

下面是给单元格赋值的几个例子。

示例1:

Sub test1()

Worksheets("Sheet1").Range("A5").Value = 22

MsgBox "工作表Sheet1内单元格A5中的值为" _ & Worksheets("Sheet1").Range("A5").Value

End Sub

示例2:

Sub test2()

Worksheets("Sheet1").Range("A1").Value = _

Worksheets("Sheet1").Range("A5").Value

MsgBox "现在A1单元格中的值也为" & _

Worksheets("Sheet1").Range("A5").Value

End Sub

示例3:

Sub test3()

MsgBox "用公式填充单元格,本例为随机数公式"

Range("A1:H8").Formula = "=Rand()"

End Sub

示例4:

Sub test4()

Worksheets(1).Cells(1, 1).Value = 24

MsgBox "现在单元格A1的值为24"

End Sub

示例5:

Sub test5()

MsgBox "给单元格设置公式,求B2至B5单元格区域之和"

ActiveSheet.Cells(2, 1).Formula = "=Sum(B1:B5)"

End Sub

示例6:

Sub test6()

MsgBox "设置单元格C5中的公式."

Worksheets(1).Range("C5:C10").Cells(1, 1).Formula = "=Rand()"

End Sub

示例7:

Sub test7()

MsgBox "给命名区域赋值."

ActiveSheet.Range("MyCell").Value = 1

End Sub

其中,MyCell为单元格区域的名称。

[应用3]引用当前工作表中不确定的单元格区域

有时,我们需要在代码中依次获取工作表*特中**定区域内的单元格,这通常可以采取下面的几种方式:

(1)Range(“A” & i)

(2)Range(“A” & i & “:C” & i)

(3)Cells(i,1)

(4)Cells(i,j)

其中,i、j为变量,在循环语句中指定i和j的范围后,依次获取相应单元格。

在下例中,Cells(6,1)返回Sheet1上的单元格A6,然后将Value属性设置为 10。

Sub EnterValue()

Worksheets("Sheet1").Cells(6, 1).Value = 10

End Sub

因为可以用变量替代编号,所以Cells属性非常适合于在单元格区域中循环,如下例中所示。

Sub CycleThrough()

Dim Counter As Integer

For Counter = 1 To 20

Worksheets("Sheet1").Cells(Counter, 3).Value = Counter

Next Counter

End Sub

如果要同时更改某个区域中所有单元格的属性(或将方法应用于该区域中的所有单元格),建议使用Range属性。

哎呀, 妈呀, 不得了了, 好累啊, 先到这里吧, 明天继续!!!哈哈…..