excel - variable - ¿Qué significa "Shift:=" en este código VB6?
seleccionar rango variable vba (4)
Me encontré con la siguiente línea en una aplicación VB6.
mobjParentWrkBk.ExcelWorkBook.Application.Selection.Insert Shift:=xlToRight
Desafortunadamente Google y otros motores de búsqueda no han sido muy útiles ya que parecen omitir la: = parte.
¿Qué sería un equivalente de C #?
Realmente se trata de Excel y de cómo maneja las inserciones. Si selecciona un rango de celdas y hace clic derecho en Insertar, se le preguntará en qué dirección mover las celdas. Esto es de la Ayuda de Excel:
=======
Insertar método en el objeto de rango
Inserta una celda o un rango de celdas en la hoja de trabajo o macro y desplaza otras celdas para hacer espacio.
expresión.Insertar (Shift, CopyOrigin)
expresión requerida. Una expresión que devuelve un objeto Range.
Shift Opcional Variante. Especifica de qué manera desplazar las celdas. Puede ser una de las siguientes constantes de XlInsertShiftDirection: xlShiftToRight o xlShiftDown. Si se omite este argumento, Microsoft Excel decide según la forma del rango.
Variante opcional de CopyOrigin. El origen de la copia
===========
Si no tiene las constantes definidas, puede sustituir los siguientes números
xlShiftDown: -4121 xlShiftToLeft: -4159 xlShiftToRight: -4161 xlShiftUp: -4162
VB6 y VB.net tienen parámetros opcionales en el método. c # tiene la opción de sobrecargar el método.
La forma de VB6 / VB.net de decir Shift: = xlToRight permite pasar el valor de un parámetro específico por nombre.
p. ej. submetodología pública (opcional a como entero = -1, opcional b como entero = 1) ... end sub
Puedo llamar a este método con mymethod (b: = 10)
Para c #, podría haber 2 métodos para esto
void Shift()
{
defaultDirection = directionEnum.Left;
Shift(defaultDirection);
}
void Shift(directionEnum direction)
{
}
1 cosa más Aunque puede llamar al método simplemente pasando parámetros, agregar el nombre del parámetro al llamar hace que el código sea un poco más legible.
por ejemplo, DoSomethingWithData (CustomerData: = cliente, SortDirection: = Ascending)
Espero que ayude.
Solo para aclarar la respuesta de John Rudy.
La sintaxis es opcional (pequeña ''o''), lo que significa que no tiene que usarla. En mi experiencia, la mayoría de los codificadores VB6 no usan la sintaxis y prefieren los parámetros normales "sin nombre".
Si elige usarlo, todos los parámetros posteriores en la llamada a procedimiento secundario deben ser nombrados.
La sintaxis paramter nombrada se puede usar en todos los parámetros, ya sea que el argumento correspondiente haya sido declarado o no usando la palabra clave VBA Optional
(''O'' mayúscula). Considere, por ejemplo, esta función VBA (ligeramente tonta) con dos parámetros, uno requerido y uno Optional
:
Private Function TimesTen( _
ByVal Value As Long, _
Optional ByVal Factor As Long = 10 _
) As Long
TimesTen = Value * Factor
End Function
En VBA, puedo llamarlo usando parámetros con nombre para el parámetro requerido (el parámetro Optional
puede simplemente omitirse en VBA, a diferencia de C # .NET para el que se debe usar Type.Missing
para todos los parámetros Optional
omitidos):
MsgBox TimesTen(Value:=9)
Si quisiera llamarlo con los parámetros en el orden ''incorrecto'' (¿por qué?), Puedo lograrlo usando parámetros con nombre:
MsgBox TimesTen(Factor:=11, Value:=9)
Intentar utilizar una llamada de parámetro "sin nombre" regular después de una llamada con nombre provoca un error de compilación:
MsgBox TimesTen(Value:=9, 11)
Entonces, ¿por qué los codificadores VBA usan parámetros con nombre si los codificadores VB6 rara vez lo hacen, a pesar de que utilizan esencialmente el mismo lenguaje? Creo que es porque el VBA generado por el grabador de macros de las aplicaciones de MS Office tiende a (¿siempre?) Generar parámetros nombrados y muchos codificadores de VBA aprenden la programación de esta manera.
Esta es la sintaxis de Visual Basic para los parámetros con nombre opcionales. La función Insert
tiene un parámetro llamado Shift
, que se está especificando.
C #, hasta donde yo sé, no tiene un equivalente para los parámetros con nombre opcionales. En cambio, necesitaría llamar al método Insert
, especificando Type.Missing
para todos los parámetros que no sean Shift
.
Consulte también la siguiente pregunta de : VB.NET: = Operador
ACTUALIZACIÓN (2008-10-29):
C # 4.0 está configurado para introducir parámetros opcionales y nombrados. Vea esta entrada del blog en codebetter.com .