Visual Basic - ¿Set MiHoja = New Worksheet o Dim MiHoja as Worksheet?

Life is soft - evento anual de software empresarial
 
Vista:

¿Set MiHoja = New Worksheet o Dim MiHoja as Worksheet?

Publicado por Caro Olvera (1 intervención) el 28/01/2020 01:56:08
Me podrían decir cual es la diferencia entre...

Set MiHoja = New Worksheet
y
Dim MiHoja as Worksheet
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de gilman
Val: 521
Bronce
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

¿Set MiHoja = New Worksheet o Dim MiHoja as Worksheet?

Publicado por gilman (282 intervenciones) el 28/01/2020 12:39:58
La diferencia, para cualquier tipo de clase, es la siguiente:
1
2
Dim x As clase
    Set x = New clase

Crea el objeto en el momento de ejecutarse la sentencia Set x = New clase, y cualquier referencia anterior a la variable anterior a dicha sentencia producirá un error en tiempo de ejecución.
1
Dim x As New clase
No creará una nueva instancia de la clase, hasta que se haga referencia por primera vez a la variable, y además cada vez que se haga referencia a la variable se comprobará si tiene valor y si es Nothing creará una nueva instancia, nunca se producirá un error al acceder a cualquier miembro de la clase, aunque se haya puesto a Nothing la variable.
A nivel de rendimiento es mejor la primera opción.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 149
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

¿Set MiHoja = New Worksheet o Dim MiHoja as Worksheet?

Publicado por raul (64 intervenciones) el 28/01/2020 14:09:12
Como te explicada GILMAN la intrucción DIM recerva el espacio mientras que SET crea el espacio. Es muy posible que VBA te permita emplear variables sin declarar pero nunca te permitira emplear una variable tipo objeto [como es el caso] sin SET, además las variables tipo object asumen las propiedades e incluso los eventos de la clase a la que fueron asignadas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar