在这个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 xlShiftToLeft:-4159 xlShiftToRight:-4161 xlShiftUp:-4162