Soy nuevo en VBA y quiero saber si puedo convertir la siguiente declaración y asignación en una línea:
Dim clientToTest As String
clientToTest = clientsToTest(i)
o
Dim clientString As Variant
clientString = Split(clientToTest)
Soy nuevo en VBA y quiero saber si puedo convertir la siguiente declaración y asignación en una línea:
Dim clientToTest As String
clientToTest = clientsToTest(i)
o
Dim clientString As Variant
clientString = Split(clientToTest)
Respuestas:
Desafortunadamente, no hay taquigrafía en VBA. Lo más cercano que obtendrás es algo puramente visual usando el :
carácter de continuación si lo quieres en una línea para facilitar la lectura;
Dim clientToTest As String: clientToTest = clientsToTest(i)
Dim clientString As Variant: clientString = Split(clientToTest)
Sugerencia (resumen de otras respuestas / comentarios): también funciona con objetos (Excel 2010):
Dim ws As Worksheet: Set ws = ActiveWorkbook.Worksheets("Sheet1")
Dim ws2 As New Worksheet: ws2.Name = "test"
Puede hacer eso con los objetos, como se muestra a continuación.
Dim w As New Widget
Pero no con cadenas o variantes.
:
. Existen algunas limitaciones, ya que no puede tener múltiples declaraciones de valor en la misma línea (es decir var1 = val1: var2 = val2
). Se generará errores esporádicamente y le permitirá hacer este tipo de asignación a veces, pero en general no es sugerido por esta notación.
Dim x As New T
sintaxis, que solo funciona con objetos.
dim str as String: str = "value"
y dim str as Worksheet: set str = ActiveWorkbook.worksheets("Sheet1")
ambos trabajan repetidamente. Sin dim ws as New Worksheet: set ws = ActiveWorkbook.Worksheets("Sheet1")
embargo , si hago una instanciación de objetos, se produciría un error como cualquier otra operación no válida en VBA.
New
palabra clave no lo hace. Eso es todo lo que digo.
de hecho, puedes, pero no de esa manera.
Sub MySub( Optional Byval Counter as Long=1 , Optional Byval Events as Boolean= True)
'code...
End Sub
Y puede establecer las variables de manera diferente al llamar al sub, o dejarlas en sus valores predeterminados.
En algunos casos, toda la necesidad de declarar una variable se puede evitar mediante el uso de la With
instrucción .
Por ejemplo,
Dim fd As Office.FileDialog
Set fd = Application.FileDialog(msoFileDialogSaveAs)
If fd.Show Then
'use fd.SelectedItems(1)
End If
esto puede reescribirse como
With Application.FileDialog(msoFileDialogSaveAs)
If .Show Then
'use .SelectedItems(1)
End If
End With
Puede definir y asignar valor como se muestra a continuación en una línea. He dado un ejemplo de dos variables declaradas y asignadas en una sola línea. si el tipo de datos de múltiples variables es el mismo
Dim recordStart, recordEnd As Integer: recordStart = 935: recordEnd = 946