Tengo un comando que me guarda datos en otra hoja y en la actual ya se ven, pero al guardarlos me cambia de hoja y quiero evitar

Quisiera ver si me puede ayudar ya que tengo una macro, que al solicitar el nombre lo guarda, pero me cambia de Hoja a donde los guarda, pero quier que se quede en donde ejecute la macro.

Private Sub CommandButton1_Click()

Dim Fila As Long
Dim duplicados As Boolean
Application.ScreenUpdating = False
With Worksheets("DIRECCIONES")

'Obtener la fila disponible
Fila = Application.WorksheetFunction.CountA(Range("B:B")) + 0
duplicados = False

'Validar si se han ingresado datos duplicados

For i = 1 To Fila
If Cells(i, 2).Value = UserForm1.TextBox1.Value Then
If Cells(i, 3).Value = UserForm1.TextBox2.Value Then
If Cells(i, 4).Value = UserForm1.TextBox3.Value Then
'Se encontraron datos duplicados
MsgBox "Datos duplicados en la fila " & i
duplicados = True
End If
End If
End If
Next i

If Not duplicados Then
'Insertar datos capturados
Cells(Fila, 2).Value = UserForm1.TextBox1.Value
Cells(Fila, 3).Value = UserForm1.TextBox2.Value
Cells(Fila, 4).Value = UserForm1.TextBox3.Value
'Limpiar cajas de texto
UserForm1.TextBox1.Value = " "
UserForm1.TextBox2.Value = " "
UserForm1.TextBox3.Value = " "
'Notificar al usuario
MsgBox "Se han agregado los datos correctamtente"
', ahora podras verlos en la lista 'Datos insertados en la fila " & fila
End If

End With
Application.ScreenUpdating = True

End Sub

2 respuestas

Respuesta
1

Solo después del end with pon:

Sheets("elnombredetuhoja").Select
Respuesta
1

Ese With... End With no está haciendo nada. Todo ese proceso se está haciendo en la hoja que este activa en el momento. Si la hoja activa es DIRECCIONES es pura coincidencia.

Hola si es lo que vi, es que no se si exista aluna manera que guarde los datos en la hoja DIRECCIONES, pero me deje en la hoja actual, lo había intentado con 

el comando que pegue, como me dijeron, pero si cambian de hoja y hacen el mismo proceso, me mandara a la hoja  que deje el sheets no a la actual. 

Sheets("elnombredetuhoja").Select

Solo tienes que poner un punto delante de cada isntruccion.

Debes entender como funciona la instrucción With...End With

Mira este ejemplo, asi es como tu lo tienes.

With Worksheets("DIRECCIONES")
    Cells(1, 1).Value = "Hola Mundo"
End With

Ese With no esta haciendo absolutamente nada, la manera correcta seria así:

With Worksheets("DIRECCIONES")
    .Cells(1, 1).Value = "Hola Mundo"
End With

Fijate en el punto . delante del Cells.

Para lo que sirve With es para encerrar propiedades y métodos del mismo objeto, y escribir el nombre del objeto una sola vez.

Observa la diferencia:

Worksheets("DIRECCIONES").Cells(1, 1).Value = "1"
Worksheets("DIRECCIONES").Cells(1, 2).Value = "2"
Worksheets("DIRECCIONES").Cells(1, 3).Value = "3"
Worksheets("DIRECCIONES").Cells(1, 4).Value = "4"

Como ves en ese ejemplo, he tenido que escribir Worksheets("DIRECCIONES") cada vez. Ahi es donde entra With

Y lo harías así:

With Worksheets("DIRECCIONES")
  .Cells(1, 1).Value = "1"
  .Cells(1, 2).Value = "2"
  .Cells(1, 3).Value = "3"
  .Cells(1, 4).Value = "4"
End With

Pero sin el PUNTO no le especificas que esa propiedad o metodo pertenece a ese Objeto del With.

Si esta llega a ser la solución a tu problema.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas