在VBA代码中引用Excel工作表中单元格区域的方式小结

在VBA代码中引用Excel工作表中单元格区域的方式小结
在VBA代码中引用Excel工作表中单元格区域的方式小结

在VBA代码中引用Excel工作表中单元格区域的方式小结

问题一:在VBA代码中,如何引用当前工作表中的单个单元格(例如引用单元格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")

问题二:在VBA代码中,我要引用当前工作表中的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)

问题三:在VBA代码中,如何使用变量实现对当前工作表中不确定单元格区域的引用?

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

(1) Range(“A” & i)

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

(3) Cells(i,1)

(4) Cells(i,j)

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

问题四:在VBA代码中,如何扩展引用当前工作表中的单元格区域?

回答:可以使用Resize属性,例如:

(1) ActiveCell.Resize(4, 4),表示自当前单元格开始创建一个4行4列的区域。

(2) Range("B2").Resize(2, 2),表示创建B2:C3单元格区域。

(3) Range("B2").Resize(2),表示创建B2:B3单元格区域。

(4) Range("B2").Resize(, 2),表示创建B2:C2单元格区域。

如果是在一个单元格区域(如B3:E6),或一个命名区域中(如将单元格区域B3:E6命名为“MyRange”)使用

Resize属性,则只是相对于单元格区域左上角单元格扩展区域,例如:

代码Range("C3:E6").Resize(, 2),表示单元格区域C3:D6,并且扩展的单元格区域可不在原单元格区域内。

因此,可以知道Resize属性是相对于当前活动单元格或某单元格区域中左上角单元格按指定的行数或列数扩展单元格区域。

问题五:在VBA代码中,如何在当前工作表中基于当前单元格区域或指定单元格区域处理其它单元格区域?回答:可以使用Offset属性,例如:

(1) Range("A1").Offset(2, 2),表示单元格C3。

(2) ActiveCell.Offset(, 1),表示当前单元格下一列的单元格。

(3) ActiveCell.Offset(1),表示当前单元格下一行的单元格。

(4) Range("C3:D5").Offset(, 1),表示单元格区域D3:E5,即将整个区域偏移一列。

从上面的代码示例可知,Offset属性从所指定的单元格开始按指定的行数和列数偏移,从而到达目的单元格,但偏移的行数和列数不包括指定单元格本身。

问题六:在VBA代码中,如何在当前工作表中引用交叉区域?

回答:可以使用Intersect方法,例如:

Intersect(Range("C3:E6"), Range("D5:F8")),表示单元格区域D5:E6,即单元格区域C3:E6与D5:F8相重迭的区域。

问题七:在VBA代码中,如何在当前工作表中引用多个区域?

回答:

(1) 可以使用Union方法,例如:

Union(Range("C3:D4"), Range("E5:F6")),表示单元格区域C3:D4和E5:F6所组成的区域。

Union方法可以将多个非连续区域连接起来成为一个区域,从而可以实现对多个非连续区域一起进行操作。

(2) 也可以使用下面的代码:

Range("C3:D4, E5:F6")或[C3:D4, E5:F6]

注意:Range("C3:D4",

"F5:G6"),表示单元格区域C3:G6,即将两个区域以第一个区域左上角单元格为起点,以第二个区域右下角单元格为终点连接成一个新区域。

同时,在引用区域后使用Rows属性和Columns属性时,注意下面代码的区别:

①Range("C3:D4", "F8:G10").Rows.Count,返回的值为8;

②Range("C3:D4,F8:G10").Rows.Count,返回的值为2,即只计算第一个单元格区域。

问题八:在VBA代码中,如何引用当前工作表中活动单元格或指定单元格所在的区域(当前区域)?

回答:可以使用CurrentRegion属性,例如:

(1) ActiveCell.CurrentRegion,表示活动单元格所在的当前区域。

(2) Range("D5").CurrentRegion,表示单元格D5所在的当前区域。

当前区域是指周围由空行或空列所围成的区域。该属性的详细使用参见《CurrentRegion属性示例》一文。问题九:在VBA代码中,如何引用当前工作表中已使用的区域?

回答:可以使用UsedRange属性,例如:

(1) https://www.360docs.net/doc/cd4712225.html,edRange,表示当前工作表中已使用的区域。

(2) Worksheets("sheet1").UsedRange,表示工作表sheet1中已使用的区域。

与CurrentRegion属性不同的是,该属性代表工作表中已使用的单元格区域,包括显示为空行,但已进行过格式的单元格区域。该属性的详细使用参见《解析UsedRange属性》一文。

问题十:如何在单元格区域内指定特定的单元格?

回答:可以使用Item属性,例如:

(1)

Range("A1:B10").Item(5,3)指定单元格C5,这个单元格处于以区域中左上角单元格A1(即区域中第1行第1列的单元格)为起点的第5行第3列。因为Item属性为默认属性,因此也可以简写为:

Range("A1:B10")(5,3)。

如果将A1:B10区域命名为”MyRange”,那么Range("MyRange")(5,3)也指定单元格C5。

(2) Range("A1:B10")(12,13)指定单元格M12,即用这种方式引用单元格,该单元格不必一定要包含在区域内。

同时,也不需要索引数值是正值,例如:

① Range("D4:F6")(0,0)代表单元格C3;

② Range("D4:F6")(-1,-2)代表单元格A2。

而Range("D4:F6")(1,1)代表单元格D4。

(3) 也可以在单元格区域中循环,例如:

Range("D4:F6")(2,2)(3,4)代表单元格H7,即该单元格位于作为左上角单元格E5的第3行第4列(因为E5是开始于区域中左上角单元格D4起的第2行第2列)。

(4) 也能使用一个单个的索引数值进行引用。计数方式为从左向右,即在区域中的第一行开始从左向右计数,第一行结束后,然后从第二行开始从左到右接着计数,依次

类推。(注:从区域中第一行第一个单元格开始计数,当第一行结束时,转入第二行最左边的单元格,这样按一行一行从左向右依次计数。以单元格区域中第1个单

元格开始,按上述规则依次为第2个单元格、第3个单元格….等等),例如:

Range("A1:B2")(1) 代表单元格A1;

Range("A1:B2")(2) 代表单元格B1;

Range("A1:B2")(3) 代表单元格A2;

Range("A1:B2")(4) 代表单元格B2。

这种方法可在工作表中连续向下引用单元格(即不一定是在单元格区域内,但在遵循相同的规律),例如:Range("A1:B2")(5)代表单元格A3;

Range("A1:B2")(14)代表单元格B7,等等。

也可以使用单个的负数索引值。

这种使用单个索引值的方法对遍历列是有用的,例如,Range("D4")(1)代表单元格D4,Range("D4")(2)代表单元格D5,Range

("D4")(11)代表单元格D14,等等。

同理,稍作调整后也可遍历行,例如:

Range("D4").Columns(2)代表单元格E4,Range("D4").Columns(5)指定单元格H4,等等。

(5)当与对象变量配合使用时,Item属性能提供简洁并有效的代码,例如:

Set rng = Worksheets(1).[a1]

定义了对象变量后,像单元格方法一样,Item属性允许使用两个索引数值引用工作表中的任一单元格,例如,rng(3,4)指定单元格D3。(By Chip

Pearson)

问题十一:在VBA代码中,如何引用当前工作表中的整行或整列?

回答:见下面的示例代码:

(1) Range("C:C").Select,表示选择C列。

Range("C:E").Select,表示选择C列至E列。

(2) Range("1:1").Select,表示选择第一行。

Range("1:3").Select,表示选择第1行至第3行。

(3) Range("C:C").EntireColumn,表示C列;

Range("D1").EntireColumn,表示D列。

同样的方式,也可以选择整行,然后可以使用如AutoFit方法对整列或整行进行调整。

问题十二:在VBA代码中,如何引用当前工作表中的所有单元格?

回答:可以使用下面的代码:

(1) Cells,表示当前工作表中的所有单元格。

(2) Range(Cells(1, 1), Cells(Cells.Rows.Count, Cells.

Columns.Count)),其中Cells.Rows表示工作表所有行,Cells. Columns表示工作表所有列。

问题十三:在VBA代码中,如何引用工作表中的特定单元格区域?

回答:在工作表中,您可能使用过“定位条件”对话框。可以通过选择菜单“编辑——定位”,单击“定位”对话框中的“定位条件”按钮显示该对话框。这个对话框可以允许用户选择特定的单元格。例如:(1)

Worksheets("sheet1").Cells.SpecialCells(xlCellTypeAllFormatConditions),表示工作表sheet1中由带有条件格式的单元格所组成的区域。

(2)

ActiveCell.CurrentRegion.SpecialCells(xlCellTypeBlanks),表示当前工作表中活动单元格所在区域中所有空白单元格所组成的区域。

当然,还有很多常量和值的组合,可以让您实现特定单元格的查找并引用。参见《探讨在工作表中找到最后一行》一文。

问题十四:在VBA代码中,如何引用其它工作表或其它工作簿中的单元格区域?

回答:要引用其它工作表或其它工作簿中的单元格区域,只需在单元格对象前加上相应的引用对象即可,例如:

(1) Worksheets(“Sheet3”).Range(“C3:D5”),表示引用工作表sheet3中的单元格区域C3:D5。

(2)

Workbooks(“MyBook.xls”).Worksheets(“sheet1”).Range(“B2”),表示引用MyBook工作簿中工作表Sheet1上的单元格B2。

问题十五:还有其它的一些情形吗?

回答:列举如下:

(1)

Cells(15),表示单元格O1,即可在Cells属性中指定单元格数字来选择单元格,其计数顺序为自左至右、从上到下,又如Cells(257),表示单元格B1。

(2) Cells(, 256),表示单元格IV1,但是如果Cells(, 257),则会返回错误。

结语

我们用VBA对Excel进行处理,一般是对其工作表中的数据进行处理,因此,引用单元格区域是ExcelVBA 编程中最基本的操作之一,只有确定了所处理的单元格区域,才能使用相应的属性和方法进行下一步的操作。

上面列举了一些引用单元格区域的情形和方式,可以看出,引用单元格区域有很多方式,有一些可能不常用,可以根据工作表的所处的环境和个人编程习惯进行选择使用。

当然,在编写程序时,也可能会将上面的一些属性联合使用,以达到选取特定操作对象的目的,例如Offset 属性、Resize属性、CurrentRegion属性、UsedRange属性等的组合。

如何选择当前工作表中的单元格?

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

ActiveSheet.Cells(5, 4).Select

或:ActiveSheet.Range("D5").Select

如何选择同一工作簿中其它工作表上的单元格?

例如,要选择同一工作簿中另一工作表上的单元格E6,可以使用下面的代码:Application.Goto ActiveWorkbook.Sheets("Sheet2").Cells(6, 5)

或:Application.Goto (ActiveWorkbook.Sheets("Sheet2").Range("E6"))

也可以先激活该工作表,然后再选择:

Sheets("Sheet2").Activate

ActiveSheet.Cells(6, 5).Select

如何选择不同工作簿中的单元格?

例如,要选择另一工作簿中的一个工作表上的单元格F7,可以使用下面的代码:Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Cells(7, 6)

或:Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("F7")

也可以先激活该工作簿中的工作表,然后再选择:

Workbooks("BOOK2.XLS").Sheets("Sheet1").Activate

ActiveSheet.Cells(7, 6).Select

如何选择当前工作表中的单元格区域?

例如,要选择当前工作表中的单元格区域C2:D10,可以使用下面的代码:

ActiveSheet.Range(Cells(2, 3), Cells(10, 4)).Select

或:ActiveSheet.Range("C2:D10").Select

或:ActiveSheet.Range("C2", "D10").Select

如何选择同一工作簿中另一工作表上的单元格区域?

例如,要选择同一工作簿中另一工作表上的单元格区域D3:E11,可以使用下面的代码:Application.Goto ActiveWorkbook.Sheets("Sheet3").Range("D3:E11")

或:Application.Goto ActiveWorkbook.Sheets("Sheet3").Range("D3", "E11")

也可以先激活该工作表,然后再选择:

Sheets("Sheet3").Activate

ActiveSheet.Range(Cells(3, 4), Cells(11, 5)).Select

如何选择不同工作簿中工作表上的单元格区域?

例如,要选择另一工作簿中某工作表上的单元格区域E4:F12,可以使用下面的代码:Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("E4:F12")

或:Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("E4", "F12") 也可以先激活该工作表,然后再选择:

Workbooks("BOOK2.XLS").Sheets("Sheet1").Activate

ActiveSheet.Range(Cells(4, 5), Cells(12, 6)).Select

如何在当前工作表中选择命名区域?

例如,要选择当前工作表中名为“Test”的区域,可以使用下面的代码:

Range("Test").Select

或:Application.Goto "Test"

如何选择同一工作簿中另一工作表上的命名区域?

例如,选择同一工作簿中另一工作表上名为“Test”的区域,可使用下面的代码:Application.Goto Sheets("Sheet1").Range("Test")

也可以先激活工作表,再选择:

Sheets("Sheet1").Activate

Range("Test").Select

如何选择不同工作簿中工作表上的命名区域?

例如,要选择不同工作簿中工作表上名为“Test”的区域,可使用下面的代码:

Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet2").Range("Test")

也可以先激活工作表,再选择:

Workbooks("BOOK2.XLS").Sheets("Sheet2").Activate

Range("Test").Select

如何选择与当前单元格相关的单元格?

例如,要选择距当前单元格下面5行左侧4列的单元格,可以使用下面的代码:

ActiveCell.Offset(5, -4).Select

要选择距当前单元格上方2行右侧3列的单元格,可以使用下面的代码:

ActiveCell.Offset(-2, 3).Select

注意:一定要保证当前单元格与所选单元格之间的距离在工作表范围内,否则会出错。

如何选择与另一单元格(不是当前单元格)相关的单元格?

例如,要选择距单元格C7下方5行右侧4列的单元格,可以使用下面的代码:

ActiveSheet.Cells(7, 3).Offset(5, 4).Select

或:ActiveSheet.Range("C7").Offset(5, 4).Select

如何选择偏离指定区域的一个单元格区域?

例如,要选择与名为“Test”的区域大小相同但在该区域下方4行右侧3列的一个区域,可以使用下面的代码:

ActiveSheet.Range("Test").Offset(4, 3).Select

如果该命名区域不在当前工作表中,可以先激活该工作表,然后再选择,如下面的代码:

Sheets("Sheet3").Activate

ActiveSheet.Range("Test").Offset(4, 3).Select

如何选择一个指定的区域并扩展区域的大小?

例如,要选择当前工作表中名为“Database”区域,然后将该区域向下扩展5行,可以使用下面的代码:Range("Database").Select

Selection.Resize(Selection.Rows.Count + 5, Selection.Columns.Count).Select

如何选择一个指定的区域,再偏离,然后扩展区域的大小?

例如,选择名为“Database”区域下方4行右侧3列的一个区域,然后扩展2行和1列,可以使用下面的代码:

Range("Database").Select

Selection.Offset(4, 3).Resize(Selection.Rows.Count + 2, Selection.Columns.Count + 1).Select 如何选择两个或多个指定区域?

例如,为了同时选择名为“Test”和“Sample”的两个区域,可以使用下面的代码:

Application.Union(Range("Test"), Range("Sample")).Select

注意,这两个区域须在同一工作表中,如下面的代码:

Set y = Application.Union(Range("Sheet1!A1:B2"), Range("Sheet1!C3:D4"))

但Union方法不能处理不同工作表中的区域,可下面的代码:

Set y = Application.Union(Range("Sheet1!A1:B2"), Range("Sheet2!C3:D4"))

将会出错。

如何选择两个或多个指定区域的交叉区域?

例如,要选择名为“Test”和“Sample”的两个区域的交叉区域,可以使用下面的代码:

Application.Intersect(Range("Test"), Range("Sample")).Select

注意,两个区域必须在同一工作表中。

= = = = = = = = = = = = = = = = = = = = = = = = =

下面的示例使用了如下图所示的工作表。

如何选择连续数据列中的最后一个单元格?

例如,要选择一个连续列中的最后一个单元格,可以使用下面的代码:

ActiveSheet.Range("a1").End(xlDown).Select

该代码使用在上面的工作表中,单元格A4被选择。

如何选择连续数据列底部的空单元格?

例如,要选择连续单元格区域下面的单元格,可以使用下面的代码:

ActiveSheet.Range("a1").End(xlDown).Offset(1, 0).Select

该代码使用在上面的工作表中,单元格A5被选择。

如何选择某列中连续数据单元格区域?

例如,要选择一列中的连续数据单元格区域,可以使用下面的代码:

ActiveSheet.Range("a1", ActiveSheet.Range("a1").End(xlDown)).Select

或:ActiveSheet.Range("a1:" & ActiveSheet.Range("a1").End(xlDown).Address).Select

该代码使用在上面的工作表中,单元格区域A1:A4将被选择。

如何选择某列中非连续数据单元格区域?

例如,要选择某列中非连续数据单元格区域,可以使用下面的代码:

ActiveSheet.Range("a1", ActiveSheet.Range("a65536").End(xlUp)).Select

或:ActiveSheet.Range("a1:" & ActiveSheet.Range("a65536").End(xlUp).Address).Select

该代码使用在上面的工作表中,单元格区域A1:A6将被选择。

如何选择一个矩形(规则的)单元格区域?

要选择围绕某单元格的一个矩形区域,可以使用CurrentRegion方法。CurrentRegion方法将选择四周被空行和空列围绕的区域,如下面的代码:

ActiveSheet.Range("a1").CurrentRegion.Select

该代码使用在上面的工作表中,将选择单元格区域A1:C4。也可以使用下面的代码:

ActiveSheet.Range("a1", ActiveSheet.Range("a1").End(xlDown).End(xlToRight)).Select

或:

ActiveSheet.Range("a1:" & ActiveSheet.Range("a1").End(xlDown).End(xlToRight).Address).Select 若想选择单元格区域A1:C6,可使用下面的代码:

lastCol = ActiveSheet.Range("a1").End(xlToRight).Column

lastRow = ActiveSheet.Cells(65536, lastCol).End(xlUp).Row

ActiveSheet.Range("a1", ActiveSheet.Cells(lastRow, lastCol)).Select

或:

lastCol = ActiveSheet.Range("a1").End(xlToRight).Column

lastRow = ActiveSheet.Cells(65536, lastCol).End(xlUp).Row

ActiveSheet.Range("a1:" & ActiveSheet.Cells(lastRow, lastCol).Address).Select

= = = = = = = = = = = = = = = = = = = =

如何选择多个不同长度的非连续列?

例如,有下图所示的工作表:

要同时选择A列和C列中的数据,即单元格区域A1:A3和C1:C6,可使用下面的代码:

StartRange = "A1"

EndRange = "C1"

Set a = Range(StartRange, Range(StartRange).End(xlDown))

Set b = Range(EndRange, Range(EndRange).End(xlDown))

Union(a, b).Select

= = = = = = = = = = = = = = = = = = = =

注:使用Application.Goto方法,如果指定另一工作表(不是当前工作表)中的指定区域,在Range属性中使用两个Cells属性时,则必须包括Sheets对象,如:

Application.Goto Sheets("Sheet1").Range(Sheets("Sheet1").Range(Sheets("Sheet1").Cells(2, 3), Sheets("Sheet1").Cells(4, 5)))

= = = = = = = = = = = = = = = = = = = =

在VBA中,Range 对象既可表示单个单元格,也可表示单元格区域。下面的内容说明了标识和处理Range 对象最常用的方法。

引用工作表上的所有单元格

如果对工作表应用 Cells 属性时不指定索引号,该方法将返回代表工作表上所有单元格的 Range 对象。以下 Sub 过程清除活动工作簿中 Sheet1 上的所有单元格的内容。

Sub ClearSheet()

Worksheets("Sheet1").Cells.ClearContents

End Sub

使用 A1 表示法引用单元格和区域

可使用 Range 属性引用 A1 引用样式中的单元格或单元格区域。下述子例程将单元格区域 A1:D5 的字体设置为加粗。

Sub FormatRange()

Workbooks("Book1").Sheets("Sheet1").Range("A1:D5") _

.Font.Bold = True

End Sub

下表演示了使用 Range 属性的一些 A1 样式引用。

引用含义

Range("A1") 单元格 A1

Range("A1:B5") 从单元格 A1 到单元格 B5 的区域

Range("C5:D9,G9:H16") 多块选定区域

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 列

引用行和列

可用 Rows 属性或 Columns 属性来处理整行或整列。这两个属性返回代表单元格区域的 Range 对象。在下例中,Rows(1) 返回 Sheet1 上的第一行,然后将区域字体加粗。

Sub RowBold()

Worksheets("Sheet1").Rows(1).Font.Bold = True

End Sub

下表举例说明了使用 Rows 和 Columns 属性的一些行和列的引用。

引用含义

Rows(1) 第一行

Rows 工作表上所有的行

Columns(1) 第一列

Columns("A") 第一列

Columns 工作表上所有的列

若要同时处理若干行或列,可创建一个对象变量并使用 Union 方法,将对 Rows 属性或 Columns 属性的多个调用组合起来。下例将活动工作簿中第一张工作表上的第一行、第三行和第五行的字体设置为加粗。Sub SeveralRows()

Worksheets("Sheet1").Activate

Dim myUnion As Range

Set myUnion = Union(Rows(1), Rows(3), Rows(5))

myUnion.Font.Bold = True

End Sub

使用索引号引用单元格

通过使用行列索引号,可用 Cells 属性引用单个单元格。该属性返回代表单个单元格的 Range 对象。在下例中,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 属性。

使用快捷表示法引用单元格

可用方括号将 A1 引用样式或命名区域括起来,作为 Range 属性的快捷方式。这样就不必键入单词“Range”或使用引号了,如下例中所示。

Sub ClearRange()

Worksheets("Sheet1").[A1:B5].ClearContents

End Sub

Sub SetValue()

[MyRange].Value = 30

End Sub

使用 Range 对象引用单元格

如果将对象变量设置为 Range 对象,即可用变量名轻松地操作单元格区域。

以下过程将创建对象变量 myRange,然后将活动工作簿中 Sheet1 上的区域 A1:D5 赋予该变量。随后的语句用该变量名称代替 Range 对象,以修改该区域的属性。

Sub Random()

Dim myRange As Range

Set myRange = Worksheets("Sheet1").Range("A1:D5")

myRange.Formula = "=RAND()"

myRange.Font.Bold = True

End Sub

引用命名区域

用名称比用 A1 样式记号更容易标识单元格区域。若要命名选定的单元格区域,请单击编辑栏左端的名称框,键入名称,再按 Enter。

引用命名区域

以下示例引用名为“MyBook.xls”的工作簿中名为“MyRange”的区域。

Sub FormatRange()

Range("MyBook.xls!MyRange").Font.Italic = True

End Sub

以下示例引用名为“Report.xls”的工作簿中特定于工作表的区域“Sheet1!Sales”。

Sub FormatSales()

Range("[Report.xls]Sheet1!Sales").BorderAround Weight:=xlthin

End Sub

要选定命名区域,可使用 GoTo 方法,该方法将激活工作簿和工作表,然后选定该区域。

Sub ClearRange()

Application.Goto Reference:="MyBook.xls!MyRange"

Selection.ClearContents

End Sub

以下示例显示对于活动工作簿将如何编写与上例相同的过程。

Sub ClearRange()

Application.Goto Reference:="MyRange"

Selection.ClearContents

End Sub

在命名区域中的单元格上循环

下例用 For Each...Next 循环语句在命名区域中的每一个单元格上循环。如果该区域中的任一单元格的值超过 limit 的值,就将该单元格的颜色更改为黄色。

Sub ApplyColor()

Const Limit As Integer = 25

For Each c In Range("MyRange")

If c.Value > Limit Then

c.Interior.ColorIndex = 27

End If

Next c

End Sub

引用多个区域

使用适当的方法可以很容易地同时引用多个单元格区域。可用 Range 和 Union 方法引用任意组合的单元格区域;用 Areas 属性可引用工作表上选定的一组单元格区域。

使用 Range 属性

通过在两个或多个引用之间插入逗号,可使用 Range 属性引用多个区域。以下示例清除了 Sheet1 上三个区域的内容。

Sub ClearRanges()

Worksheets("Sheet1").Range("C5:D9,G9:H16,B14:D18"). _

ClearContents

End Sub

命名区域使得用 Range 属性处理多个区域更加容易。以下示例可在所有这三个命名区域处于同一工作表时运行。

Sub ClearNamed()

Range("MyRange, YourRange, HisRange").ClearContents

End Sub

使用 Union 方法

使用 Union 方法可将多个区域组合到一个 Range 对象中。以下示例创建了名为 myMultipleRange 的Range 对象,并将其定义为区域 A1:B2 和 C3:D4 的组合,然后将该组合区域的字体设置为加粗。

Sub MultipleRange()

Dim r1, r2, myMultipleRange As Range

Set r1 = Sheets("Sheet1").Range("A1:B2")

Set r2 = Sheets("Sheet1").Range("C3:D4")

Set myMultipleRange = Union(r1, r2)

myMultipleRange.Font.Bold = True

End Sub

使用 Areas 属性

可用 Areas 属性引用选定的单元格区域或多块选定区域中的区域集合。下述过程计算选定区域中的块数目,如果有多个块,就显示一则警告消息。

Sub FindMultiple()

If Selection.Areas.Count > 1 Then

MsgBox "不能对多个选区进行操作."

End If

End Sub

处理三维区域

如果要处理若干工作表上相同位置的单元格区域,可用 Array 函数选定两张或多张工作表。下例设置三维单元格区域的边框格式。

Sub FormatSheets()

Sheets(Array("Sheet2", "Sheet3", "Sheet5")).Select

Range("A1:H1").Select

Selection.Borders(xlBottom).LineStyle = xlDouble

End Sub

下例应用 FillAcrossSheets 方法,将 Sheet2 上的区域中的格式和所有数据传送到活动工作簿中所有工作表上的相应区域。

Sub FillAll()

Worksheets("Sheet2").Range("A1:H1") _

.Borders(xlBottom).LineStyle = xlDouble

Worksheets.FillAcrossSheets (Worksheets("Sheet2") _

.Range("A1:H1"))

End Sub

excelvba常见字典用法集锦及代码详解(全)

常见字典用法集锦及代码详解 前言 凡是上过学校的人都使用过字典,从新华字典、成语词典,到英汉字典以及各种各样数不胜数的专业字典,字典是上学必备的、经常查阅的工具书。有了它们,我们可以很方便的通过查找某个关键字,进而查到这个关键字的种种解释,非常快捷实用。 凡是上过EH论坛的想学习VBA里面字典用法的,几乎都看过研究过northwolves狼版主、oobird版主的有关字典的精华贴和经典代码。我也是从这里接触到和学习到字典的,在此,对他们表示深深的谢意,同时也对很多把字典用得出神入化的高手们致敬,从他们那里我们也学到了很多,也得到了提高。 字典对象只有4个属性和6个方法,相对其它的对象要简洁得多,而且容易理解使用方便,功能强大,运行速度非常快,效率极高。深受大家的喜爱。 本文希望通过对一些字典应用的典型实例的代码的详细解释来

给初次接触字典和想要进一步了解字典用法的朋友提供一点备查的参考资料,希望大家能喜欢。 给代码注释估计是大家都怕做的,因为往往是出力不讨好的,稍不留神或者自己确实理解得不对,还会贻误他人。所以下面的这些注释如果有不对或者不妥当的地方,请大家跟帖时指正批评,及时改正。 字典的简介 字典(Dictionary)对象是微软Windows脚本语言中的一个很有用的对象。 附带提一下,有名的正则表达式(RegExp)对象和能方便处理驱动器、文件夹和文件的(FileSystemObject)对象也是微软Windows脚本语言中的一份子。 字典对象相当于一种联合数组,它是由具有唯一性的关键字(Key)和它的项(Item)联合组成。就好像一本字典书一样,是

Excel VBA常用代码VSTO版20150425

21-1 使用工作表的名称 this.Application.Worksheets["工作表2"].Activate(); 21-2 使用工作的索引号 this.Application.Worksheets[2].Activate(); 21-3 使用工作表的代码名称 MessageBox.Show(this.Application.ActiveSheet.CodeName); 21-4 用ActiveSheet属性引用活动工作表 this.Application.Worksheets[2].Select(); MessageBox.Show(https://www.360docs.net/doc/cd4712225.html,); 22-1 选择工作表的方法 this.Application.Worksheets[2].Select(); this.Application.Worksheets[2].Activate(); 23-1 使用For遍历工作表 intwkCount = this.Application.Worksheets.Count; string s = string.Empty; for (inti = 1; i<= wkCount; i++) { s = s + this.Application.Worksheets[i].Name + "\n"; } MessageBox.Show("工作簿中含有以下工作表:" + "\n" + s); 23-2 使用ForEach语句 string s = string.Empty; foreach (Excel.Worksheetwk in this.Application.Worksheets) { s = s + https://www.360docs.net/doc/cd4712225.html, + "\n"; } MessageBox.Show("工作簿中含有以下工作表:" + "\n" + s); 24-1 在工作表中向下翻页 Excel.Sheetsshs=Globals.ThisWorkbook.Worksheets; Excel.WorksheetwkThis = shs.Application.ActiveSheet; Excel.WorksheetwkNext; intwkIndex = wkThis.Index; intwkCount = shs.Count; if (wkIndex

EXCEL常用VBA代码

删除B列中字符串数值少于21的单元格所在的行 Sub 删除行() r = Range("B65536").End(xlUp).Row '行数 For h = r To 1 Step -1 If Cells(h, 2) < 21 Then Cells(h, 2).EntireRow.Delete Next End Sub ------------------------- 【工作表合并】将同一工作簿中的所有工作表合并到一个工作表中 新建一个工作表,写入代码[在新建的工作表标签处右键查看代码(找不到的直接按一下alt+F11) 把下面的代码复制进去然后点上面的运行运行子程序即可]: Sub 合并当前工作簿下的所有工作表() Application.ScreenUpdating = False For j = 1 To Sheets.Count If Sheets(j).Name <> https://www.360docs.net/doc/cd4712225.html, Then X = Range("A65536").End(xlUp).Row + 1 Sheets(j).UsedRange.Copy Cells(X, 1) End If Next Range("B1").Select Application.ScreenUpdating = True MsgBox "当前工作簿下的全部工作表已经合并完毕!", vbInformation, "提示" End Sub ********************************************************* 代码这样写也行: Sub c() For i = Sheets.Count To 2 Step -1 Sheets(i).Select Sheets(i).UsedRange.Copy Sheets(1).Select Cells(Cells(65000, 1).End(xlUp).Row + 1, 1).Select ActiveSheet.Paste 'Sheets(i).Delete Next i End Sub ************************************************************ 把一个工作簿中的所有表单合并成一个表单,怎么去掉重复的表头、标题行?方法如下:

Excel VBA常用代码总结1

Excel VBA常用代码总结1 改变背景色 Range("A1"). = xlNone ColorIndex一览 改变文字颜色 Range("A1"). = 1 获取单元格 Cells(1, 2) Range("H7") 获取范围 Range(Cells(2, 3), Cells(4, 5)) Range("a1:c3") '用快捷记号引用单元格 Worksheets("Sheet1").[A1:B5] 选中某sheet Set NewSheet = Sheets("sheet1") 选中或激活某单元格 '“Range”对象的的Select方法可以选择一个或多个单元格,而Activate方法可以指定某一个单元格为活动单元格。 '下面的代码首先选择A1:E10区域,同时激活D4单元格: Range("a1:e10").Select

Range("d4:e5").Activate '而对于下面的代码: Range("a1:e10").Select Range("f11:g15").Activate '由于区域A1:E10和F11:G15没有公共区域,将最终选择F11:G15,并激活F11单元格。 获得文档的路径和文件名 '路径 '名称 '路径+名称 '或将ActiveWorkbook换成thisworkbook 隐藏文档 = False 禁止屏幕更新 = False 禁止显示提示和警告消息 = False 文件夹做成 strPath = "C:\temp\" MkDir strPath 状态栏文字表示 = "计算中" 双击单元格内容变换 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If>= 5And<= 8) Then If= "●"Then = "" Else = "●" End If Cancel = True End If End Sub 文件夹选择框方法1 Set objShell = CreateObject("") Set objFolder = (0, "文件", 0, 0) If Not objFolder Is Nothing Then path= & "\" end if

EXCELVBA常用代码实战大全共393页word资料

VBA常用技巧代码解析 yuanzhuping 1VBA VBAVBA VBA常用 常用常用 常用技巧 技巧技巧 技巧 目录 目录目录 目录 VBA VBAVBA VBA常用技巧 常用技巧常用技巧 常用技巧 ------------------------------------------------------------------------------------------------------- 1 第1章 Range(单元格)对象 -------------------------------------------------------------------- 10 技巧1 单元格的引用方法 ---------------------------------------------------------------------- 10 1-1 使用Range属性 ----------------------------------------------------------------------- 10 1-2 使用Cells属性 ------------------------------------------------------------------------ 11 1-3 使用快捷记号 -------------------------------------------------------------------------- 11 1-4 使用Offset属性 ----------------------------------------------------------------------- 12 1-5 使用Resize属性 ----------------------------------------------------------------------- 13 1-6 使用Union方法 ----------------------------------------------------------------------- 14 1-7 使用UsedRange属性 ---------------------------------------------------------------- 14 1-8 使用CurrentRegion属性 ------------------------------------------------------------ 15 技巧2 选定单元格区域的方法---------------------------------------------------------------- 15 2-1 使用Select方法 ----------------------------------------------------------------------- 15 2-2 使用Activate方法 -------------------------------------------------------------------- 16 2-3 使用Goto方法 ------------------------------------------------------------------------- 17 技巧3 获得指定行、列中的最后一个非空单元格 -------------------------------------- 17 技巧4 定位单元格 ------------------------------------------------------------------------------- 20

Excel VBA编程的常用代码

用过VB的人都应该知道如何声明变量,在VBA中声明变量和VB中是完全一样的! 使用Dim语句 Dim a as integer '声明a为整型变量 Dim a '声明a为变体变量 Dim a as string '声明a为字符串变量 Dim a as currency ,b as currency ,c as currency '声明a,b,c为货币变量 ...... 声明变量可以是:Byte、Boolean、Integer、Long、Currency、Single、Double、Decimal(当前不支持)、Date、String(只限变长字符串)、String * length(定长字符串)、Object、Variant、用户定义类型或对象类型。 强制声明变量 Option Explicit 说明:该语句必在任何过程之前出现在模块中。 声明常数 用来代替文字值。 Const ' 常数的默认状态是 Private。 Const My = 456 ' 声明 Public 常数。 Public Const MyString = "HELP" ' 声明 Private Integer 常数。 Private Const MyInt As Integer = 5 ' 在同一行里声明多个常数。 Const MyStr = "Hello", MyDouble As Double = 3.4567 选择当前单元格所在区域 在EXCEL97中,有一个十分好的功能,他就是把鼠标放置在一个有效数据单元格中,执行该段代码,你就

可以将连在一起的一片数据全部选中。只要将该段代码加入到你的模块中。 Sub My_Select Selection.CurrentRegion.Select End sub 返回当前单元格中数据删除前后空格后的值 sub my_trim msgbox Trim(ActiveCell.Value) end sub 单元格位移 sub my_offset ActiveCell.Offset(0, 1).Select'当前单元格向左移动一格 ActiveCell.Offset(0, -1).Select'当前单元格向右移动一格 ActiveCell.Offset(1 , 0).Select'当前单元格向下移动一格 ActiveCell.Offset(-1 , 0).Select'当前单元格向上移动一格 end sub 如果上述程序产生错误那是因为单元格不能移动,为了解除上述错误,我们可以往 sub my_offset 之下加一段代码 on error resume next 注意以下代码都不再添加sub “代码名称” 和end sub请自己添加! 给当前单元格赋值 ActiveCell.Value = "你好!!!" 给指定单元格赋值 例如:A1单元格内容设为"HELLO" Range("a1").value="hello" 又如:你现在的工作簿在sheet1上,你要往sheet2的A1单元格中插入"HELLO" 1. sheets("sheet2").select

ExcelVBA常用代码VSTO版

Excel VBA常用代码VSTO版(C#) 1-1使用Range属性 this.Range["A3:F6, B1:C5"].Select(); 1-2使用Cells属性 for(int icell=1;icell<=100;icell++) { this.Application.Worksheets[2].cells[icell, 1].value = icell; } 1-3使用快捷记号 #N/A 1-4使用Offset属性 this.Range["A1:A3"].Offset[3, 3].Select(); 1-5使用Resize属性 this.Range["A1"].Resize[3, 3].Select(); 1-6使用Union属性 this.Application.Union(this.Range["A1:D4"], this.Range["E5:H8"]).Select(); 1-7使用UsedRange属性 https://www.360docs.net/doc/cd4712225.html,edRange.Select(); 1-8使用CurrentRegion属性 this.Range["A5"].CurrentRegion.Select(); 2-1 使用Select方法 this.Application.Worksheets[3].Activate(); this.Application.Worksheets[3].Range["A1:B10"].Select(); 2-2 使用Activate方法 this.Application.Worksheets[3].Activate(); this.Application.Worksheets[3].Range["A1:B10"].Activate(); 注:此处的代码,可以运行,但是只会选中A1这一个单元格 2-3 使用Goto方法

excel代码大全

excel代码大全.txt第一次笑是因为遇见你,第一次哭是因为你不在,第一次笑着流泪是因为不能拥有你。EXCEL宏代码大全 本文件部分文章来源于网络,文章版权归原作者所有,如果本站转载的文章侵犯了您的权益请及时联系我们,我们将尽快妥善处理。本站除部分特别声明禁止转载的专稿外,其他文章可以自由转载,但请务必注明原出处和作者。 000. A列半角内容变红 Sub A列半角内容变红() Dim rg As Range, i As Long = False For Each rg In (xlCellTypeConstants, 3) For i = 1 To Len(rg) If Asc(Mid(rg, i, 1)) 001. A列等于A列减B列 Sub A列等于A列减B列() For i = 1 To 23 Cells(i, 1) = Cells(i, 1) - Cells(i, 2) Next End Sub 002. B列录入数据时在A列返回记录时间(工作表代码) Public Sub Worksheet_Change(ByVal Target As Range) If = 2 Then (, -1) = Now End If End Sub 003. Excel宏常用代码 本大类暂没有内容,以下是关于本类的所有记录集。 004. Sub 以当前日期为名称另存文件() Filename:=Date & ".xls" End Sub 005. Sub 启用保存() ("File").Controls(4).Enabled = True ("File").Controls(5).Enabled = True End Sub 006. Sub 执行前需要验证密码的宏()

Excel VBA编程的常用代码

Excel VBA编程的常用代码 用过VB的人都应该知道如何声明变量,在VBA中声明变量和VB中是完全一样的! 使用Dim语句 Dim a as integer '声明a为整型变量 Dim a '声明a为变体变量 Dim a as string '声明a为字符串变量 Dim a as currency ,b as currency ,c as currency '声明a,b,c为货币变量 ...... 声明变量可以是:Byte、Boolean、Integer、Long、Currency、Single、Double、Decimal (当前不支持)、Date、String(只限变长字符串)、String * length(定长字符串)、Object、Variant、用户定义类型或对象类型。 强制声明变量 Option Explicit 说明:该语句必在任何过程之前出现在模块中。 声明常数

用来代替文字值。 Const ' 常数的默认状态是Private。 Const My = 456 ' 声明Public 常数。 Public Const MyString = "HELP" ' 声明Private Integer 常数。 Private Const MyInt As Integer = 5 ' 在同一行里声明多个常数。 Const MyStr = "Hello", MyDouble As Double = 3.4567 选择当前单元格所在区域 在EXCEL97中,有一个十分好的功能,他就是把鼠标放置在一个有效数据单元格中,执行该段代码,你就可以将连在一起的一片数据全部选中。只要将该段代码加入到你的模块中。 Sub My_Select Selection.CurrentRegion.Select End sub 返回当前单元格中数据删除前后空格后的值 sub my_trim msgbox Trim(ActiveCell.Value)

Excel VBA 常用代码50例

Excel VBA 常用代码50例 001。用命令按扭打印一个sheet1中B2:M30区域中的内容? 我想在Sheet2中制件一个命令按扭, 打印表Sheet1中的[B2:M30] 区域中的内容? 解答:可以将打印区域设为b2:m30,然后打印,如:sheets("sheet1").printarea="b2:m30" sheets("sheet1").printout 随手写的,你可以试试看。最简单的方法是:你先录制宏,在录制宏过程中,跑到页面设臵里面,把打印范围设臵到你想要的范围。 然后退出,停止录制宏,你就可以得到一些代码! 002。能否对一列中的文字统一去掉最后一个字?这些文字不统一,有些字数多,有些字数少。如何处理?我用{"&-}不行 解答:=REPLACE(A1,LEN(A1),1," ")(在过渡列进行) 003.能否根据单元格数值自动标记序号? 各位大佬,一工作表有两列,“序号”及“金额”,能否将金额不等于0的行自动标上序号呢?如无现成的函数,应怎样设臵? 解答:Dim xuhao As Integer xuhao = 1

Range("b2").Select Do While Selection <> "" If Selection <> 0 Then ActiveCell.Previous.Value = xuhao xuhao = xuhao + 1 End If ActiveCell.Offset(1, 0).Range("a1").Select Loop 004.求教自定义函数 查询了一些自定义函数的例子都是单变量的。自定义函数能否建立“(As Range) As Interger”的函数,应该可以的,请各位大师赐教!请以“∑x2”为例,万分感谢!(该用"For Each ...Next",就是还不知道如何引用Range中的每个值,请高手指点。) 解答:参数使用Range而函数值为Integer是可以的 用for each next循环思路也是对的,应该这样作: dim rg as range dim ivalue as integer for each rg in 参数区域 ivalue=ivalue+rg.value next

excelvba编程的常用代码

强制声明变量 Option Explicit 说明:该语句必在任何过程之前出现在模块中。 声明常数 用来代替文字值。 Const ' 常数的默认状态是 Private。 Const My = 456 ' 声明 Public 常数。 Public Const MyString = "HELP" ' 声明 Private Integer 常数。 Private Const MyInt As Integer = 5 ' 在同一行里声明多个常数。 Const MyStr = "Hello", MyDouble As Double = 选择当前单元格所在区域 在EXCEL97中,有一个十分好的功能,他就是把鼠标放置在一个有效数据单元格中,执行该段代码,你就可以将连在一起的一片数据全部选中。只要将该段代码加入到你的模块中。Sub My_Select End sub 返回当前单元格中数据删除前后空格后的值 sub my_trim msgbox Trim end sub

单元格位移 sub my_offset (0, 1).Select'当前单元格向左移动一格 (0, -1).Select'当前单元格向右移动一格 (1 , 0).Select'当前单元格向下移动一格 (-1 , 0).Select'当前单元格向上移动一格 end sub 如果上述程序产生错误那是因为单元格不能移动,为了解除上述错误,我们可以往 sub my_offset 之下加一段代码 on error resume next 注意以下代码都不再添加sub “代码名称” 和end sub请自己添加! 给当前单元格赋值 = "你好!!!" 给指定单元格赋值 例如:A1单元格内容设为"HELLO" Range("a1").value="hello" 又如:你现在的工作簿在sheet1上,你要往sheet2的A1单元格中插入"HELLO" 1. sheets("sheet2").select range("a1").value="hello" 或 2. Sheets("sheet1").Range("a1").Value = "hello" 说明: 被选中,然后在将“HELLO"赋到A1单元格中。 不必被选中,即可“HELLO"赋到sheet2 的A1单元格中。

Excel VBA编程常用代码

Excel VBA编程常用代码 时间:2009-12-05 22:36:04 来源:本站作者:未知我要投稿我要收 藏投稿指南 用过VB的人都应该知道如何声明变量,在VBA中声明变量和VB中是完全一样的!使用Dim语句 Dim a as integer '声明a为整型变量 Dim a '声明a为变体变量 Dim a as string '声明a为字符串变量 Dim a as currency ,b as currency ,c as currency '声明a,b,c为货币变量...... 声明变量可以是:Byte、Boolean、Integer、Long、Currency、Single、Double、Decimal(当前不支持)、Date、String(只限变长字符串)、String * length (定长字符串)、Object、Variant、用户定义类型或对象类型。 强制声明变量 Option Explicit 说明:该语句必在任何过程之前出现在模块中。 声明常数 用来代替文字值。 Const ' 常数的默认状态是 Private。 Const My = 456 ' 声明 Public 常数。 Public Const MyString = "HELP" ' 声明 Private Integer 常数。 Private Const MyInt As Integer = 5 ' 在同一行里声明多个常数。 Const MyStr = "Hello", MyDouble As Double = 3.4567 选择当前单元格所在区域 在EXCEL97中,有一个十分好的功能,他就是把鼠标放置在一个有效数据单元格中,执行该段代码,你就可以将连在一起的一片数据全部选中。只要将该段代码加入到你的模块中。 Sub My_Select Selection.CurrentRegion.Select End sub 返回当前单元格中数据删除前后空格后的值 sub my_trim msgbox Trim(ActiveCell.Value) end sub 单元格位移 sub my_offset ActiveCell.Offset(0, 1).Select'当前单元格向左移动一格

Excel-VBA常用技巧代码

多个工作薄合并成同一个工作薄,如何合并? 多人填一个同样的工作薄,形成了多个工作薄。如何让几人填了一部分的工作薄合并成终稿。 Sub 汇总() Dim mypath As String, myname As String, Dname As String, sh As Workbook, copyrow As Integer Set sh = ThisWorkbook mypath = ThisWorkbook.Path myname = https://www.360docs.net/doc/cd4712225.html, Dname = Dir(mypath & "\*.xls") Application.ScreenUpdating = False Do While Dname <> "" If Dname <> myname Then copyrow = 1 With GetObject(mypath & "\" & Dname) For i = 1 To .Worksheets.Count If .Sheets(i).Cells(5, 3) <> "" Then .Sheets(i).Rows("1:" & .Sheets(i).UsedRange.Rows.Count).Copy sh.Sheets(i).Cells(copyrow, 1) End If Next .Close False End With End If Dname = Dir Loop Application.ScreenUpdating = True MsgBox "OK!" End Sub

合并工作簿:将其他工作簿的全部表合并到本工作 Sub 合并工作簿() Dim FilesToOpen Dim x As Integer On Error GoTo ErrHandler Application.ScreenUpdating = False FilesToOpen = Application.GetOpenFilename _ (FileFilter:="Microsoft Excel Files (*.xls), *.xls", _ MultiSelect:=True, Title:="Files to Merge") If TypeName(FilesToOpen) = "Boolean" Then MsgBox "No Files were selected" GoTo ExitHandler End If x = 1 While x <= UBound(FilesToOpen) Workbooks.Open Filename:=FilesToOpen(x) Sheets().Move After:=ThisWorkbook.Sheets _ (ThisWorkbook.Sheets.Count) x = x + 1 Wend ExitHandler: Application.ScreenUpdating = True Exit Sub ErrHandler: MsgBox Err.Description Resume ExitHandler End Sub Sub 合并工作表() For Each st In Worksheets If https://www.360docs.net/doc/cd4712225.html, <> https://www.360docs.net/doc/cd4712225.html, Then https://www.360docs.net/doc/cd4712225.html,edRange.Offset(1, 0).Copy [a65536].End(xlUp).Offset(1, 0) Next End Sub

VBA常用代码

1.遍历所有已打开的word文档 For Each docOpened In Documents …… Next docOpened 2.Word 将目录下所有文档转换为txt,并删除原文档 Sub 目录下doc转txt() '目录下所有word文档转为txt,并删除word文档 '保存在原目录 '遍历所有文件夹,把带路径的文件名存入字典 On Error Resume Next Dim Path As String, t 'Path为路径,t用于计算程序执行花费的时间 Set objshell = CreateObject("Shell.Application") Set objfolder = objshell.BrowseForFolder(0, "选择文件夹", 0, 0) If Not objfolder Is Nothing Then Path = objfolder.sel f.Path & "\" Set objfolder = Nothing Set objshell = Nothing '创建字典用于存储路径和文件名 Dim DicPath, DicFile, i As Integer, Ke, ContentName A s String, FileName As String, MsgTxt Set DicPath = CreateObject("Scripting.Dictionary")

Set DicFile = CreateObject("Scripting.Dictionary") DicPath.Add Path, "" i = 0 '存所有路径 Do While i < DicPath.count Ke = DicPath.keys ContentName = Dir(Ke(i), vbDirectory) Do While ContentName <> "" '若有子文件夹,则添加 '跳过当前的目录及上层目录 If ContentName <> "." And ContentName < > ".." Then If GetAttr(Ke(i) & ContentName) = vbDirectory Then DicPath.Add (Ke(i) & Conte ntName & "\"), "" End If End If ContentName = Dir Loop i = i + 1 Loop '存所有doc文件名 For Each Ke In DicPath.keys FileName = Dir(Ke & "*.doc")

EXCEL VBA常用代码集

EXCEL VBA常用代码集 1.显示活动工作簿名称 MsgBox "当前活动工作簿是" & https://www.360docs.net/doc/cd4712225.html, 2.保存活动工作簿 Activeworkbook.Save 3.保存所有打开的工作簿关闭EXCEL For Each W in Application.Workbooks W.Save Next W Application.Quit 4.将网格线设置为蓝色 ActiveWindow.GridlineColorIndex = 5 5.将工作表sheet1隐藏 Sheet1.Visible = xlSheetV eryHidden 6.将工作表Shtte1显示 Sheet1.Visible = xlSheetVisible 7.单击某单元格,该单元格所在的行以蓝色背景填充,字体颜色为白色 Private Sub Worksheet_SelectionChange(ByV al Target As Excel.Range) If Target.Row >= 2 Then’第二行以下的区域 On Error Resume Next [ChangColor_With1].FormatConditions.Delete https://www.360docs.net/doc/cd4712225.html, = "ChangColor_With1" With [ChangColor_With1].FormatConditions .Delete .Add xlExpression, , "TRUE" .Item(1).Interior.ColorIndex = 5 .Item(1).Font.ColorIndex = 2 End With End If End Sub 8.使窗体在启动的时候自动最大化 Private Sub UserForm_Initialize() Application.WindowState = xlMaximized With Application Me.Top = .Top Me.Left = .Left Me.Height = .Height Me.Width = .Width End With End Sub 9.不保存工作簿退出EXCEL Application.DisplayAlerts = False Application.Quit

Excel 宏编程的常用代码

Excel 宏编程的常用代码 用过VB的人都应该知道如何声明变量,在VBA中声明变量和VB中是完全一样的!使用Dim语句 Dim a as integer '声明a为整型变量 Dim a '声明a为变体变量 Dim a as string '声明a为字符串变量 Dim a as currency ,b as currency ,c as currency '声明a,b,c为货币变量...... 声明变量可以是:Byte、Boolean、Integer、Long、Currency、Single、Double、Decimal(当前不支持)、Date、String(只限变长字符串)、String * length(定长字符串)、Object、V ariant、用户定义类型或对象类型。 强制声明变量 Option Explicit 说明:该语句必在任何过程之前出现在模块中。 声明常数 用来代替文字值。 Const ' 常数的默认状态是Private。 Const My = 456 ' 声明Public 常数。 Public Const MyString = "HELP" ' 声明Private Integer 常数。 Private Const MyInt As Integer = 5 ' 在同一行里声明多个常数。 Const MyStr = "Hello", MyDouble As Double = 3.4567 选择当前单元格所在区域 在EXCEL97中,有一个十分好的功能,他就是把鼠标放置在一个有效数据单元格中,执行该段代码,你就可以将连在一起的一片数据全部选中。只要将该段代码加入到你的模块中。 Sub My_Select Selection.CurrentRegion.Select End sub

VBA常用代码

VBA编程常用代码 用过VB的人都应该知道如何声明变量,在VBA中声明变量和VB中是完全一样的!使用Dim语句 Dim a as integer '声明a为整型变量 Dim a '声明a为变体变量 Dim a as string '声明a为字符串变量 Dim a as currency ,b as currency ,c as currency '声明a,b,c为货币变量...... 声明变量可以是:Byte、Boolean、Integer、Long、Currency、Single、Double、Decimal(当前不支持)、Date、String(只限变长字符串)、String * length (定长字符串)、Object、Variant、用户定义类型或对象类型。 强制声明变量 Option Explicit 说明:该语句必在任何过程之前出现在模块中。 声明常数 用来代替文字值。 Const ' 常数的默认状态是 Private。 Const My = 456 ' 声明 Public 常数。 Public Const MyString = "HELP" ' 声明 Private Integer 常数。 Private Const MyInt As Integer = 5 ' 在同一行里声明多个常数。 Const MyStr = "Hello", MyDouble As Double = 3.4567 选择当前单元格所在区域 在EXCEL97中,有一个十分好的功能,他就是把鼠标放置在一个有效数据单元格中,执行该段代码,你就可以将连在一起的一片数据全部选中。只要将该段代码加入到你的模块中。 Sub My_Select Selection.CurrentRegion.Select End sub 返回当前单元格中数据删除前后空格后的值 sub my_trim msgbox Trim(ActiveCell.Value) end sub 单元格位移 sub my_offset ActiveCell.Offset(0, 1).Select'当前单元格向左移动一格 ActiveCell.Offset(0, -1).Select'当前单元格向右移动一格 ActiveCell.Offset(1 , 0).Select'当前单元格向下移动一格 ActiveCell.Offset(-1 , 0).Select'当前单元格向上移动一格

ExcelVBA常用代码总结1

Excel VBA常用代码总结1 ?改变背景色 Range("A1").Interior.ColorIndex = xlNone ColorIndex一览 ?改变文字颜色 Range("A1").Font.ColorIndex = 1 ?获取单元格 Cells(1, 2) Range("H7") ?获取围 Range(Cells(2, 3), Cells(4, 5)) Range("a1:c3") '用快捷记号引用单元格 Worksheets("Sheet1").[A1:B5] ?选中某sheet Set NewSheet = Sheets("sheet1") NewSheet.Select ?选中或激活某单元格 '“Range”对象的的Select方法可以选择一个或多个单元格,而Activate方法可以指定某一个单元格为活动单元格。 '下面的代码首先选择A1:E10区域,同时激活D4单元格: Range("a1:e10").Select

Range("d4:e5").Activate '而对于下面的代码: Range("a1:e10").Select Range("f11:g15").Activate '由于区域A1:E10和F11:G15没有公共区域,将最终选择F11:G15,并激活F11单元格。 ?获得文档的路径和文件名 ActiveWorkbook.Path '路徑 https://www.360docs.net/doc/cd4712225.html, '名稱 ActiveWorkbook.FullName '路徑+名稱 '或将ActiveWorkbook换成thisworkbook ?隐藏文档 Application.Visible = False ?禁止屏幕更新 Application.ScreenUpdating = False ?禁止显示提示和警告消息 Application.DisplayAlerts = False ?文件夹做成 strPath = "C:\temp\" MkDir strPath ?状态栏文字表示 Application.StatusBar = "计算中" ?双击单元格容变换 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If (Target.Cells.Row >= 5And Target.Cells.Row <= 8) Then If Target.Cells.Value = "●"Then Target.Cells.Value = "" Else Target.Cells.Value = "●" End If Cancel = True End If End Sub ?文件夹选择框方法1 Set objShell = CreateObject("Shell.Application") Set objFolder = objShell.BrowseForFolder(0, "文件", 0, 0) If Not objFolder Is Nothing Then path= objFolder.self.Path & "\" end if

相关主题
相关文档
最新文档