精华内容
下载资源
问答
  • 变量的作用域指的变量的有效范围。为了能正确地使用变量的值,应当明确可以...局部变量过程级变量只有在声明它们的过程中才能被识别,它们又称为局部变量。用Dim或者Static关键字来声明它们,两者的区别在于:在整...

    变量的作用域指的是变量的有效范围。为了能正确地使用变量的值,应当明确可以在程序的什么地方访问该变量。VB中变量可以分为3类:局部(Local)变量、模块(Module)变量及全局(Public)变量,其中模块变量包括窗体模块变量和标准模块变量。各变量位于不同的层次。

    局部变量

    过程级变量只有在声明它们的过程中才能被识别,它们又称为局部变量。

    用Dim或者Static关键字来声明它们,两者的区别在于:在整个应用程序运行时,用Static声明的局部变量中的值一直存在,而用Dim声明的变量只在过程执行期间才存在。

    对任何临时计算来说,局部变量是最佳选择。例如,可以建立十来个不同的过程,每个过程都包含称作intTemp的变量(同一个变量名在不同的过程中意义可能不同)。只要每个intTemp都声明为局部变量,那么每个过程只识别它自己的intTemp版本。任何一个过程都能够改变它自己的局部的intTemp变量的值,而不会影响别的过程中的intTemp变量。

    模块变量

    按照缺省规定,模块级变量对该模块的所有过程都可用,但对其它模块的代码不可用。可在模块顶部的声明段用Private或Dim关键字声明模块级变量,从而建立模块级变量。例如:

    Private intTemp As Integer

    在模块级,Private和Dim之间没有什么区别,但Private更好些,因为很容易把它和Public区别开来,使代码更容易理解。

    全局变量

    为了使模块级的变量在其它模块中也有效,用Public关键字声明变量。公用变量中的值可用于应用程序的所有过程。和所有模块级变量一样,也在模块顶部的声明段来声明公用变量。例如

    Public intTemp As Integer

    注意:不能在过程中声明公用变量,只能在模块的声明段中声明公用变量。

    总结以上可知:声明语句有如下四种格式,这四种语句创建了不同特性的变量,下面来作详细的介绍:

    (I)Dim语句,其格式为:

    Dim<变量名>[As<数据类型>]

    程序运行时,上述声明在内存中为变量分配空间,并使Visual Basic了解随后要处理数据的数据类型。

    Dim语句用于在标准模块(Module)、窗体模块(Form)或过程(Procedure)中定义变量或数组

    用Dim语句在窗体的过程中声明的变量称为局部变量,其作用域仅局限在本过程内部,过程一旦执行完毕,其值也就消失了。

    例如

    Dim Number As Integer'声明Number为Integer(整型)变量。

    Dim I As Integer,j As Integer,k As Integer'同时声明为整型变量。

    Dim AnyValue,MyValue'AnyValue和MyValue按缺省情况被声明为Variant类型,同时值被设为Empty(空)。

    Dim AnotherVar, Choice As Boolean, BirthDate As Date'在一行中声明多种类型变量,AnotherVar为Variant类型,因为它的类型被省略了,Choice为布尔型变量,BirthDate为日期型变量。

    (2)Private语句.其格式为:

    Private<变量名>[As<数据类型>]

    如果要在一个窗体模块的所有过程中共享同一个变量,则应在这个窗体模块的声明段用Private语句进行声明.这种变量称为模块级变量,其作用域为整个窗体模块。这就好比是您家里的电话号码,它在您所在的城市是通用的,但出了这个范围就不能单独使用了。

    (3)Public语句,其格式为:

    Public<变量名>[As<数据类型>

    ]

    用来在标准模块中定义全局变量或数组。如果在标准模块的声明段中用Public关键字来声明模块级变量,那么这个变量的作用域是整个工程,即它会在整个工程的所有模块中有效,这种变量称为全局变量,也称公用变量。这就好比是加了邮政区号的电话号码,在全国范围内通用。

    (4)static语句.其格式为:

    static<变量名>[As<数据类型>·

    局部变量在过程执行结束后其值不能被保留下来,在每一次过程重新执行时,变量会被重新初始化。如果希望在该过程结束之后,还能继续保持过程中局部变量的值,就应该用static关键字将这个变量声明为静态变量。这样,即使过程结束,该静态变量的值也仍然保留着。

    例如我们可以为一个窗体编写下面这样一程序,可以对用户在窗体上单击的次数计数并用显示出来。

    Private Sub Form_click()

    Static

    I As IntegerI = I + 1Label1.Caption = IEnd Sub

    再如:

    Private Sub Command1_Click()

    Static IntCount As IntegerIntCount = IntCount + 1Select Case IntCountCase 1Command1.Caption = "春眠不觉晓"Case 2Command1.Caption = "处处闻啼鸟"Case 3Command1.Caption = "夜来风雨声"Case ElseCommand1.Caption = "花落知多少"IntCount = 0End Select

    End Sub

    将Static换成Dim,运行一下,连续单击窗体,两者结果的不同显而易见。

    注意:就像在过程中不能使用Public和Private关键字一样,在模块的声明段中不能使用static关键字,会报错。

    定义完变量,初值的问题:

    整数:0

    浮点数:0.0

    字符串:""

    Variant:Empty(保留字,关键字)不同与null,0,Nothing

    判断它有没有赋值,就看它的值是不是empty

    展开全文
  • VB中sub和private是什么意思 Private Sub cmdFind_Click()说明发生了按钮的点击事件。 Private Sub是一个过程,并且是模块的。过程没有返回值public是公有,类中的方法或者变量可供其他任何类使用...

    Private Sub cmdFind_Click() 
    说明发生了按钮的点击事件。   Private Sub是一个过程,并且是模块级的。过程没有返回值public是公有,类中的方法或者变量可供其他任何类使用 
    private是私有,类中的方法或者变量不被任何类用,不被子类继承 
    protected是保护,类中的方法或者变量可被子类和同一包下的类使用

    私有函数过程,外部不能直接使用的!Sub 是过程 Private是私有函数过程 外部不能直接使用的

    Sub 语句 
    描述 
    声明 Sub 过程的名称、参数以及构成其主体的代码。 

    语法 
    [Public | Private] Sub name [(arglist)] 
    [statements] 
    [Exit Sub] 
    [statements] 
    End Sub 


    Sub 语句的语法包含以下部分 

    部分 描述 
    Public 表示 Sub 过程可被所有 Script 中的所有其他过程访问。 
    Private 表示 Sub 过程只可被声明该过程的 Script 中的其他过程访问。 
    Name Sub 的名称,遵循标准变量命名约定。 
    Arglist 代表在调用时要传递给 Sub 过程的参数的变量列表。用逗号隔开多个变量。 
    Statements 在 Sub 过程主体内所执行的任何语句组。 


    arglist 参数包含下列语法和部分:[ByVal | ByVal] varname[( )] 
    部分 描述 
    ByVal 表示该参数按值传递。 
    ByRef 表示该参数按引用传递。 
    Varname 代表参数的变量名称,遵循标准变量命名约定。 

    说明 
    如没有显式地指定使用 Public 或 Private,则 Sub 过程默认为公用,即它们对于 Script 中的所有其他过程都是可见的。Sub 过程中局部变量的值在调用过程中不被保留。 

    所有可执行代码必须包含于过程中。不能在另一个 Sub 或 Function 过程中定义一个 Sub 过程。 

    使用 Exit Sub 语句可以立即从 Sub 过程中退出。程序继续执行调用 Sub 过程的语句之后的语句。可以在 Sub 过程中任意位置出现任意个 Exit Sub 语句。 

    与 Function 过程相似之处是:Sub 过程是一个可以获取参数,执行一系列语句以及可改变其参数的值的独立过程。而与 Function 过程不同之处是:Function 过程可以返回值,而 Sub 过程不能用于表达式中。 

    可以使用过程名并跟随相应的参数列表来调用 Sub 过程。关于如何调用 Sub 过程的详细说明信息,请参阅 Call 语句。 

    小心 Sub 过程可以是递归的,即该过程可以调用自己来完成某个给定的任务。但是递归可能会导致堆栈溢出。 

    在 Sub 过程中使用的变量分为两类:一类是在过程内显式声明的,另一类则不是。在过程内显式声明的变量(使用 Dim 或等效方法)总是局部变量。对于那些没有在过程中显式声明的变量也是局部的,除非在该过程外更高级别的位置显式地声明它们。 

    小心 过程可以使用没有在过程内显式声明的变量,但只要有任何 script 级定义的名称与之同名,就会产生名称冲突。如果过程中引用的未声明的变量与其他的过程、常数或变量的名称相同,则会认为过程引用的是Script 级的名称。显式声明变量可以避免这类冲突,使用 Option Explicit 语句可强制显式声明变量。 


    Visual Basic 语言概念 

    Sub 过程 
    Sub 过程是包含在 Sub 语句和 End Sub 语句中的一系列 Visual Basic 语句。每次调用过程时都执行过程中的语句,从 Sub 语句后的第一个可执行语句开始,到遇到的第一个 End Sub、Exit Sub 或 Return 语句结束。 

    Sub 过程执行操作但并不返回值。它能够带参数,如呼叫代码传递给它的常数、变量或表达式。 

    声明 Sub 过程的语法如下所示: 

    [accessibility] Sub subname[(argumentlist)] 
    ' Statements of the Sub procedure go here. 
    End Sub 
    可访问性可以是 Public、Protected、Friend、Protected Friend 或 Private。 

    可以在模块、类和结构中定义 Sub 过程。默认情况下它们是 Public,这意味着可以从应用程序中的任意位置调用它们。 

    参数声明 
    声明过程的每个参数与声明变量的方法一样,都是指定参数名和数据类型。也可以指定传递机制,以及参数是否可选。 

    参数列表中每个参数的语法如下所示: 

    [Optional] [ByVal|ByRef] [ParamArray] argumentname As datatype 
    如果参数是可选的,则还必须在其声明中提供默认值,如下所示: 

    Optional [ByVal|ByRef] argumentname As datatype = defaultvalue 
    调用语法 
    可以使用独立的调用语句来显式调用 Sub 过程。不能在表达式中使用其名称来调用它。调用语句必须提供所有非可选参数的值,并且必须用括号将参数列表括起来。如果未提供任何参数,则也可以选择省略括号。Call 关键字的使用也是可选的。 

    调用 Sub 过程的语法如下所示: 

    [Call] subname[(argumentlist)] 
    下面的 Sub 过程通知计算机操作员应用程序将要执行哪个任务,并且还显示一个时间戳。应用程序不是在每个任务的开头重复此代码,而仅是从不同的位置调用 TellOperator。每次调用都会传递 Task 参数中的字符串以标识开始执行的任务。 

    Sub TellOperator(ByVal Task As String) 
    Dim Stamp As Date ' Stamp is local to TellOperator. 
    Stamp = TimeOfDay() ' Get current time for time stamp. 
    ' Use MessageBox class of System.Windows.Forms namespace. 
    MessageBox.Show("Starting " & Task & " at " & CStr(Stamp)) 
    End Sub 
    典型的 TellOperator 调用如下所示: 

    Call TellOperator("file update") 
    请参见 
    过程 | 事件处理过程 | Function 过程 | Property 过程 | 过程参数 | Sub 语句

    posted on 2012-02-08 17:05 Jack.leung 阅读(...) 评论(...) 编辑 收藏

    转载于:https://www.cnblogs.com/jack-liang/archive/2012/02/08/2342966.html

    展开全文
  • 电视上我们经常可以见到滚动字幕,现在我们在VB中来实现这种效果。设计过程:1,新建"标准EXE"工程2,...以上代码在窗体中定义了一个模块级变量,用于存放Lable1Left属性值初始值,它可以被窗体所有过程存...

    电视上我们经常可以见到滚动字幕,现在我们在VB中来实现这种效果。

    设计过程:

    1,新建"标准EXE"工程

    2,建立下图所示的窗体,自行设置各控件属性

    b54c9a87a332e6febc96ac375ebeadb2.png

    在代码窗口的"控件选择下拉列表框"中选择"通用",在"事件下拉列表框"中选择"声明"事件,并在代码窗口中输入下列代码:

    Dim oLeft

    如下图所示:

    e090ae84fff5a29d5f481666ba117487.png
    7bd4408bb2b9a45f69b4902603f0533e.png

    以上的代码在窗体中定义了一个模块级变量,用于存放Lable1的Left属性值的初始值,它可以被窗体的所有过程存取。

    3,代码功能实现

    ( 1 ),Form的Load事件

    1. Private Sub Form_Load()

    2. oLeft = Label1.Left

    3. End Sub

    ( 2 ),Command1

    1. Private Sub Command1_Click()

    2. Timer1.Enabled = True

    3. End Sub

    ( 3 ),Command2

    1. Private Sub Command2_Click()

    2. Timer1.Enabled = False

    3. End Sub

    ( 4 ),Timer1

    1. Private Sub Timer1_Timer()

    2. Label1.Left = Label1.Left - 20

    3. If (Label1.Left + Label1.Width < 0) Then

    4. Label1.Left = oLeft

    5. End If

    6. End Sub

    该段代码作用:

    当Lable1移动时,其位置超出窗体使其回到原来位置,从而实现文字的滚动。

    4,运行代码,程序界面如下图所示

    05b1024fb52cd1c828a1a7f32d232d25.png
    展开全文
  • VB.NET 入门经典 (第三版)

    热门讨论 2009-07-29 16:56:26
    在介绍完创建应用程序基础知识后(如创建窗口和对话框,如何用代码处理突发事件,什么是面向对象程序设计,以及如何在应用程序使用它等)。 目录: 第1章 初识Visual Basic .NET 1 1.1 Windows和DOS编程 1 1.2...
  • Windows CE 6.0嵌入式高级编程(中文版)

    热门讨论 2011-09-13 18:14:03
    7.1 什么是启动加载程序 7.1.1 BIOS加载程序-x86 BIOS加载程序 7.1.2 Eboot Loader 7.1.3 Loadcepc 7.1.4 Romboot Loader 7.1.5 Sboot Loader 7.2 x86设备BIOS加载程序 7.2.1 x86设备启动过程 7.2.2 BIOS Loader...
  • 9.12 vb中的lambda表达式 387 9.13 小结 389 第10章 ado.net和linq 391 10.1 ado.net的体系结构 392 10.2 ado.net的基本功能 393 10.2.1 ado.net的常见任务 393 10.2.2 ado.net的基本名称空间和类...
  • 9.12 vb中的lambda表达式 387 9.13 小结 389 第10章 ado.net和linq 391 10.1 ado.net的体系结构 392 10.2 ado.net的基本功能 393 10.2.1 ado.net的常见任务 393 10.2.2 ado.net的基本名称空间和类 398 ...
  • EXCEL编程VBA高级教程

    2015-04-16 11:40:55
    1.2EXCEL环境基于应用程序自动化优点................................................................................1 1.3录制简单宏....................................................................
  • C#微软培训教材(高清PDF)

    千次下载 热门讨论 2009-07-30 08:51:17
    C#--微软.NET第一语言 本书着重介绍语言本身,比较少涉及应用,不错入门书,从头讲起,不怕不明白。 <<page 1>> page begin==================== 目 ...1.1.1 什么是.NET 2000 年 6 月 ...
  • C#微软培训资料

    2014-01-22 14:10:17
    <<page 1>> page begin==================== 目 ...1.1.1 什么是.NET 2000 年 6 月 22 日 不论对 Microsoft 还是对整个 IT 业界都将成为值得纪念一天 这一天 微软公司正式推出了其下一代...
  • 而在应用程序开发过程中的编译阶段由程序开发人员控制运算操作顺序且由编译程序完成命令表达式计算的过程称为静态解释执行。 有效性的要求还必须在程序执行中对按照某种运算规则解释的源输入表达式数据流的正确性给...
  • 第1章 SQL语言概述 1.1 认识SQL语言 1.1.1 什么是SQL语言 1.1.2 SQL历史与发展 1.1.3 SQL功能和优点 1.2 认识数据库 1.2.1 什么是数据库 1.2.2 数据库系统结构 1.2.3 数据库系统工作流程 1.2.4 常见SQL...
  • ASP.NET精品课程+源代码

    千次下载 热门讨论 2009-01-05 20:15:51
    本课程通过一个ASP.NET网站构建向学生阐释ASP.NET是什么,怎么来开发。 涵盖了代码规范、运行模型、服务控件、验证控件、数据绑定技术、ADO.NET技术、数据库技术、文件操作等内容。 所列出内容均是ASP.NET开发...
  • 4.C#中的委托是什么?事件是不是一种委托? 答 : 委托可以把一个方法作为参数代入另一个方法。 委托可以理解为指向一个函数的引用。 是,是一种特殊的委托 5.override与重载的区别 答 : override 与重载的...
  • asp.net知识库

    2015-06-18 08:45:45
    利用反射来查看对象中的私有变量 关于反射中创建类型实例的两种方法 ASP.Net应用程序的多进程模型 NET委托:一个C#睡前故事 [推荐] - [原创] Microsoft .NET策略及框架概述 卸载Class? Web Form 窗体 如何实现web...
  • 在一小时内学会 C#(txt版本)

    热门讨论 2009-08-19 18:09:37
    C# 中的结构属于轻量快速数据类型。当需要大型数据类型时,你应该创建类。 例子: 复制内容到剪贴板 代码: struct Date { int day; int month; int year; } class Date { int day; int month; int year; ...
  • 1.1.1 什么是单片机 1.1.2 单片机标号信息及封装类型 1.1.3 单片机能做什么 1.1.4 如何开始学习单片机 1.2 51单片机外部引脚介绍 1.3 电平特性 1.4 二进制与十六进制 1.4.1 二进制 1.4.2 十六进制 1.5 二进制...
  • 编程新手真言......

    2009-04-02 20:25:15
    什么是语言和语言外要学习(数据结构与代码结构) 15 什么是语言要学习 17 编程学习方法 18 计算机学生专业课程本质讲解 18 用C++开发要学到什么程度 20 本书目录安排 21 第二部分 基础:导论 25 第1章 系统 ...
  • SQLServer2008查询性能优化 2/2

    热门讨论 2012-03-02 16:26:55
    11.6.5 避免在批查询中的局部变量 306 11.6.6 小心地命名存储过程 309 11.7 减少网络传输数量 311 11.7.1 同时执行多个查询 311 11.7.2 使用SET NOCOUNT 311 11.8 降低事务开销 312 11.8.1 减少日志开销 312 ...

空空如也

空空如也

1
收藏数 20
精华内容 8
关键字:

vb中的过程级变量是什么