¿De dónde proviene el error "la referencia debe ser a una hoja de macros"?

Estoy intentando comprender como funciona el select cases, he copiado un ejemplo que he encontrado y a la hora de ejecutarlo he colocado un botón para asignarle la macro y poder lanzarlo cómodamente, me aparece un mensaje de error que me impide asignar la macro..."la referencia debe ser a una hoja de macros", solo tengo una hoja dentro del libro nombrada como 1 y el código siempre esta referido a activesheet...

¿De dónde proviene este error?

Pego el código por si esta ahi y soy incapaz de ver el problema...

Sub e15()
''comprensión de select cases
'macro que suma, resta, multiplica o divide los valores de las casillas
'A1 y A2 dependiendo de si B1 contiene el signo +,-,x,:

Dim signo As String
Dim valor1 As Integer, valor2 As Integer, total As Integer

valor1 = ActiveSheet.Range("A1").Value
valor2 = ActiveSheet.Range("A2").Value
signo = ActiveSheet.Range("A3").Value

Select Case signo
Case "+"
total = valor1 + valor2
Case "-"
total = valor1 - valor2
Case "x"
total = valor1 * valor2
Case ":"
total = valor1 / valor2
Case Else
total = 0
End Select
ActiveCell.Range("A3").Value = total
End Sub

2 Respuestas

Respuesta
1

Revisa estos detalles:

1- La macro tal como la tenés debe estar en un módulo del Editor. Insertar módulo y allí la copiás.

2- El botón se tendrá que dibujar con la barra Formularios

3- Clic derecho sobre el botón, opción 'Asignar macro' y seleccionás la que ya tenés en el módulo.

4- El libro tuvo que haber sido abierto habilitando las macros.

* Podes leer más sobre dónde colocar y cómo ejecutar macros (y otros temas más) en la sección Macros de mi sitio

Sdos y comentame si lo resolviste. Sino dejame algunas imágenes como para poder detectar el fallo.

el botón lo estoy dibujando con la opción controles de la barra programador en excel, es la única diferencia sobre lo que me indicas...

¿como puedo dibujar el botón con la barra formularios?

se me olvidó decir que uso excel 2007....

Te transcribo lo que tengo explicado en la sección Macros de mi sitio (que te invito a visitar, no necesitas registrarte)

2- Al presionar un botón dibujado en la hoja.
Podemos utilizar botones de la barra 'Cuadro de controles o ActiveX' o de la barra 'Formularios'.
En versión 2003 se encuentra en Menú Ver, Barras de Herramientas. En versión
2007 desde la ficha Programador
Dibujamos el control en la hoja, ajustamos algunas propiedades como
texto, tamaño, ubicación. Al hacer clic derecho sobre el control optamos
por 'Ver código' o 'Asignar macro' según qué barra de herramientas
hemos utilizado.
a-
Cuadro de controles: al optar por 'Ver código' nos llevará al Editor,
Al objeto HOJA donde se generará automáticamente una rutina con estas 2 instrucciones:
Private Sub CommandButton1_click()
'aquí escribiremos nuestras instrucciones
End Sub
b-
Formularios: ya debemos tener lista la rutina en un módulo del Editor y la asignaremos cuando optemos por 'Asignar macro'.
Las rutinas para este caso son como el siguiente ejemplo:
Sub nombre_rutina()
'nuestras instrucciones
End Sub

La opción 'controles' de la barra Programador tiene los 2 tipos: formulario y ActiveX... revisa nuevamente. Si no das con la falla podes enviarme tu hoja (con el botón dibujado) al correo que encontrarás en mi sitio

curioso, si pego el código en la hoja y no en un modulo, funciona

Si lo pegaste en la hoja y lo ejecutás (es decir presionás el botón-no desde el Editor) entonces tenés un botón ActiveX y no formulario. Pero el botón debe coincidir con la rutina, no vale colocar una rutina que inicia con Sub...()

Yo lo probé y funciona perfecto sin error. Por supuesto tenés que tener alguna celda activada porque el resultado lo devolvés en una celda que depende de la ubicación de la activa:

ActiveCell.Range("A3").Value = total

Estando en la hoja Excel, pasá a modo diseño (¿con qué versión trabajas? )

Hacé clic derecho sobre el botón, opción 'Ver código'

Te lleva al Editor, al objeto HOJA, con unas líneas que dirán:

Private Sub CommandButton1_Click()

'........................
End Sub

entre esas 2 líneas colocá tus instrucciones a partir de Dim signo As String

Si querés cambiarle el nombre al botón, primero cambiale la propiedad 'Name' y luego optás por 'Ver código' .

¿Me parece que estás equivocando en cómo colocás la rutina en el Editor (es un botón de comando? Porque la instrucción debe decir _Click

Si el problema aún se mantiene enviame la hoja con el botón dibujado.

gracias por el esfuerzo y tiempo dedicado, no he acabado de entender del todo tu explicación, y seguro que es por mi falta de conocimientos, pero al menos funciona.

Respuesta

El problema esta en el nombre que le pones a tu función

E15 hace referencia a la celda e15 por lo tanto cuando ejecutas dicha función te va a referir a dicha celda. Solo cambia el nombre a la función y listo funcionara si problema alguno

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas