Capturar dato seleccionado y ponerlo en una celda especifica de otra hoja.

Quisiera saber que error tengo en en este código, es para que capture un valor de una tabla dinámica, luego quite los filtros y vacíe la textbox. Hasta allí funciona bien, pero lo que no hace es ir a la otra hoja y ponerme el valor en la celda especificada.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Target, Range("PRE_CODE")) Is Nothing Then
    Dim CODE As Integer
    CODE = Target.Value
    TextBox1.Text = ""
    ActiveSheet.PivotTables("B_PRODUCTO").PivotFields("INFO").ClearAllFilters
    Sheet.PREREGISTRO.Activate
    Range("_PRE_CODE").Value = CODE
    Range("_PRE_CODE").Select
End If
End Sub

1 Respuesta

Respuesta
1

H   o la:

Primero, deberías quitar la instrucción On Error Resume Next, en caso de error, la macro se detiene y de esa forma podrías analizar cuál es el error, si tienes la instrucción, no sabrías cuál es el problema.

Regresando a tu macro, para seleccionar la hoja, supongo que tienes una hoja con el nombre "PREREGISTRO", entonces debería ser así:

Sheets("PREREGISTRO").Select

También deberías quitar la declaración de la variable CODE, ya que si seleccionas una celda que no es un número, entonces la macro enviará error. Lo mejor es validar la selección de la celda.

Dim CODE As Integer

Por último, como la macro se está ejecutando desde otra hoja,  tienes que poner la referencia de la hoja a utilizar:

        ActiveSheet.Range("_PRE_CODE").Value = CODE
        ActiveSheet.Range("_PRE_CODE").Select

La macro completa:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Act.Por.Dante Amor
    If Not Intersect(Target, Range("PRE_CODE")) Is Nothing Then
        If Target.Count > 1 Then Exit Sub
        If Not IsNumeric(Target.Value) Then Exit Sub
        CODE = Target.Value
        TextBox1.Text = ""
        ActiveSheet.PivotTables("B_PRODUCTO").PivotFields("INFO").ClearAllFilters
        Sheets("PREREGISTRO").Select
        ActiveSheet.Range("_PRE_CODE").Value = CODE
        ActiveSheet.Range("_PRE_CODE").Select
    End If
End Sub

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

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas