从0到1读书笔记

前言:

商业世界的每一刻都不会重演。

创业秘籍不存在。

成功人士总能在意想不到的地方发现价值,他们遵循的是基本原则,而非秘籍。

第一章 未来的挑战

未来取决于是否发生变化

世界必然会变得不同,但变化必须基于当今的世界。

好的回答——“大多数人相信X,但事实却是X的对立面。”

从0到1:进步的未来

进步两种形式:

从1到N,水平或广泛进步,全球化

从0到1,垂直或深入进步,科技

作者认为:大部分人认为世界的未来由全球化决定,但事实是——科技更有影响力

创业思维

肩负让世界美好的使命而聚成的小团体

初创公司遵守这样一个原则,你需要和其他人合作来完成工作,但也要控制规模,使组织有效运转

本书目的,让每个初创公司做思维运动:质疑现有观念,从零开始重新审视自己所从事的业务

第二章 像19xx年那样狂欢

尼采曾说:“个人发生精神错乱很少见,但对群体、政党、国家、时代而言,精神错乱却很普遍”

基本命题:企业的目的是盈利而非赔钱。1990s后期互联网热潮,却将浏览量视为比盈利更重要的事

互联网泡沫之后的经验教条:1、循序渐进2、保持精简和灵活性3、在改进中竞争4、专注于产品,而非营销;

然而这些说法对立面可能更正确:

1、大胆尝试胜过平庸保守

2、坏计划也好过没计划

3、竞争性市场很难赚钱

4、营销和产品同样重要

并非教条的对立面就一定对,要问自己:你对企业的认识有多少是基于对以往过错的错误反应形成的?最反主流的行动不是抵制潮流,而是在潮流中不丢弃自己的独立思考

第3章 所有成功的企业都是不同的

资本主义与竞争的概念相反

企业家教训:如果想创造并获得持久的价值,不要只是跟风建立一个没有特色的企业 企业的谎言

竞争企业和垄断企业自身认识差不多,但实际差距巨大

垄断者谎言

垄断者总是夸大(并不存在的)竞争——把市场划分过大

非垄断者总是夸大自己的独特性——把市场划分过小

冷酷无情的市场

要将企业从生存竞赛中解脱出来,唯一的方法就是:获得垄断利润

企业成功的原因各不相同:每个企业都是靠解决一个独一无二的问题获得垄断地位;而企业失败原因却相同:无法逃脱竞争

第4章 竞争意识

为什么会有竞争?马克思认为,差异导致竞争;莎士比亚认为,相似导致竞争。在商界,莎翁要高明一些。

竞争不能带来价值的提升,而是充满破坏力

第5章 后发优势

垄断企业特征:

1、专利技术

一般来说,专利技术要比最接近技术好上10倍才有真正地垄断优势,好上10倍最好是创造全新的事物

2、网络效应

3、规模经济

4、品牌优势

建立垄断企业的方法:

占领小市场

扩大规模

破坏性创新:不要将你的公司归结为已有公司的敌对者

第6章 成功不是中彩票

要重视长期规划

第七章 向钱看

幂次法则是是投资或有些世界的规则

第8章 秘密

常识 秘密 神秘之谜

容易 困难 不可能

成功的企业建立于开放却未知的秘密之上,这秘密关乎世界如何运作

除非你的理念完全符合习俗,否则将你所知的一切告诉每个人不是什么好主意

选择谁也不告诉或是选择人人都告诉有一个平衡点——那就是公司存在的秘密

所有成功的企业都收基于鲜为人知的秘密

第9章 基础决定命运

“蒂尔定律”:基础没打好的初创企业是无法挽救的

第11章 顾客不会主动上门

世界正是由推销驱动的

销售幂次法则:销售策略并不是越多越好,一招鲜

第12章 人与机器

人机结合,干活不累

第13章 绿色能源与特斯拉

多数公司折戟是因为至少忽略以下7个问题之一,而这些问题是每个公司必须回答的:

1、工程问题:

你的技术具有突破性,而不仅仅是稍有改进吗?

2、时机问题:

现在开创事业,时机合适吗?

3、垄断问题:

开创之初,是在一个小市场抢占大份额吗?

4、人员问题:

你有合适的团队吗?

5、销售问题:

除了创造产品,你有没有办法销售产品?

6、持久问题:

未来10年或20年,你能保住自己的市场地位吗?

7、秘密问题:

你有没有找到一个其他人没有发现的独特机会?

成功不可负责,但通往成功的思想方法却可以学习获得。要想脱颖而出就要在寻常出看到不寻常。从0到1,是质变,与从1到N,有着不同的思考方法。从0到1,占领先机从而获得垄断。注重营销,避免竞争,运用杠杆(机械、信息化),遵守运用规律(幂次法则),在别人狂热时冷静。世界有些秘密,虽困难但可解决,这就要我们去发现,才有商机。

 

第二篇:Excel20xxVBA参考大全 读书笔记ver1.0

作者:

修改时间:

版本:

说明: 郭栋 2011-4-19 ver1.0 创建版本

目录

第一章:Excel VBA基础 .................................................................................................................. 4

1录制宏: ................................................................................................................................ 4

2用户自定义函数 .................................................................................................................... 4

3 Excel对象模型....................................................................................................................... 4

集合 ................................................................................................................................... 5

属性 ................................................................................................................................... 5

方法 ................................................................................................................................... 5

事件 ................................................................................................................................... 5

4 VBA语言 ................................................................................................................................ 5

基本的输入输出 ............................................................................................................... 5

调用函数和子过程 ........................................................................................................... 5

括号和参数列表 ............................................................................................................... 6

变量声明 ........................................................................................................................... 6

变量的作用域和生存期 ................................................................................................... 7

变量类型 ........................................................................................................................... 7

对象变量 ........................................................................................................................... 7

做出判断 ........................................................................................................................... 7

循环 ................................................................................................................................... 9

数组 ................................................................................................................................... 9

运行时错误处理 ............................................................................................................. 10

第二章:Application对象 ............................................................................................................. 10

1全局:.................................................................................................................................. 10

2 Active属性: ....................................................................................................................... 10

3 显示警告: ......................................................................................................................... 10

4 屏幕刷新: ......................................................................................................................... 10

5 Application的Evaluate方法: .............................................................................................. 10

6 InputBox: .............................................................................................................................. 11

7 状态栏: ............................................................................................................................. 11

8 SendKeys: .......................................................................................................................... 11

9 OnTime: ............................................................................................................................. 12

10 OnKey: ............................................................................................................................. 12

11 工作表函数: ................................................................................................................... 12

12 Caller: .............................................................................................................................. 12

第三章:工作薄和工作表 ............................................................................................................. 12

1 Workbooks集合: .............................................................................................................. 12

添加Workbook对象 ...................................................................................................... 13

从路径中获取文件名 ..................................................................................................... 13

在相同目录中的文件 ..................................................................................................... 13

覆盖现有的工作薄 ......................................................................................................... 13

保存改变 ......................................................................................................................... 14

2 Sheets集合: ...................................................................................................................... 14

工作表(Worksheet) ................................................................................................... 14

工作表的复制和移动 ..................................................................................................... 14

组合工作表 ..................................................................................................................... 14

3 Windows对象: ................................................................................................................. 15

第四章:使用单元格区域 ............................................................................................................. 15

1 Range对象的Activate方法和Select方法 : ................................................................ 15

2 Range属性: ....................................................................................................................... 15

活动工作表中的单元格区域 ......................................................................................... 16

非活动工作表中的单元格区域 ..................................................................................... 16

Range对象的Range属性 .............................................................................................. 16

Cells属性 ........................................................................................................................ 17

Range对象的Item属性 ................................................................................................ 17

在Range中使用Cells .................................................................................................... 17

关于Range对象的Cells属性 ....................................................................................... 18

单个参数的单元格区域引用 ......................................................................................... 18

3 Offset 属性: ...................................................................................................................... 18

4 Resize属性: ....................................................................................................................... 18

5 SpecialCells方法: .............................................................................................................. 18

确定最后一个单元格 ..................................................................................................... 19

删除数字 ......................................................................................................................... 19

6 CurrentRegion属性 ............................................................................................................. 19

7 End属性:........................................................................................................................... 19

8 单元格区域求和: ............................................................................................................. 19

9 Columns属性和Rows属性: ............................................................................................ 19

10 Count属性 ......................................................................................................................... 19

11 Areas属性 .......................................................................................................................... 20

12 Areas集合 .......................................................................................................................... 21

13 Union方法和Intersect方法: ......................................................................................... 21

14 空单元格: ....................................................................................................................... 21

第五章:使用名称 ......................................................................................................................... 21

1 Name对象 ........................................................................................................................... 21

2 Names属性 ......................................................................................................................... 21

Application.Names 属性 ................................................................................................ 22

Workbook.Names属性 ................................................................................................... 22

Worksheet.Names属性 .................................................................................................. 22

3 Name对象的Name属性: ............................................................................................... 23

4 命名单元格区域 ................................................................................................................. 23

创建全局名称 ................................................................................................................. 23

创建局部名称: ............................................................................................................. 23

5 在名称中存储值 ................................................................................................................. 23

6 存储数组 ............................................................................................................................. 24

7 隐藏名字: ......................................................................................................................... 24

8 处理命名的单元格区域: ................................................................................................. 24

9 搜索名称: ......................................................................................................................... 24

第六章:数据列表 ......................................................................................................................... 25

1 结构化数据: ..................................................................................................................... 25

2 排序单元格区域 ................................................................................................................. 25

3 创建表................................................................................................................................. 25

4 排序表................................................................................................................................. 25

5 自动筛选 ............................................................................................................................. 25

第七章:数据透视表 ..................................................................................................................... 25

第八章:图表 ................................................................................................................................. 25

第九章:事件过程 ......................................................................................................................... 25

第二十章:使用ADO访问数据 ................................................................................................... 27

1 结构化查询语言简介 ......................................................................................................... 27

2 ADO概览 ............................................................................................................................. 27

ADO与数据源之间传递途径 ........................................................................................ 27

ADO对象模型总述 ........................................................................................................ 27

VBA是一种面向对象的程序设计语言,与Visual Basic程序设计语言在结构化和处理对象方面相同。VBA(Visual Basic for Application)。

对象模型是可以在应用程序中找到的所有对象的层次结构。例如,Excel对象模型部分,有一个Application对象,Application对象包含Workbook对象,而Workbook对象包含Worksheet对象,Worksheet对象又包含Range对象。

模块事实上只是一个带有一些特定特性的字处理文档,可用于帮助编写和测试代码。

Excel20xxVBA参考大全读书笔记ver10

第一章:Excel VBA基础

1录制宏:通过宏录制器可以生成子过程。在VBA中,宏被称为过程。有两种类型的过程:子过程和函数过程。

2用户自定义函数

Function Fahrenheit( Centigrade )

Fahrenheit = Centigrade * 9 / 5 + 32

End Funtion

3 Excel对象模型

集合

Excel自身是一个对象,称为Application对象。在Excel Application对象里,有一个Workbooks集合,包含所有当前打开的Workbook对象。每个Workbook对象有一个Worksheets集合,包含在该工作薄里的Worksheet对象。

属性

属性是对象的自然特征,可以被度量或量化。例如:每个人都有一个身高属性 一个年龄属性、一个性别属性、一个名字属性等。

方法

方法是对象或者在对象中可以执行的动作。

事件

对象可以响应事件。如果希望某个对象响应事件,需要在该对象相应的时间过程里输入VBA代码。

4 VBA语言

基本的输入输出

MsgBox输出:

MsgBox( prompt [, buttons] [, title] [, helpfile, context] )

通过位置指定参数: MsgBox “打印吗?”, , “警告!”

通过名称指定参数: MsgBox Title:=”警告!”, Prompt:=”打印吗?”, Buttons:=36 指定参数时使用常量:

MsgBox Prompt:=”打印吗?”, Title:=”警告!”, Buttons:=vbYesNo + vbQuestion 返回值:Answer = MsgBox(Prompt:=”打印吗?”, Buttons:=vbYesNo + vbQuestion) 注意:如果希望获取函数的返回值,需要在括号里放置所有的参数。如果无需使用返回值,则不应该使用括号。此规则也应用于对象的方法。 InputBox输入:

UserName = InputBox( Prompt:= “请输入您的名字:” )

调用函数和子过程

Option Explicit

'Start—— 函数、子过程调用

Sub Master()

Dim SalesData As String

SalesData = GetInput(Message:="输入销售数据")

If SalesData = False Then Exit Sub

PostInput InputData:=SalesData, Target:="B3"

End Sub

Function GetInput(Message As String) As String

Dim Data As String

Data = InputBox(Message)

If Data = "" Then GetInput = False Else GetInput = Data

End Function

Sub PostInput(InputData As String, Target As String)

Range(Target).Value = InputData

End Sub

'End—— 函数、子过程调用

括号和参数列表

不使用Call语句:

A. 仅当调用函数过程并使用该函数过程的返回值时,将参数放置在括号内;

B. 当调用函数过程但不使用该函数过程的返回值时,不需要在参数周围放置

括号

C. 当调用子过程时,不在参数周围放置括号

关于括号,重要而细微的区别

A. MsgBox (“插入磁盘”) ‘MsgBox与(“插入磁盘”)之间有一个空格

Response = MsgBox(“插入磁盘”) ‘MsgBox与(“插入磁盘”)之间无空格 注意:在MsgBox与(“插入磁盘”)之间插入一个空格额外的空格表明括号里面是参数而非参数列表。

使用Call语句:

A.如果使用Call语句,则必须在传递给被调用过程的参数两边放置括号

变量声明

注意:Option Explicit仅应用于其出现处的模块。需要强制变量声明的每个模块必须在其声明部分重复该语句

变量的作用域和生存期

变量的作用域定义了哪些过程可以使用该变量。(在VBA中,宏被称为过程。有两种类型的过程:子过程和函数过程。)

变量的生存期定义了变量保存所赋的值多长时间。

变量类型

声明变量类型

Dim SalesData As Double, Index As Integer, StartDate As Date

声明函数和参数类型

Function IsHoliday(WhichDay As Date) As Boolean

Sub Marine(CrewSize As Integer, FuelCapacity As Double)

常量

Const Version As String = “Release 3.9a”

对象变量

创建对象变量引用对象

A. Set语句用于将一个对象引用赋值给一个对象变量。

'Start——对象变量

Sub ObjectVariable()

Dim rng As Range

Set rng = ThisWorkbook.Worksheets("Sheet1").Range("C10")

rng.Value = InputBox("输入一月的销售量")

rng.Offset(-1, 0).Value = "一月销售量"

End Sub

'End——对象变量

做出判断

If语句

If语句提供三种形式:IIf函数、单行的If语句以及If结构。

A.IIf函数

Function dTax(dProfitBeforeTax As Double) As Double

dTax = IIf(dProfitBefore > 0, 0.3 * dProfitBeforeTax, 0)

End Function

B.单行的If语句

Function dTax2(dProfitBeforTax As Double) As Double

If dProfitBeforTax > 0 Then dTax2 = 0.3 * dProfitBeforeTax Else dTax2 = 0

End Function

C.If结构

Function dTax3(dProfitBeforTax As Double) As Double If dProfitBeforTax > 0 Then

dTax3 = 0.3 * dProfitBeforeTax

Else

dTax3 = 0

End If

End Function

Select Case 语句

Function vPrice1(sProduct As stirng) As Variant Select Case sProduct

Case "苹果"

vPrice1 = 12.5

Case "桔子"

vPrice1 = 15

Case "梨子"

vPrice1 = 18

Case Else

vPrice1 = CVErr(xlErrNA)

End Select

End Function

Function vPrice2(sProduct As stirng) As Variant Select Case sProduct

Case "苹果": vPrice2 = 12.5

Case "桔子": vPrice2 = 15

Case "梨子": vPrice2 = 18

Case Else: vPrice2 = CVErr(xlErrNA) End Select

Function vFare(iAge As Integer) As Variant Select Case iAge

Case 0 To 3, Is > 65

vFare = 0

Case 4 To 15

vFare = 10

Case 16 To 65

vFare = 20

Case Else

vFare = CVErr(xlErrNA)

End Select

End Function

循环

Do?Loop

例子省略

For?Next

例子省略

数组

数组

A. 数组是可以包含一个以上数据项的VBA变量,通过在名称后面包含括号声明数组。在括号里放置整数,定义数组中元素的个数。

B. 数组的定义

Dim avData(2) As Integer ‘一共有avData(0),avData(1),avData(2)三个元素 Dim avData(1 To 2) As Integer ‘一共有avData(1),avData(2)两个元素

C. 数组元素赋值

avData(0) = 1

avData(1)=10

avData(2)=100

Dim avData As Variant

avData = Array("North", "South", "East", "West")

D. 数组函数

LBound,UBound

Sub Array1()

Dim aiData(10) As Integer

Dim sMessage As String, i As Integer

For i = LBound(aiData) To UBound(aiData)

aiData(i) = i

Next i

sMessage = "????=" & LBound(aiData) & vbCr

sMessage = sMessage & "????=" & UBound(aiData) & vbCr

sMessage = sMessage & "??????=" & WorksheetFunction.Count(aiData) & vbCr

sMessage = sMessage & "??????=" & WorksheetFunction.Sum(aiData) MsgBox sMessage

End Sub

多维数组

A. 多维数组定义

Dim avData(10, 20) As Variant

Dim avData(1 To 10, 1 To 20)

B. 多维数组函数

Dim avData As Variant

LBound(aiData,1) To UBound(aiData,2)

动态数组

A. 通过忽略数组维数声明一个动态数组

Dim asData() As String

B. 可以在运行时使用ReDim语句声明所需大小,因而可以使用变量定义索引值

的范围:

ReDim avData(iRows, iColumns)

ReDim avData(iminRow To iMaxRow, iminCol To imaxCol)

运行时错误处理

捕获错误

On Error Goto LineLabel

获取错误信息

Err对象可以获取到错误信息。Err对象的Number属性返回错误号,Description

属性返回相关的报错信息

忽略错误

Resume语句表现为三种形式:

A. Resume执行导致错误的语句

B. Resume Next返回导致错误语句的下一条语句并执行该语句,从而跳过了有

问题的语句;

C. Resume LineLabel跳转到代码中指定的行标签处,选择从何处恢复执行

恢复错误处理

On Error GoTo 0

第二章:Application对象

1全局:Application对象是全局对象,它的许多属性和方法也是全局的成员。 2 Active属性:下面的Application属性是全局的属性,允许引用活动的对象:ActiveCell、ActiveChart、ActivePrinter、ActiveSheet、ActiveWindow、ActiveWorkbook、Selection。 3 显示警告:设置DisplayAlerts属性为False,可以屏蔽掉大多数警告。当屏蔽一个警告对话框时,自动执行该对话框中默认的按钮相关联的操作。

例如:Application.DisplayAlerts = False

ActiveSheet.Delete

Application.DisplayAlerts = True

4 屏幕刷新:Application.ScreenUpdating = False

5 Application的Evaluate方法: 将一个 Microsoft Excel 名称转换为一个对象或者一个值。

语法

表达式.Evaluate(Name)

表达式 一个代表 Application 对象的变量。

参数

Excel20xxVBA参考大全读书笔记ver10

返回值

Variant

说明

该方法可使用下列 Microsoft Excel 名称类型:

A1 格式引用。可以通过 A1 格式表示法引用单个单元格。所有引用均视为绝对引用。 区域。在引用中可以使用区域、交集和联合运算符(分别为冒号、空格和逗号)。 定义的名称。可用宏语言指定任何名称。

外部引用。可以使用 ! 运算符引用另一工作簿中的单元格或已定义的名称,例如,Evaluate("[BOOK1.XLS]Sheet1!A1")。

图表对象。可以指定任何图表对象名称(如“Legend”、“Plot Area”或“Series 1”),以访问该对象的属性和方法。例如,

Charts("Chart1").Evaluate("Legend").Font.Name 返回图例中所用字体的名称。

6 InputBox:

Set rng = Application.InputBox(prompt:="请输入单元格区域", Type:=8)

7 状态栏:允许为StatusBar属性赋一个文本字符串,并将该字符串显示在Excel屏幕底部状态栏的左侧。

Sub ShowMessage()

Dim lCounter As Long

For lCounter = 0 To 100000000

If lCounter Mod 1000000 = 0 Then

Application.StatusBar = "Processing Record " & lCounter

End If

Next lCounter

Application.StatusBar = False

End Sub

注意:在过程的结尾,必须将StatusBar属性值设置为False,返回状态栏默认操作。否则,最后的消息将会一直停留在状态栏上。

8 SendKeys:SendKeys允许发送按键到当前活动窗口,用来控制不支持任何其他

交互形式的应用程序,例如DDE(Dynamic Data Exchange)或 OLE。

9 OnTime:使用OnTime方法安排在将来某个时刻运行宏,需要指定该宏运行的日期和时间以及宏的名称。如果使用Application对象的Wait方法暂停某宏,所有的Excel行为,包括手工交互操作,都将挂起。使用OnTime的优势在于,当等待运行预设的宏时,允许返回正常的Excel交互操作,包括运行其他的宏。

10 OnKey:使用OnKey方法将一个宏过程赋给单个按键或任意组合键。也可以使用该方法禁用组合键。

Sub AssignDown()

Application.OnKey "{Down}", "DownTen"

End Sub

Sub DownTen()

ActiveCell.Offset(10, 0).Select

End Sub

11 工作表函数:在Excel中可以使用两种内置函数,一组函数是VBA语言的组成部分,另一组函数是Excel工作表函数的子集(WorksheetFunction 对象用作可从 Visual Basic 中调用的 Microsoft Excel 工作表函数的容器。)。

一般情况下,如果一个VBA函数与一个Excel函数有着相同的用途,那么该Excel函数就不能直接用于VBA宏(但可以使用Evaluate方法访问任何Excel函数)。

12 Caller:Application对象的Caller属性返回调用或执行宏过程的对象的引用,

Select Case TypeName(Application.Caller)

Case "Range"

v = Application.Caller.Address

Case "String"

v = Application.Caller

Case "Error"

v = "Error"

Case Else

v = "unknown"

End Select

MsgBox "caller = " & v

第三章:工作薄和工作表

1 Workbooks集合:Workbooks集合由当前所有在内存里打开的Workbook对象组成。

添加Workbook对象

向Workbooks集合中添加对象的方式有很多种,可以基于Workbook对象的默认属性创建新的空工作薄,或基于模板文件创建新工作薄,还可以打开一个现有的工作薄文件。

A. 基于默认的工作薄创建新的空工作薄,使用Workbooks集合的Add方法

B. Add方法允许为新工作薄指定模板

C. 用Open方法可以向Workbooks集合中添加现有的工作薄文件。

从路径中获取文件名

当在VBA中处理工作薄时,经常需要指定目录路径和文件名称。某些任务只需要知道路径,例如已设置了默认的目录。某些任务只需要知道文件名称,例如希望激活某个已打开的工作薄。而另一些任务中,既需要路径也需要文件名,例如希望打开已存在但不在活动目录中的工作薄文件。

Set wkb = Workbooks.Open(FileName:=” D:\Project\VBAStudy\Capture3\test.xlsx”) MsgBox wkb.Name ‘返回test.xlsx

MsgBox wkb.Path ‘ 返回 D:\Project\VBAStudy\Capture3\

MsgBox wkb.FullName ‘返回 D:\Project\VBAStudy\Capture3\test.xlsx

在相同目录中的文件

ThisWorkbook是对包含该代码的工作薄的引用。无论该工作薄位于哪儿,ThisWorkbook的Path属性都将提供必需的路径以定位相关的文件。

覆盖现有的工作薄

Function bFileIsExists(sFile As String) As Boolean

If Dir(sFile) <> "" Then bFileIsExists = True

End Function

Sub CreateNextFileName()

Dim wkb As Workbook

Dim i As Integer

Dim sFName As String

Set wkb = Workbooks.Add(Template:="D:\Project\VBAStudy\Capture3\Test.xlsx") i = 0

Do

i = i + 1

sFName = "D:\Project\VBAStudy\Capture3\Test" & i & ".xlsx"

Loop While bFileIsExists(sFName)

Application.DisplayAlerts = False

wkb.SaveAs Filename:=sFName

Application.DisplayAlerts = True

End Sub

保存改变

Sub CloseWorkbook()

Dim wkb As Workbook

Set wkb = Workbooks.Open(Filename:="D:\Project\VBAStudy\Capture3\Test.xlsx") Range("A1").Value = Format(Date, "ddd mmm dd, yyyy")

Range("A1").EntireColumn.AutoFit

wkb.Close SaveChanges:=True

End Sub

2 Sheets集合:在Workbook对象里,有一个Sheets集合,其成员是Worksheet对象或Chart对象。Worksheet对象与Chart对象也分别属于他们自己的集合——Worksheets集合 和Charts集合。Charts集合仅包括图表工作表。嵌入在工作表中的图表不是Charts集合的成员,而是包含在ChartObject对象中,是工作表的ChartObjects集合中的成员。

工作表(Worksheet)

可通过在Sheets集合和Worksheets集合里的名称或索引值引用工作表。如果已知要处理的工作表的名称,可以通过名称在Worksheets集合里指定工作表。

注意:Worksheet对象的Index属性返回的是Sheets集合中的索引值,不是Worksheets集合中的索引值。(Sheets集合中的索引值和Worksheets集合中的索引值是不同的。因为,Sheets集合中也包括Chart对象即图表工作表)

工作表的复制和移动

Worksheet对象的Copy方法和Move方法允许每次复制或移动一个或者多个工作表。他们都提供了两个可选参数,允许指定该操作的目的位置,即某指定的工作表之前或之后。如果不使用任何参数,那么将复制或者移动工作表到一个新工作薄中。

注意:Copy方法和Move方法不返回任何值或引用

组合工作表

在VBA中,可以使用Worksheets集合的Select方法并联合Array函数来组合工作表。此外,也可以使用Worksheet对象的Select方法创建工作表组。按正常的方式选择第1个工作表,

通过使用Select方法并将其Replace参数设置为False将其他工作表添加到组中。 3 Windows对象:

Window 对象

代表窗口。

说明

许多工作表特征(如滚动条和标尺)实际上是窗口的属性。Window 对象是 集合的成员。Application 对象的 Windows 集合包含应用程序中的所有窗口,而 Workbook 对象的 Windows 集合只包含指定工作簿中的窗口。

示例

使用 Windows(index)(其中 index 是窗口名称或索引号)可返回一个 Window 对象。下例最大化活动窗口。

Excel20xxVBA参考大全读书笔记ver10

注意,活动窗口总是 Windows(1)。

第四章:使用单元格区域

Range对象可以是单个单元格、一个矩形的单元格区域或者许多矩形单元格区域(不相邻的区域)的联合。Range对象包含在Worksheet对象里。Excel对象模型不支持跨多个工作表的三维Range对象,在单个Range对象里每个单元格必须位于同一个工作表中。

1 Range对象的Activate方法和Select方法 :使用Activate方法激活一个单元格(尽管使用Activate方法时允许指定多个单元格,但只能激活一个单元格),使用Select方法选择单元格区域。

2 Range属性:

返回一个 Range 对象,它代表一个单元格或单元格区域。

语法

表达式.Range(Cell1, Cell2)

表达式 一个代表 Application 对象的变量 、 一个代表 Worksheet 对象的变量 或 一个代表

Range 对象的变量。

参数

Excel20xxVBA参考大全读书笔记ver10

Excel20xxVBA参考大全读书笔记ver10

说明

如果在没有对象识别符时使用,则该属性是 ActiveSheet.Range 的快捷方式(它返回活动表的一个区域,如果活动表不是一张工作表,则该属性无效)。

当应用于 Range 对象时,该属性与 Range 对象相关。例如,如果选中单元格 C3,那么 Selection.Range("B1") 返回单元格 D3,因为它同 Selection 属性返回的 Range 对象相关。此外,代码 ActiveSheet.Range("B1") 总是返回单元格 B1。

活动工作表中的单元格区域

可以使用Application对象的Range属性引用活动工作表中的Range对象。因为Application对象的Range属性是全局的成员,所以可以省略Application对象的引用。

Application.Range(“B2”)

Range(“B2”)

非活动工作表中的单元格区域

如果希望引用非活动工作表上的单元格区域,可简单地使用所需Worksheet对象的Range属性。

Worksheets(“Sheet2”).Range(“C10”)

如果包含该工作表和单元格区域的工作薄处于非活动状态,则需要进一步指定对Range对象的引用:

Workbooks(“test.xlsx”).Worksheets(“Sheet1”).Range(“C10”)

注意:当把Range属性作为另一个Range属性的参数时,还需要使用完整的限定属性: Sub test2()

Sheets("Sheet1").Range( _

Sheets("Sheet1").Range("A1"), _

Sheets("Sheet1").Range("A10") _

).Interior.ColorIndex = 3

End Sub

Range对象的Range属性

Range(“C3”).Range(“B1”) ‘该代码引用单元格D3

Cells属性

使用Application对象、Worksheet对象或Range对象的Cells属性,将引用一个包含Worksheet对象或Range对象里所有单元格的Range对象。

Range对象的Item属性

Range.Item 属性

返回一个 对象,它代表对指定区域某一偏移量处的区域。

语法

表达式.Item(RowIndex, ColumnIndex)

表达式 一个代表 Range 对象的变量。

参数

Excel20xxVBA参考大全读书笔记ver10

说明

语法 1 使用行号和列号或列标作为索引参数。关于此语法的详细信息,请参阅 Range 对象。RowIndex 和 ColumnIndex 参数为相对偏移量。换句话说,如果 RowIndex 指定为 1,则返回区域内第一行中的单元格,而非工作表的第一行。例如,如果选定区域为单元格 C3,则 Selection.Cells(2, 2) 返回单元格 D4(使用 Item 属性可在原始区域之外进行索引)。 注意:因为Item属性是Range对象的默认属性,所以下面的代码是等效的: Cells.Item(2,2) Cells.Item(2,”B”) Cells(2,2) Cells(2,”B”)

在Range中使用Cells

Range(Cells(1,1), Cells(10,5)) ‘该代码引用活动工作表的A1:E10

With Sheets(“Sheet1”)

.Range( .Cells(1,1), . Cells(10,5) ).Font.Bold = True

End With ‘注意确保完整的限定Cells属性

关于Range对象的Cells属性

Range对象的Cells属性提供了一种比较好的方法,根据某单元格相对于起始单元格的位置或在某单元格块中的相对行列位置来实现引用。

Range(“D10:G20”).Cells(2,3) ‘该代码引用单元格F11

事实上,不需要限制所引用的单元格在Range对象的范围内,也可以引用原单元格区域之外的单元格,这就意味着实际上只需要使用该Range对象左上角的单元格作为起始点。 Range(“D10”).Cells(2,3) ‘该代码引用单元格F11

注意:Range(“D10”).Cells(2,3) Range(“D10”).Item(2,3) Range(“D10”)(2,3) 等价

单个参数的单元格区域引用

引用单元格的简写方法既可接受两个参数( 如:Range(“D10”).Item(2,3) ),也可以接受单个参数。在多于一行的单元格区域里,如果索引值超过了单元格区域的总列数,引用将在单元格区域指定的列内,自动向下换行到合适的位置。

Range(“D10:E11”)(2) ‘该代码引用单元格E10

Range(“D10:E11”)(3) ‘该代码引用单元格D11

Range(“D10:E11”)(4) ‘该代码引用单元格E11

Range(“D10:E11”)(5) ‘该代码引用单元格D12

Range("D10:E11")(6).Select '‘该代码引用单元格E12

Range("D10:E11")(7).Select '‘该代码引用单元格D13

3 Offset 属性:Range对象的Offset属性返回与Cells属性相似的对象,但其中有两点不同。

第一点不同是Offset参数基于0而不是基于1,正如Offset的词义(偏移量)所暗示的。 Range(“A10”).Cells(1,1) Range(“A10”).Offset(0,0) ‘这两条代码都引用A10单元格

第二点不同是Cells产生的Range对象只是一个单元格,而Offset属性引用的Range对象是一个单元格区域,与原单元格区域的行数和列数相同。

Range(“A1:B2”).Offset(1,1) ‘该代码引用B2:C3

4 Resize属性:用Range对象的Resize属性,可引用一个单元格区域,它的左上角单元格与原区域相同,但行数与列数不同。下面的代码引用D10:E10

Range(“D10:F20”).Resize(1,2)

5 SpecialCells方法:

确定最后一个单元格

Set rngLast = Range(“A1”).SpecialCells(xlCellTypeLastCell)

lLastRow = rngLast.Row

lLastCol = rngLast.Column

删除数字

On Error Resume Next

For Each rng In Cells.SpecialCells(xlCellTypeConstants, xlNumbers)

If Not IsDate(rng.Value) Then rng.ClearContents

Next rng

6 CurrentRegion属性

7 End属性:End属性模拟<Ctrl+箭头键>的操作。下面的代码引用列A中“A1”单元格下面连续数据单元格中的最后一个数据单元格,或者列A中“A1”单元格下面连续非数据单元格中的最后一个非数据单元格的下一位置。(依据第一句话直接在Excel模拟End属性的功能)

Range.End 属性

返回一个 对象,该对象代表包含源区域的区域尾端的单元格。等同于按键 End+ 向上键、End+ 向下键、End+ 向左键或 End+ 向右键。Range 对象,只读。

语法

表达式.End(Direction)

表达式 一个代表 Range 对象的变量。

参数

Excel20xxVBA参考大全读书笔记ver10

8 单元格区域求和:

9 Columns属性和Rows属性:Columns和Rows是Application、Worksheet和Range对象的属性,返回对工作表或者单元格区域中所有列或行的引用。在每种情形中,返回的引用都是一个Range对象。

10 Count属性

Range.Count 属性

返回一个 Long 值,它代表集合中对象的数量。

语法

表达式.Count

表达式 一个代表 Range 对象的变量。

示例

此示例显示 Sheet1 上选定区域中的列数。此示例还将检测选定区域中是否包含多重选定区域,如果包含,则对多重选定区域中每一子区域进行循环。 Visual Basic for Applications

Sub DisplayColumnCount()

Dim iAreaCount As Integer

Dim i As Integer

Worksheets("Sheet1").Activate

iAreaCount = Selection.Areas.Count

If iAreaCount <= 1 Then

MsgBox "The selection contains " & Selection.Columns.Count & " columns."

Else

For i = 1 To iAreaCount

MsgBox "Area " & i & " of the selection contains " & _

Selection.Areas(i).Columns.Count & " columns."

Next i

End If

End Sub

11 Areas属性

Range.Areas 属性

返回一个 Areas 集合,该集合表示多重区域选择中的所有区域。只读。

语法

表达式.Areas

表达式 一个代表 Range 对象的变量。

说明

对于单一选择区域,Areas 属性返回只包含一个对象的集合,即原始 Range 对象本身。对于多重选择区域,Areas 属性返回一个集合,该集合包含与每个选定区域相对应的对象。

示例

本示例在用户选定多个区域并试图执行某一命令时显示提示信息。该示例必须在工作表上运行。

12 Areas集合

Areas 集合

由选定区域内的多个子区域或连续单元格块组成的集合。

说明

没有单独的 Area 对象;Areas 集合内的各个成员是 Range 对象。在 Areas 集合中,选定区域内每个离散的连续单元格区域都有一个 Range 对象。如果选定区域内只有一个子区域,则 Areas 集合包含一个与该选定区域对应的 Range 对象。

13 Union方法和Intersect方法:Union和Intersect是Application对象的方法,但是因为他们是<全局>的成员,所以不需要在前面引用Application。当希望从两个或多个单元格块中生成一个单元格区域,可使用Union方法。当希望查找两个或多个单元格区域中共同的单元格,即这些单元格区域的重叠部分,则使用Intersect方法。 14 空单元格:使用VBA的IsEmpty函数检测空单元格。

第五章:使用名称

1 Name对象

Name 对象

代表单元格区域的定义名。名称可以是内置名称(如“Database”、“Print_Area”和“Auto_Open”)或自定义名称。

说明

应用程序、工作簿和 Worksheet 对象

Name 对象是 、 和 对象的 集合的成员。使用 (index)(其中 index 是名称索引号或定义名称)可返回一个 Name 对象。 索引号表明名称在集合中的位置。名称按字母顺序从 a 到 z 放置,不区分大小写。 Range 对象

虽然 Range 对象可以有多个名称,但 Range 对象没有 Names 集合。将 Name 与一个 Range 对象一起使用可从名称列表(按字母顺序排序)中返回第一个名称。

2 Names属性

Application.Names 属性

Application.Names 属性

返回一个代表活动工作簿(workbook)中所有名称的 Names 集合。Names 对象,只读。 语法

表达式.Names

表达式 一个代表 Application 对象的变量。

说明

在不使用对象识别符的情况下使用此属性等效于使用 ActiveWorkbook.Names。

Workbook.Names属性

Workbook.Names 属性

返回一个 Names 集合,它代表指定工作簿的所有名称(包括所有指定工作表的名称)。Names 对象,只读。

语法

表达式.Names

表达式 一个代表 Workbook 对象的变量。

说明

在不使用对象识别符的情况下使用此属性等效于使用 ActiveWorkbook.Names。 示例

本示例是将 Sheet1 中的 A1 单元格的名称定义为“myName”。

Excel20xxVBA参考大全读书笔记ver10

Worksheet.Names属性

Worksheet.Names 属性

返回一个 集合,它代表所有特定于工作表的名称(使用“WorksheetName!”前缀定义的名称)。Names 对象,只读。

语法

表达式.Names

表达式 一个代表 Worksheet 对象的变量。

说明

在不使用对象识别符的情况下使用此属性等效于使用 ActiveWorkbook.Names。

3 Name对象的Name属性:

Name.Name 属性

返回或设置一个 String 值,它代表对象的名称。

语法

表达式.Name

表达式 一个代表 Name 对象的变量。

说明

改变Name对象的Name属性:Names(“Data”).Name = “NewData”

4 命名单元格区域

创建全局名称

A. 可以使用Workbook对象的Names集合的Add方法创建引用单元格区域的全局名称:

Names.Add Name:=”Data”, RefersTo:=”=Sheet1!$D$10:$D$12”

注意:在定义的范围之前包含等号并且使用美元符号($)采取单元格的绝对引用。否则,该名称将引用定义该名称时相对于活动单元格的相对地址。

Names.Add Name:=”Data”, RefersTo:=”=$D$10:$D$12”

B. 使用Range对象的Name属性创建全局名称

Range(“A1:D10”).Name = “SalesData”

创建局部名称:

A.使用sheet对象的Names集合的Add方法创建引用单元格区域的局部名称:

Sheet1的局部名称Sales

Names.Add Name:=”Sheet1!Sales”, RefersTo:=”=Sheet1!$E$10:$E$12”

Sheet1的局部名称Costs RefersTo:”=Sheet1!$F$10:$F$12”

Worksheets(“Sheet1”).Names.Add Name:=”Costs”, RefersTo:=”=Sheet1!$F$10:$F$12” Worksheets(“Sheet1”).Names.Add Name:=”Costs”, RefersTo:=”=$F$10:$F$12”

B.使用Range对象的Name属性创建全局名称

Range(“A1:D10”).Name = “Sheet1!SalesData”

5 在名称中存储值

Dim v As Variant

V = 3.1415926

Names.Add Name:=”StoreNumber”, RefersTo:=v ‘在名称中存储数字

V = “Sales”

Names.Add Name:=”StoreString”, RefersTo:=v ‘在名称中存储字符串

Names.Add Name:=”ItemsInA”, RefersTo:=”=COUNTA($A:$A)” ‘在名称中存储公式

获取名称中的值: v = [StoreNumber]

6 存储数组

Sub ArrayToName()

Dim aiArray(1 To 200, 1 To 3) As Integer

Dim iRow As Integer, iColumn As Integer

For iRow = 1 To 200

For iColumn = 1 To 3

aiArray(iRow, iColumn) = iRow * iColumn

Next iColumn

Next iRow

Names.Add name:="TestName", RefersTo:=aiArray

End Sub

Sub NameToArray()

Dim vArray As Variant

vArray = [TestName]

MsgBox vArray(200, 3)

End Sub

注意:通过赋值包含数组的名称给变量而创建的数组下标总是基于1,即使在模块的声明区有Option Base 0语句。

7 隐藏名字:设置其Visible属性为False,将隐藏该名称。

Names.Add Name:=”StoreNumber”, RefersTo:=v, Visible:=False

Names(“StoreNumber”).Visible = False

8 处理命名的单元格区域:Range(”Input”) ‘Input为单元格区域名称 9 搜索名称:判断工作薄中是否存在某个名称;

判断选中的单元格是否被某个名称引用;

判断选中的单元格区域是否被某个名称引用;

判断选中的单元格区域中有哪些单元格或单元格区域被某些名称引用

第六章:数据列表

1 结构化数据:在应用Excel的列表管理工具之前,必须以非常明确的方式配置数据。必须像数据库表一样结构化数据,每一列的顶部带有标题作为字段名称,并且数据本身必须由单行信息组成,与数据库记录等同。包含字段名称的顶部行称为标题记录。 2 排序单元格区域

3 创建表

ActiveSheet.ListObjects.Add(xlSrcRange, Range(“$B$3:$D$9”), , xlYes).Name = _ “Table1” 4 排序表

5 自动筛选

第七章:数据透视表

第八章:图表

第九章:事件过程

本章主要介绍工作表事件、图表工作表事件、工作薄事件以及相关问题。

注意:事件过程总是与特定的对象相关并包含在与该对象相关的类模块中,例如ThisWorkbook模块、工作表模块或用户窗体模块。不要试图在标准模块中放置事件过程。 1 工作表事件

Private Sub Worksheet_Activate()

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) Private Sub Worksheet_Calculate()

Private Sub Worksheet_Change(ByVal Target As Range)

Private Sub Worksheet_Deactivate()

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)

Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

注意:

A Worksheet_SlectionChange(ByVal Target As Range)事件是工作表的默认事件,即在下拉列

表中选择WorkSheet时,会自动生成下面的代码:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

End Sub

B 事件处理函数的大多数参数必须用ByVal关键字声明,以防代码通过给参数赋新值并传回而改变引用的对象或项目。

C 一些事件过程在发生相关的事件之前执行并且有一个通过引用传递的Cancel参数,可以对Cancel参数赋值True取消相关的事件。例如,通过取消Worksheet_BeforeRightClick事件,阻止用户访问工作表的快捷菜单:

Private Sub Worksheet_BeforeRightClick( ByVal Target As Range, Cancel As boolean)

Cancel = True

End Sub

启用事件

下面的Change事件过程通过关闭事件处理,从而确保在改变工作表时不会导致连锁反应。但在该过程结束前再次打开事件处理时很重要的:

Private Sub Worksheet_Change( ByVal Target As Range )

Application.EnableEvents = False

Range(“A1”).Value = 100

Application.EnableEvents = True

End Sub

工作表计算

无论何时重新计算工作表,都会发生Worksheet_Calculate事件。在工作表中,当输入新数据到公式引用的单元格中时,通常触发该事件。

2 工作薄事件

某些工作薄事件过程和工作表事件过程相同。其差异是当在工作表中创建这些事件过程(例如Change事件过程)时,仅应用于该工作表。当创建工作薄事件过程(例如SheetChange事件过程)时,应用于工作薄中的所有工作表。

A.最常用的工作薄事件过程是Open事件过程,在打开工作薄时初始化该工作薄。

B.同样,当关闭工作薄时Workbook_BeforeClose事件过程用于整理,如恢复屏幕和选项设置。也可以设置Cancel为True,阻止工作薄的关闭操作。

Example:

关闭工作薄时,如果希望保存所有改变但不出现提示,可在BeforeClose事件过程中保存该工作薄。

Private Sub Workbook_BeforeClose(Cancel as Boolean)

If Not ThisWorkbook.Saved Then

ThisWorkbook.Save

End If

End Sub

关闭工作薄是,如果希望放弃对该工作薄的任何修改而且不出现提示,则可在BeforeClose事件过程中将该工作薄的Saved属性设置为True

Private Sub Workbook BeforeClose(Cancel as Boolean)

ThisWorkbook.Saved = True

End Sub

第十章:添加控件

第二十章:使用ADO访问数据

1 结构化查询语言简介

INSERT——(增)向数据源中添加新的记录

DELETE——(删)从数据源中删除记录

UPDATE——(改)修改数据源中现有的记录

SELECT——(查)从数据源中检索数据

2 ADO概览

ADO与数据源之间传递途径

ADO<->OLEDB Provider<->Data Source

ADO<->OLEDB Provider<->ODBC<->Data Source

ADO对象模型总述

Connection Object ( Errors Collection; Properties Collection );

Command Object ( Parameters Collection; Properties Collection );

Recordset Object ( Fields Collection; Properties Collection );

Record Object ( Fields Collection );

Stream Object ( );

相关推荐