在这个VB6代码中,“Shift:=”是什么意思?

我在VB6应用程序中运行以下行。

mobjParentWrkBk.ExcelWorkBook.Application.Selection.Insert Shift:=xlToRight 

不幸的是,谷歌和其他search引擎不是很有用,因为他们似乎省略:=部分。

什么是C#等价物?

这是可选命名参数的Visual Basic语法。 Insert函数有一个名为Shift的参数,它正在被指定。

就我所知,C#没有可选的命名参数的等价物。 相反,您需要调用Insert方法,为Shift以外的所有参数指定Type.Missing

另请参见以下StackOverflow问题: VB.NET:=运算符

更新(2008-10-29):

C#4.0被设置为引入可选参数和命名参数。 在codebetter.com上看到这个博客条目 。

只是为了澄清约翰·鲁迪的回应。

这个sytax是可选的(小'o'),这意味着你不必使用它。 根据我的经验,大多数VB6编码器不使用语法,而是更喜欢常规的“未命名”参数。

如果您select使用它,则必须命名子过程调用中的所有后续参数。

无论相关参数是否使用VBA关键字Optional (大写'O')声明,所有参数都可以使用命名参数语法。 例如,考虑一下这个(稍微有些微)VBA函数,它有两个参数,一个是必需的,一个是Optional

 Private Function TimesTen( _ ByVal Value As Long, _ Optional ByVal Factor As Long = 10 _ ) As Long TimesTen = Value * Factor End Function 

在VBA中,我可以使用所需参数的命名参数来调用它( Optional参数可以简单地在VBA中省略,不像在C#.NET中, Type.Missing必须用于所有省略的Optional参数):

  MsgBox TimesTen(Value:=9) 

如果我想用“错误的”顺序调用它(为什么?),我可以使用命名参数来实现:

  MsgBox TimesTen(Factor:=11, Value:=9) 

尝试在命名之后使用常规的“未命名”参数调用会导致编译错误:

  MsgBox TimesTen(Value:=9, 11) 

那么为什么VBA编码器使用命名参数,如果VB6编码器很less做,即使他们使用基本相同的语言? 我认为这是因为由MS Office应用程序的macroslogging器生成的VBA往往(总是)生成命名参数,许多VBA编码器以这种方式学习编程。

VB6和VB.net在方法中有可选的参数。 c#可以select做方法重载。

用VB6 / VB.net的方式表示Shift:= xlToRight允许按名称传递特定参数的值。

例如public sub mymethod(可选的a为integer = -1,可选的b为integer = 1)… end sub

我可以用mymethod(b:= 10)来调用这个方法,

对于C#,可能有2种方法

void Shift() { defaultDirection = directionEnum.Left; Shift(defaultDirection); } void Shift(directionEnum direction) { }
void Shift() { defaultDirection = directionEnum.Left; Shift(defaultDirection); } void Shift(directionEnum direction) { } 

还有一件事 虽然你可以通过传递参数来调用方法,但是在调用的时候添加参数的名字使得代码更加可读。
例如DoSomethingWithData(CustomerData:= customer,SortDirection:= Ascending)

希望有所帮助。

这完全是关于Excel以及它如何处理插入。 如果您select一个单元格范围并右键单击插入,您将被问到移动单元格的方向。 这是从Excel帮助:

=======

在范围对象上插入方法

将单元格或一系列单元格插入到工作表或macros表中,并将其他单元格移开以腾出空间。

expression.Insert(Shift,CopyOrigin)

expression式必需。 一个返回Range对象的expression式。

Shift可选变体。 指定移动单元格的方式。 可以是以下XlInsertShiftDirection常量之一:xlShiftToRight或xlShiftDown。 如果省略此参数,Microsoft Excel根据范围的形状决定。

CopyOrigin可选变体。 复制原点。

===========

如果你没有定义常量,你可以使用下面的数字

xlShiftDown:-4121 xlS​​hiftToLeft:-4159 xlShiftToRight:-4161 xlS​​hiftUp:-4162