vb中 := 是什么意思呢? (请看一小段代码)

时间:2022-02-28 15:49:32

Handler:
   Select Case Err.Number   ' Analyze error code and load message.
      Case ErrInvalidFileName, ErrBadFileName
         strMsg = "Your file specification was "
         strMsg = strMsg & "invalid; try another."
      Case mnErrDriveDoorOpen
         strMsg = "Close the disk drive door and "
         strMsg = strMsg & "try again."
      Case mnErrDeviceUnavailable
         strMsg = "The drive you specified was not "
         strMsg = strMsg & "found. Try again."
      Case Else
         Dim intErrNum As Integer
         intErrNum = Err.Number
         Err.Clear            ' Clear the Err object.
         Err.Raise Number:=intErrNum    ' Regenerate the error.
   End Select
   Resume StartHere   ' This jumps back to StartHere label so the user can try another file name.
End Function

比如上面语句中的:
         Err.Clear            ' Clear the Err object.
         Err.Raise Number:=intErrNum    ' Regenerate the error.
我不知 := 是什么意思,好象这个符号在delphi中是赋值的意思,可是vb中应该没有这个符号呀,这里出现又是什么意思呢?

25 个解决方案

#1


没见过,我想可能是笔误

#2


这个写错了吧,是不是从别的代码转换来
但漏了这句啊

#3


这种方法可以直接对指定的可选的参数赋值,看一看下面的例子:
Private Sub Command1_Click()
    Call test(b:=34)
    Call test(34)
End Sub
Private Sub test(Optional ByVal a As Integer, Optional ByVal b As Integer)
    Debug.Print a, b
End Sub

#4


看一下CSDN
CSDN:
通过生成错误测试错误处理


当测试应用程序,或想要处理等价于 Visual Basic 运行时错误的具体条件时,对错误进行模拟是非常有用的。例如,用一个定义在外部应用程序中的对象编写模块并希望应用程序的其余部分把该对象返回的错误作为实际的 Visual Basic 错误来处理。

为测试所有可能发生的错误,可能需要在代码中生成一些错误。在代码中可用 Raise 方法生成错误:

object .Raise argumentlist

通常,object 参数是 Err,它是 Visual Basic 定义的全局错误对象。argumentlist 参数是命名的参数列表,这些参数可通过方法传递。在 Errors.vbp 示例应用程序中,VerifyFile 过程在错误处理程序中使用以下代码重新生成当前错误:

Err.Raise Number:=intErrNum

在这种情况下,intErrNum 是一变量,包含触发错误处理程序的错误号。当代码到达 Resume 语句时,要调用 Err 对象的 Clear 方法。在调用堆栈上,为了将代码后退传递到上一过程,有必要重新生成错误。

通过为错误提供错误代码也可以模拟任何 Visual Basic 的运行时错误。

Err.Raise Number:=71      ' 模拟“磁盘未准备”错误。

#5


在操作EXCEL对象时,经常用到这样的赋值方法.

#6


对于带可选参数的函数调用,可以用顺序指定参数、也可以用命名指定参数。
3楼的调用例子不正确,(只指定 b 参数的)等价调用方式如下:
Call test(, 34)
test(b:=34)

#7


少写一个 Call:
Call test(, 34)
Call test(b:=34)

#8


这种用法叫做"命名参数".

用处是,对于参数传入时的书写顺序可以*定义:

引用MSDN:
命名参数

一参数,在对象库中预先定义了其名称。对每个参数,不必拘泥于语法所规定的特定顺序来提供值,而是只需按任何顺序用命名参数分配值。例如,假设一方法接受了三个参数:

DoSomeThing namedarg1, namedarg2, namedarg3

在对命名参数赋值时,可使用以下语句:

DoSomeThing namedarg3 := 4, namedarg2 := 5, namedarg1 := 20

注意,命名的参数不必按语法中安排的正规顺序出现。

#9


同意#8楼,学习了

#10


":="用于函数或过程调用,用来指定命名参数。

比如,你问的这个句子

Err.Raise Number:=71    


err是对象名,raise是它的方法,也就是,raise是一个过程。这个raise方法它有多个可选参数。它的语法是:

object.Raise number, source, description, helpfile, helpcontext

其中,除了number这个参数,其它参数都是可选的。

err.raise number:=71

表示用raise这个方法,把那个命名为number的参数的值设为71,其它参数忽略。

#11


其实主要优点不是为了打乱参数次序,而可以明确指定参数。
比如一个函数有20个可选参数,如果只需要指定第 17 个参数,下面的两种等价写法哪种更适合人阅读很明显
Call f(, , , , , , , , , , , , , , , , 34)
Call f(v17:=34)

#12


MSDN--------
对许多内建函数、语句和方法,Visual Basic 提供了命名参数方法来快捷传递参数值。对命名参数,通过给命名参数赋值,就可按任意次序提供任意多参数。为此,键入命名参数,其后为冒号、等号和值 (MyArgument := "SomeValue") ,可以按任意次序安排这些赋值,它们之间用逗号分开。注意,下例中的参数顺序和所要参数的顺序相反:

Function ListText (strName As String, Optional strAddress As String)
   List1.AddItem strName
   List2.AddItem strAddress
End Sub

Private Sub Command1_Click ()
   ListText strAddress:=”12345”, strName:="Your Name"
End Sub

如果过程有若干不必总要指定的可选参数,则上述内容更为有用。

#13


路过,学习了

#14


引用 11 楼 tiger_zhao 的回复:
其实主要优点不是为了打乱参数次序,而可以明确指定参数。
比如一个函数有20个可选参数,如果只需要指定第 17 个参数,下面的两种等价写法哪种更适合人阅读很明显
VB codeCall f(, , , , , , , , , , , , , , , ,34)Call f(v17:=34)


对。另外一个好处是,用命名参数好像也能略略提高性能。

#15


学习了 

#16


该回复于2012-05-05 09:30:50被版主删除

#17


引用 7 楼 tiger_zhao 的回复:
少写一个 Call:
VB codeCall test(,34)Call test(b:=34)


UP

#18


引用 14 楼 slowgrace 的回复:
对。另外一个好处是,用命名参数好像也能略略提高性能。

可能调试信息会不一样,或者编译时的语法分析不一样。
执行同一个函数,参数都是通过压栈传递的,两种方式不会有区别。

#19


vb中 := 是什么意思呢? (请看一小段代码)还有这种方法,学习了...

#20


Study!

#21


受教

#22


爬过.................再一次....

#23


不会,学习...

#24


看来不知不能乱发言啊,学习了

#25


爬过.................再再一次....

#1


没见过,我想可能是笔误

#2


这个写错了吧,是不是从别的代码转换来
但漏了这句啊

#3


这种方法可以直接对指定的可选的参数赋值,看一看下面的例子:
Private Sub Command1_Click()
    Call test(b:=34)
    Call test(34)
End Sub
Private Sub test(Optional ByVal a As Integer, Optional ByVal b As Integer)
    Debug.Print a, b
End Sub

#4


看一下CSDN
CSDN:
通过生成错误测试错误处理


当测试应用程序,或想要处理等价于 Visual Basic 运行时错误的具体条件时,对错误进行模拟是非常有用的。例如,用一个定义在外部应用程序中的对象编写模块并希望应用程序的其余部分把该对象返回的错误作为实际的 Visual Basic 错误来处理。

为测试所有可能发生的错误,可能需要在代码中生成一些错误。在代码中可用 Raise 方法生成错误:

object .Raise argumentlist

通常,object 参数是 Err,它是 Visual Basic 定义的全局错误对象。argumentlist 参数是命名的参数列表,这些参数可通过方法传递。在 Errors.vbp 示例应用程序中,VerifyFile 过程在错误处理程序中使用以下代码重新生成当前错误:

Err.Raise Number:=intErrNum

在这种情况下,intErrNum 是一变量,包含触发错误处理程序的错误号。当代码到达 Resume 语句时,要调用 Err 对象的 Clear 方法。在调用堆栈上,为了将代码后退传递到上一过程,有必要重新生成错误。

通过为错误提供错误代码也可以模拟任何 Visual Basic 的运行时错误。

Err.Raise Number:=71      ' 模拟“磁盘未准备”错误。

#5


在操作EXCEL对象时,经常用到这样的赋值方法.

#6


对于带可选参数的函数调用,可以用顺序指定参数、也可以用命名指定参数。
3楼的调用例子不正确,(只指定 b 参数的)等价调用方式如下:
Call test(, 34)
test(b:=34)

#7


少写一个 Call:
Call test(, 34)
Call test(b:=34)

#8


这种用法叫做"命名参数".

用处是,对于参数传入时的书写顺序可以*定义:

引用MSDN:
命名参数

一参数,在对象库中预先定义了其名称。对每个参数,不必拘泥于语法所规定的特定顺序来提供值,而是只需按任何顺序用命名参数分配值。例如,假设一方法接受了三个参数:

DoSomeThing namedarg1, namedarg2, namedarg3

在对命名参数赋值时,可使用以下语句:

DoSomeThing namedarg3 := 4, namedarg2 := 5, namedarg1 := 20

注意,命名的参数不必按语法中安排的正规顺序出现。

#9


同意#8楼,学习了

#10


":="用于函数或过程调用,用来指定命名参数。

比如,你问的这个句子

Err.Raise Number:=71    


err是对象名,raise是它的方法,也就是,raise是一个过程。这个raise方法它有多个可选参数。它的语法是:

object.Raise number, source, description, helpfile, helpcontext

其中,除了number这个参数,其它参数都是可选的。

err.raise number:=71

表示用raise这个方法,把那个命名为number的参数的值设为71,其它参数忽略。

#11


其实主要优点不是为了打乱参数次序,而可以明确指定参数。
比如一个函数有20个可选参数,如果只需要指定第 17 个参数,下面的两种等价写法哪种更适合人阅读很明显
Call f(, , , , , , , , , , , , , , , , 34)
Call f(v17:=34)

#12


MSDN--------
对许多内建函数、语句和方法,Visual Basic 提供了命名参数方法来快捷传递参数值。对命名参数,通过给命名参数赋值,就可按任意次序提供任意多参数。为此,键入命名参数,其后为冒号、等号和值 (MyArgument := "SomeValue") ,可以按任意次序安排这些赋值,它们之间用逗号分开。注意,下例中的参数顺序和所要参数的顺序相反:

Function ListText (strName As String, Optional strAddress As String)
   List1.AddItem strName
   List2.AddItem strAddress
End Sub

Private Sub Command1_Click ()
   ListText strAddress:=”12345”, strName:="Your Name"
End Sub

如果过程有若干不必总要指定的可选参数,则上述内容更为有用。

#13


路过,学习了

#14


引用 11 楼 tiger_zhao 的回复:
其实主要优点不是为了打乱参数次序,而可以明确指定参数。
比如一个函数有20个可选参数,如果只需要指定第 17 个参数,下面的两种等价写法哪种更适合人阅读很明显
VB codeCall f(, , , , , , , , , , , , , , , ,34)Call f(v17:=34)


对。另外一个好处是,用命名参数好像也能略略提高性能。

#15


学习了 

#16


该回复于2012-05-05 09:30:50被版主删除

#17


引用 7 楼 tiger_zhao 的回复:
少写一个 Call:
VB codeCall test(,34)Call test(b:=34)


UP

#18


引用 14 楼 slowgrace 的回复:
对。另外一个好处是,用命名参数好像也能略略提高性能。

可能调试信息会不一样,或者编译时的语法分析不一样。
执行同一个函数,参数都是通过压栈传递的,两种方式不会有区别。

#19


vb中 := 是什么意思呢? (请看一小段代码)还有这种方法,学习了...

#20


Study!

#21


受教

#22


爬过.................再一次....

#23


不会,学习...

#24


看来不知不能乱发言啊,学习了

#25


爬过.................再再一次....