Static nCk As Integer这样写不对么?

解决方案 »

  1.   

    Static 语句在过程级别中使用,用于声明变量并分配存储空间。在整个代码运行期间都能保留使用 Static 语句声明的变量的值。语法Static varname[([subscripts])] [As [New] type] [, varname[([subscripts])] [As [New] type]] . . .Static 语句的语法包含下面部分:部分 描述
    varname 必需的。变量的名称;遵循标准变量命名约定。
    subscripts 可选的。数组变量的维数;最多可以定义 60 维的多维数组。subscripts 参数使用下面的语法:
    [lower To] upper [,[lower To] upper] . . .
    如果不显式指定 lower,则数组的下界由 Option Base 语句控制。如果没有 Option Base 语句则下界为 0。
    New 可选的。用它可以隐式地创建对象的关键字。如果使用 New 声明对象变量,则在第一次引用该变量时将新建该对象的实例,因此不必使用 Set 语句来对该对象引用赋值。New 关键字不能用来声明任何内部数据类型的变量,也不能用来声明从属对象的实例。
    type 可选的。变量的数据类型;可以是 Byte、Boolean、Integer、Long、Currency、Single、Double、Decimal(目前尚不支持)、Date、String(对变长的字符串)、String * length(对定长的字符串)、Object、Variant、用户定义类型或对象类型。所声明的每个变量都要有一个单独的 As type 子句。
    说明模块的代码开始运行后,使用 Static 语句声明的变量会一直保持其值,直至该模块复位或重新启动。可以在非静态的过程中使用 Static 语句显式声明只在该过程内可见,但具有与包含该过程定义的模块相同生命期的变量。可以在过程中使用 Static 语句来声明在过程调用之间仍能保持其值的变量的数据类型。例如,下面的语句声明了一个定长的整型数组:Static EmployeeNumber(200) As Integer下面的语句为 worksheet 的新实例声明了一个变量:Static X As New Worksheet如果在定义对象变量时没有使用 New 关键字,则在使用该变量之前,必须使用 Set 语句将一个已有的对象赋给这个引用对象的变量。在被赋值之前,所声明的这个对象变量有一个特定值 Nothing,这个值表示该变量没有指向任何对象的实例。若在声明中使用了 New 关键字,则在第一次引用对象时将新建一个该对象的实例。如果不指定数据类型或对象类型,且在模块中没有使用 Deftype 语句,则按缺省情况,定义该变量为 Variant 类型。注意   Static 语句与 Static 关键字很相似,但是针对不同的效果来使用的。如果使用 Static 关键字(如 Static Sub CountSales ())来声明一个过程,则该过程中的所有局部变量的存储空间都只分配一次,且这些变量的值在整个程序运行期间都存在。对非静态过程而言,该过程每次被调用时都要为其变量分配存储空间,当该过程结束时都要释放其变量的存储空间。Static 语句则用来在非静态的过程中声明特定的变量,以使其在程序运行期间能保持其值。在初始化变量时,数值变量被初始化为 0,变长的字符串被初始化为一个零长度的字符串 (""),而定长的字符串则用 0 填充。Variant 变量被初始化为 Empty。用户自定义类型的变量的每个元素作为各自独立的变量进行初始化。注意   如果在过程中使用 Static 语句,应和其它的声明语句(如 Dim)一样将其放在过程的开始。=======================================
    该示例使用 Static 语句,可以在模块代码运行期间一直保持变量的值。'函数定义。
    Function KeepTotal(Number)
    '只有 Accumulate 变量能在调用过程之间保持其值。
    Static Accumulate
    Accumulate = Accumulate + Number
    KeepTotal = Accumulate
    End Function'Static 函数定义。
    Static Function MyFunction(Arg1, Arg2, Arg3)
    '所有局部变量在函数调用之间都能保持其值。
    Accumulate = Arg1 + Arg2 + Arg3
    Half = Accumulate / 2
    MyFunction = Half
    End Function
      

  2.   

    Static 是一个过程级别的静态定义语句,不能在程序外部声明!如果要定义一个静态的变量,可以参考:
    Private Sub Command1_Click() '在窗体里添加一个按钮控件进行演示
        Static nCk As Integer
        nCk = 1000
        MsgBox nCk
    End Sub如果要定义成一个静态数组,可以参考:
    Private Sub Command1_Click()
        Static nCk(10) As Integer
        For i = 0 To 9
            nCk(i) = i
            MsgBox nCk(i)
        Next
    End Sub如果要定义一个静态的过程,可以参考:
    定义TestStatic是一个静态的过程
    Static Function TestStatic(Number)
    ...
    ...
    ...
    End Function小弟也是VB新手,如有错处,敬请大侠指出,谢谢!