Error en rutina Control Activex

Tengo un command control activex y dentro una rutina pero me sale el siguiente error en la línea:

Sheets("Hoja1").Range("F44").Select

Error en el método Select  de la clase Range

¿A qué se debe?

1 Respuesta

Respuesta
1

Es porque está en otra hoja diferente a la hoja "Hoja1"

Tienes que seleccionar primero la "Hoja1" y después la celda:

Sheets("Hoja1").Select
Range("F44").Select

Lo recomendable es tomar o poner el dato directamente de la celda. En VBA excel, no es necesario seleccionar la celda.

Si vas a poner un dato en la celda:

Sheets("Hoja1"). Range("F44") = "hola"

Si vas a tomar un dato de la celda:

variable = Sheets("Hoja1"). Range("F44").Value

En ambos casos no es necesario seleccionar la hoja ni la variable, incluso puedes estar en otra hoja y funciona.

.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

.

No funciona lo que pasa estimado Dante es que estoy copiando y pegando en la celda que indico

Esta es la rutina dentro del control activex

Sub CopiarDatos()
Application.ScreenUpdating = False
Range("A42:D46").Select
Selection.Copy
End Sub


Sub PegarDatos()
Sheets("Hoja1").Select
Range("F44").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Sheets("Datos").Select
Application.CutCopyMode = False
Range("A17").Select
Application.ScreenUpdating = True
End Sub

Quedaría así:

Sub CopiarDatos()
    Application.ScreenUpdating = False
    Range("A42:D46").Select
    Selection.Copy
End Sub
'
Sub PegarDatos()
    Sheets("Hoja1").Select
    Range("F44").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    Sheets("Datos").Select
    Application.CutCopyMode = False
    Range("A17").Select
    Application.ScreenUpdating = True
End Sub

Insisto, no es necesario seleccionar la hoja.

Si el objetivo es copiar y pegar, no son son necesarias 2 macros. Con una sola macro puedes copiar y pegar, quedaría así:

Sub Copiar_y_Pegar()
'Por.Dante Amor
    Sheets("Datos").Range("A42:D46").Copy
    Sheets("Hoja1").Range("F44").PasteSpecial Paste:=xlPasteValues
End Sub

.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas