2012-03-28 10 views
5

Soy nuevo en la codificación VBA. Digamos que estoy recuperando el valor de Sheet3.Cell (23, 4) por un valor, ¿hay alguna forma en el código VBA que me permita establecer esto como una variable?Configuración de una hoja y una celda como variable

Por ejemplo, he cambiado la interfaz y dejo que el valor permanezca en Sheet4.Cell (20,1), en todas partes de mi código que hacen referencia a Sheet3.Cell (23, 4) deben cambiarse a Sheet4.Cell (20, 1). Estoy pensando ¿hay alguna mejor práctica para codificar VBA para una situación como esta?

Respuesta

6

Sí. Para que asegurarse de que se declara la hoja de trabajo

Por ejemplo

Código anterior

Sub Sample() 
    Dim ws As Worksheet 

    Set ws = Sheets("Sheet3") 

    Debug.Print ws.Cells(23, 4).Value 
End Sub 

Nuevo Código

Sub Sample() 
    Dim ws As Worksheet 

    Set ws = Sheets("Sheet4") 

    Debug.Print ws.Cells(23, 4).Value 
End Sub 
+2

Hola, Sidd, no entiendo tu código. ¿Por qué estás configurando una variable innecesaria en la memoria? Los nombres de las hojas son básicamente como usar una variable si el nombre de la hoja de trabajo no cambia. – Reafidy

+0

Vaya, lo acababa de copiar de la pregunta pero me olvidé de enmendarlo ... lo estoy enmendando ahora. Buena atrapada :) –

5

Sí, establece la célula como un objeto de rango uno hora y luego use ese objeto RANGE en su código:

Sub RangeExample() 
Dim MyRNG As Range 

Set MyRNG = Sheets("Sheet1").Cells(23, 4) 

Debug.Print MyRNG.Value 

End Sub 

Alternativamente, puede simplemente almacenar el valor de esa celda en la memoria y hacer referencia al valor real, si eso es todo lo que realmente necesita. Esa variable puede ser Long o Double o Single si es numérica, o String:

Sub ValueExample() 
Dim MyVal As String 

MyVal = Sheets("Sheet1").Cells(23, 4).Value 

Debug.Print MyVal 

End Sub 
Cuestiones relacionadas