`

Excel VBA学习笔记-1

 
阅读更多

1.Union的用法:

组合

 

Sub SeveralRows()
    Worksheets("Sheet1").Activate
    Dim myUnion As Range
    Set myUnion = Union(Rows(1), Rows(3), Rows(5))
    myUnion.Font.Bold = True
End Sub 

 

 2.Array函数:

 

Sub FormatSheets()
    Sheets(Array("Sheet2", "Sheet3", "Sheet5")).Select
    Range("A1:H1").Select
    Selection.Borders(xlBottom).LineStyle = xlDouble
End Sub 

 

 3.单元格错误值列表:

 

常量 错误号 单元格错误值
xlErrDiv0 2007 #DIV/0!
xlErrNA 2042 #N/A
xlErrName 2029 #NAME?
xlErrNull 2000 #NULL!
xlErrNum 2036 #NUM!
xlErrRef 2023 #REF!
xlErrValue 2015

#VALUE!

 

4.

由命名冲突所引起的典型错误包括有仿真两可的名称、重复声明、未声明标识符,以及找不到过程。在模块开头加上 Option Explicit 语句,可以强迫在变量被使用前对变量做明确的声明,如此可以避免一些可能的命名冲突以及和标识符有关的错误。

 

5.调用具有多个参数的 Sub 过程

使用 Call 语句所以需要利用括号将参数括起来。

 

Sub Main()
    HouseCalc 99800, 43100
    Call HouseCalc(380950, 49500)  //如果换成  Call HouseCalc 380950,49500, 则报错
End Sub

Sub HouseCalc(price As Single, wage As Single)
    If 2.5 * wage <= 0.8 * price Then
        MsgBox "You cannot afford this house."
    Else
        MsgBox "This house is affordable."
    End If
End Sub

 6.在调用 Function 过程时使用括号

 

Answer3 = MsgBox("Are you happy with your salary?", 4, "Question 3")

 

 

 7.传递命名参数

 

SubFunction 过程中的语句可以利用命名参数来传递值给被调用的过程。可以将命名参数以任何顺串行出。命名参数的组成是由参数名称紧接着冒号(:=)以及等号,然后指定一个值给参数。

 

answer3 = MsgBox(Title:="Question 3", _
Prompt:="Are you happy with your salary?", Buttons:=4)

 

 

8.赋值对象变量给对象

 

使用 Set 语句可以赋值一个对象给对象变量。可以赋值对象表达式或是 Nothing 。例如,下列的对象变量赋值是有效的:

 

Set MyObject = YourObject    ' 赋值对象引用。
Set MyObject = Nothing    ' 中断关联。
 

 

可以同时使用 New 关键字Set 语句来声明对象变量,并赋值一对象给它。例如:

 

Set MyObject = New Object    ' 创建和赋值

 

 设置一个对象变量等于 Nothing,会中断此对象变量与任何特定对象的关联,如此可预防因意外的改变变量而更改对象。在关闭关联对象后,对象变量总是设置为 Nothing,所以可以检测对象变量是否指到有效的对象。例如:

 

If Not MyObject Is Nothing Then
' 变量引用有效的对象。
    . . .
End If

 

 当然,该检测不能绝对的决定用户是否已关闭包含对象变量所引用对象的应用程序。

 

 

9.引用对象的当前实例

 

Me 关键字可用来引用对象的当前实例,而此为代码正在执行的对象。所有与当前对象关联的过程都可以通过 Me 来引用。使用 Me 来传递关于对象的当前实例信息到其它模块中的过程显得特别有用。例如,假设在模块中有以下这些过程:

 

'*********
' 类名:clsPerson
'*********
Option Explicit

Private name As String
Private age As Integer

Public Property Let setName(n As String)
   name = n
End Property

Public Property Let setAge(y As Integer)
   age = y
End Property

Public Property Get getName()
    getName = name
End Property

Public Property Get getAge()
  getAge = age
End Property

Public Sub prints()
   Debug.Print Me.getAge & "," & Me.getName
End Sub

 

 

10.创建递归过程

 

Function Factorial (N)
    If N <= 1 Then    ' 到达递归调用的末尾。
        Factorial = 1    
    Else    ' 如果 N > 0 再调用 Factorial 。
        Factorial = Factorial(N - 1) * N
    End If
End Function

 

 

11.声明数组

 

数组是否从 0 或 1 索引是根据 Option Base 语句的设置。如果 Option Base 没有指定为 1,则数组索引从零开始。

a,固定大小的数组

 

ReDim MyIntegerArray(10) As Integer

 

 b,动态数组

 

Dim sngArray() As Single

 注意 可以在过程中使用 ReDim 语句来做隐含性的数组声明。当使用 ReDim 语句时要小心点,不要拼错数组的名称。否则即使在模块中有包含 Option Explicit 语句,仍然会因此而生成第二个数组。

 

对于过程中的数组范围,可以使用 ReDim 语句去改变它的维数,去定义元素的数目以及每个维数的底层绑定。每当需要时,可以使用 ReDim 语句去更改动态数组。然而当做这个动作时,数组中存在的值会丢失。若要保存数组中原先的值,则可以使用 ReDim Preserve 语句来扩充数组。例如,下列的语句将 varArray 数组扩充了10 个元素,而原本数组中的当前值并没有消失掉。

 

ReDim Preserve varArray(UBound(varArray) + 10)
 

 

  12.传递参数

所有的参数传递给过程都是按地址的,默认是以Byref传递

可以按值的来传递参数,只要在过程的声明中包含 ByVal 关键字,使用按值的方法时会将原来的变量复制一份,当做参数传递过去。改变过程内部的参数时将不会影响到原来的变量。

 

Sub Factorial1(ByVal MyVar As Integer)       ' Function declaration.
    MyVar = 12
End Sub

Sub Factorial2(MyVar As Integer)       ' Function declaration.
    MyVar = 12
End Sub


Sub Factorial3(ByRef MyVar As Integer)       ' Function declaration.
    MyVar = 12
End Sub

Sub test()

    Dim aa As Integer
    aa = 5
    Call Factorial1(aa)
    Debug.Print aa
    
    aa = 5
    Call Factorial2(aa)
    Debug.Print aa
    
    aa = 5
    Call Factorial3(aa)
    Debug.Print aa

End Sub
 

 

 

 

分享到:
评论

相关推荐

    Excel VBA学习笔记

    这篇“Excel VBA学习笔记”涵盖了多个关键知识点,下面将对这些内容进行详细讲解。 一、VBA基础 1. **环境介绍**:VBA开发环境包括VBE(Visual Basic Editor)编辑器,它提供了代码编辑器、项目浏览器、对象浏览器...

    EXCEL VBA ListView+Toolbar 控件学习笔记

    EXCEL VBA ListView+Toolbar 控件学习笔记,加示例和代码

    VBA学习笔记系列----WorkBookworksheetsRange对象[汇编].pdf

    VBA学习笔记系列----WorkBook、Worksheets、Range对象是 Microsoft Excel 中的三个重要对象,它们分别代表 Excel 工作簿、工作表和单元格范围。在本文中,我们将详细介绍这三个对象的属性和方法,以及它们之间的关系...

    Day1-跟着孙兴华学习Excel VBA 第二季

    Day1-跟着孙兴华学习Excel VBA 第二季

    【免费下载】ExcelVBA和WordVBA教程.rar

    通过学习Excel VBA,你可以: 1. **宏录制**:Excel内置的宏录制功能可以帮助初学者快速入门,记录并回放一系列操作,无需深入了解代码。 2. **对象模型**:理解Excel的对象模型是编写高效VBA的关键。主要包括...

    ExcelVBA入门笔记,看了你也可以轻松入门VBA!

    Excel VBA 入门笔记,看了你也可以轻松入门 VBA! Excel VBA 是 Excel 中的一种编程语言,可以帮助用户实现自动化操作、数据分析和报表生成等功能。通过学习 Excel VBA,可以提高工作效率和数据处理能力。 在 ...

    ExcelVBA与WordVBA教程第4季.pdf

    ExcelVBA和WordVBA是Microsoft Office套件中两种强大的自动化工具,它们允许用户通过编程方式来控制和自定义这两个程序的行为。本教程主要聚焦于第4季的内容,深入讲解了对象、集合、属性和方法等核心概念。 首先,...

    excel vba教程查询笔记

    综上所述,Excel VBA教程查询笔记不仅为学习者提供了一个了解和入门VBA的平台,而且通过深入讲解和实践操作,帮助学习者掌握了在日常工作中解决复杂问题的高级技巧。通过本教程,学习者可以提高个人的办公自动化水平...

    excel函数学习笔记

    这份"excel函数学习笔记"包含了个人的学习总结,旨在帮助读者掌握这些功能并提升工作效率。 1. **基础函数理解** - **SUM**: 用于求和。例如,`=SUM(A1:A10)` 将计算A1到A10区域内的所有数字之和。 - **AVERAGE**...

    Excel2007学习笔记

    通过实践和学习《Excel 2007学习笔记.txt》中的内容,你将能够熟练掌握这些技巧,提高工作效率,并在数据分析领域取得显著进步。不断练习和探索,你会发现Excel2007是一个强大而实用的工具,能满足各种业务需求。

    EXCEL VBA教程查询笔记

    本教程查询笔记是专业教师编写的,旨在帮助学习者深入理解和掌握Excel VBA的核心概念和实用技巧。 在Excel VBA中,查询功能是非常重要的一个部分,它使得数据处理和分析变得高效便捷。以下是本教程可能涵盖的一些...

    VBA自己学习笔记

    ### VBA学习笔记关键知识点详解 #### 一、工作簿管理与操作 VBA(Visual Basic for Applications)是Microsoft Office套件中的一种编程语言,特别适用于自动化Excel、Word等应用程序的任务。以下是从“VBA自己学习...

    VBA学习笔记本(二)——两个表格数据匹配_DEMO

    VBA学习笔记本(二)——两个表格数据匹配_DEMO 将excel中两个工作表中,数据进行一键同步的通用方法

    ExcelVBA.rar_Excel VBA_excel access_excel+vba+access_vba access_

    文件列表中只有一份“ExcelVBA.doc”,这可能是一个详细的教程文档,包含了上述所有知识点的详细说明,也可能包括练习和解答,以帮助学习者更好地掌握Excel VBA与Access的整合技巧。 总之,这份资料对于那些希望...

    VBA学习笔记02Excel之VBA编程常用语句300句.doc

    ### VBA学习笔记02Excel之VBA编程常用语句解析 #### 一、定制模块行为 1. **Option Explicit**: - **用途**:强制要求在使用任何变量之前必须先声明它。 - **解释**:此指令用于确保在模块中使用的每个变量都已...

    vba.rar_Excel VBA_VBA 写入excel_excel_vba excel

    标题中的“vba.rar_Excel VBA_VBA 写入excel_excel_vba excel”表明了这个压缩包包含的主要是关于Excel VBA(Visual Basic for Applications)的编程内容,特别是涉及如何利用VBA来操作Excel,比如写入数据到工作表...

    Excel_VBA与数据库(Access)整合笔记.rar

    1. **Excel VBA基础**:VBA是Microsoft Office应用程序中的编程环境,允许用户创建自定义函数、宏和自动化任务。通过VBA,我们可以编写代码来控制Excel的工作簿、工作表、单元格等对象。 2. **数据库基础**:Access...

    Excel_VBA与数据库(Access)整合笔记

    ### Excel_VBA与数据库(Access)整合笔记精要解析 #### 一、创建数据库和数据表的方法 在《Excel_VBA与数据库(Access)整合笔记》中,作者加肥猫详细介绍了通过多种技术手段实现Excel与Access数据库整合的过程。本文...

    Excel VBA与数据库(Access)整合笔记

    本笔记将详细阐述如何使用VBA在Excel中创建并操作Access数据库,涉及的知识点涵盖了DAO(数据访问对象)、ADOX(ActiveX数据对象扩展)、数据库的创建与管理等方面。 首先,我们来了解DAO,它是一种面向对象的编程...

    Excel VBA编写代码操控 OneNote

    在Excel VBA编程中,有时候我们需要处理一些自动化任务,例如从网页或文档中提取文本,尤其是在面对包含大量图像数据的情况。在这种场景下,如果图像中含有文字,传统的文本处理方法可能无法奏效。针对这种情况,...

Global site tag (gtag.js) - Google Analytics