refrescar - excel vba llamada subrutina con variables
refrescar pantalla excel vba (3)
En realidad tienes 2 problemas.
Primero, la respuesta real a tu pregunta. Necesitas decir:
Call EnterCellValueMonthNumber("N23:Q23",1)
Pero eso aún no funcionará si lo ejecuta, ya que ha establecido cells
de tipo range
... configúrelo como tipo de string
con esto en su lugar:
Sub EnterCellValueMonthNumber(cells As String, number As Integer)
Range(cells).Select
ActiveCell.FormulaR1C1 = number
End Sub
Definí la siguiente subrutina:
Sub EnterCellValueMonthNumber(cells As range, number As Integer)
range(cells).Select
ActiveCell.FormulaR1C1 = number
End Sub
Cuando llamo a la subrutina de esta manera:
EnterCellValueMonthNumber ("N23:Q23",1)
Aparece el siguiente mensaje de error:
Compile error Expected: =
No tengo idea de por qué recibo este mensaje. ¿Alguien sabe lo que me estoy perdiendo?
Llamarías al submarino como
EnterCellValueMonthNumber "N23:Q23", 1
Sin corchetes. O
Call EnterCellValueMonthNumber("N23:Q23", 1)
Corchetes, y Call
antes.
Además, su Sub está esperando un objeto Range como primer argumento y usted está suministrando una cadena; debe cambiar la firma del subtítulo a:
Sub EnterCellValueMonthNumber(cells As String, number As Integer)
Además, no estoy seguro de lo que está intentando lograr con este código, ya que solo establecerá la celda superior izquierda del rango en 1. ¿Algo así como
Range(cells).Value = number
'' Or, if you''re going to be passing in something more complex later...
Range(cells).FormulaR1C1 = number
ser más apropiado?
También sería muy cuidadoso de usar Range("...")
sin especificar a qué hoja te refieres. Esto actuará en cualquiera de las hojas activas y, por lo tanto, puede causar problemas inesperados, casi siempre prefieren SheetX.Range("...")
. De manera similar, para usar .Select
, es innecesario y solo puede causarle problemas en el futuro.
Pruebe el siguiente código:
Sub EnterCellValueMonthNumber(ByVal cells As String, number As Integer)
Range(cells).Select
ActiveCell.FormulaR1C1 = number
End Sub