Jump to content
  • Debido a la crisis sanitaria, hasta el día 31 de marzo, el registro al foro de Ayuda Excel será totalmente gratuito para facilitar el teletrabajo. Todos los registros que se produzcan entre estas fechas tendrán acceso gratuito ilimitado a la comunidad hasta el 30 de abril.

    Regístrate

    Si te surge alguna duda mientras estás trabajando en casa con Excel, ya tienes a quien preguntar.

    Espero que esta medida te sirva de ayuda. Frenar la expansión del coronavirus depende de todos. Sé responsable.

RandalHP

ANSWERED (Private Sub) Copiar celdas según criterio

Recommended Posts

Hace 1 hora, RandalHP dijo:

Buenas tardes,

Me podría ayudar a crear un "Private Sub" para copiar un rango de celdas según el criterio de otra. Ejm: Si la celda (E6 = 2) entonces los valores de la celda (R5 se copian a R6).

Adjunto un archivo para poder efectuar el proceso.

Gracias de antemano.

Ss.

Copiar_Texto_PrivateSub.xlsm 9 kB · 1 descarga

Hola Randal

¿Es en serio?, ya debes pensar que a esta altura debes proponerte a resolver algunos "problemas" no complejos

Prueba con esta macro de evento y nos comentas

Private Sub Worksheet_Change(ByVal Target As Range)

With Target
    If .Address(0, 0) = "E6" Then If .Value = 2 Then Range("R6") = Range("R5")
End With
    
End Sub

 

Saludos 

Share this post


Link to post
Share on other sites
Hace 23 minutos , Gerson Pineda dijo:

Private Sub Worksheet_Change(ByVal Target As Range) With Target If .Address(0, 0) = "E6" Then If .Value = 2 Then Range("R6") = Range("R5") End With End Sub

Me funciono, pero cuando quiero seleccionar un rango no funciona se elimina todo. Lo tengo de la siguiente manera:

Private Sub Worksheet_Change(ByVal Target As Range)

With Target
    If .Address(0, 0) = "E6" Then If .Value = 2 Then Range("R6:V6") = Range("R5:V6")
End With
    
End Sub

Ahora, cuando es para todo un rango. Ejm: (E7, E8, E9, etc.) y copie sus respectivos campos como debería ir...

Ss.

Share this post


Link to post
Share on other sites
Hace 1 hora, Gerson Pineda dijo:

Asi: 


Range("R6:V6") = Range("R5:V5").Value

Entiendo.

Hace 1 hora, Gerson Pineda dijo:

Comienza a leer mucho sobre lo más básico de VBA

Esta bien :(

*Si la celda "E6" varia. E7, E8... También aplicará la regla?

Ss. 

Share this post


Link to post
Share on other sites
Hace 2 horas, RandalHP dijo:

Estoy intentando, pero no sale :( algo estoy haciendo mal... Adjunto Excel con el código...

Al final llegué a esta conclusión:

Private Sub Worksheet_Change(ByVal Target As Range)

With Target
    If .Address(0, 0) = "E6" Then If .Value = 2 Then Range("R5:V5").Copy Destination:=Worksheets("Sheet1").Range("R6:V6")
End With
    
End Sub

 

Hace 2 horas, RandalHP dijo:

Cuando escribo en E7 o E8 no pasa nada tampoco...

Que necesito cambiar o agregar para que cuando pase lo mismo en la E7 y subsiguientes pase lo mismo. (Siempre y cuando este campo sea 2)

Ss.

Share this post


Link to post
Share on other sites

¿Estas copiando a otra hoja? 

Hace 1 hora, RandalHP dijo:

Al final llegué a esta conclusión:


Private Sub Worksheet_Change(ByVal Target As Range)

With Target
    If .Address(0, 0) = "E6" Then If .Value = 2 Then Range("R5:V5").Copy Destination:=Worksheets("Sheet1").Range("R6:V6")
End With
    
End Sub

 

Share this post


Link to post
Share on other sites
Hace 5 minutos , Gerson Pineda dijo:

¿Estas copiando a otra hoja? 

No, no. Pertenece a la misma hoja de trabajo. Coloque el el Destination:=Worksheets("Sheet1") para no afectar otras hojas.

Ss.

Share this post


Link to post
Share on other sites

A ver si te parece:

 

Private Sub Worksheet_Change(ByVal Target As Range)
     On Error GoTo ErrHandler
     If Intersect(Target, Me.Range("e6:e10")) Is Nothing Or Target = "" Then Exit Sub
     Application.EnableEvents = False
     If Target = 2 Then
        Target.Offset(0, 13) = "LIM"
        Target.Offset(0, 14) = "AMS"
        Target.Offset(0, 15) = "CDG"
        Target.Offset(0, 16) = "AMS"
        Target.Offset(0, 17) = "LIM"
        Else
    End If
    
ErrHandler:
    Application.EnableEvents = True
        
  End Sub

Un buen consejo que me dieron hace poco tiempo, una gran primo que adquirí por estos lados: Gerson Pineda

porque el problema de este evento, es que incluso te puedo pegar el Excel. Si tienes mas dudas respecto al código pues solo avisa y con gusto te colaboro

https://ayudaexcel.com/foro/topic/42515-worksheet_change-que-obligue-a-corregir-el-valor-en-una-celda/?do=findComment&comment=239917

Share this post


Link to post
Share on other sites
Hace 22 horas, RandalHP dijo:

No, no. Pertenece a la misma hoja de trabajo. Coloque el el Destination:=Worksheets("Sheet1") para no afectar otras hojas.

Ss.

No es necesario hacer eso [Destination:=Worksheets("Sheet1")], pues el evento [Private Sub Worksheet_Change] es para la hoja activa [agregar que también hay eventos del mismo tipo, para todo el libro]

Hace 23 horas, RandalHP dijo:

 

En 11/2/2020 at 11:12 , RandalHP dijo:

Cuando escribo en E7 o E8 no pasa nada tampoco...

Que necesito cambiar o agregar para que cuando pase lo mismo en la E7 y subsiguientes pase lo mismo. (Siempre y cuando este campo sea 2)

Como notaras a efecto de programación o automatización en Excel, no es lo mismo operar con una celda que un rango, y te costara mucho mas si no te queda claro el uso de macros de evento

Te hago ver todo esto, por que la idea es que también puedas colaborar con la comunidad

Y ya que has ampliado el uso que buscas, te adjunto mi versión para copiar ese rango sin importar en que celda escribes 2

 

Saludos a ambos!

Copiar rango segun valor en celda VBA_GP.rar

Share this post


Link to post
Share on other sites
Hace 15 minutos , Gerson Pineda dijo:

No es necesario hacer eso [Destination:=Worksheets("Sheet1")], pues el evento [Private Sub Worksheet_Change] es para la hoja activa [agregar que también hay eventos del mismo tipo, para todo el libro]

Me queda muy claro. Gracias!

Hace 15 minutos , Gerson Pineda dijo:

Como notaras a efecto de programación o automatización en Excel, no es lo mismo operar con una celda que un rango, y te costara mucho mas si no te queda claro el uso de macros de evento

Te hago ver todo esto, por que la idea es que también puedas colaborar con la comunidad

Y ya que has ampliado el uso que buscas, te adjunto mi versión para copiar ese rango sin importar en que celda escribes 2

 

Saludos a ambos!

Creo que me explique mal (las disculpas de caso). No quería ampliar tanto este asunto. Solo necesitaba el código correcto para la operación que estoy necesitando ejecutar. (Que es algo que siempre hago de forma manual "Copy & Paste") por esto recurro a una macro de evento.

Los codigos que me están proporcionando me estan sirviendo mucho,  en especial el ultimo que mando @Gerson Pineda.

Pero la solución final a mi proceso, es para cuando se escribe 2 en cualquier celda de la columna "E" en el rango "R:V" se copie de arriba para abajo. Al parecer el código proporcionado esta copiando siempre el mismo rango, Tipo "Rango Absoluto".

Si es posible poder seguir ayudandome con esto estare muy agradecido.

Gracias!!

Ss.

Share this post


Link to post
Share on other sites

RandalHp

Hace 31 minutos , RandalHP dijo:

Creo que me explique mal (las disculpas de caso). No quería ampliar tanto este asunto. Solo necesitaba el código correcto para la operación que estoy necesitando ejecutar

Algo así como por arte de magia :blink: ... para recibir ese "código", el consultante también necesita tener cierto conocimiento y demasiada explicación 

Hace 33 minutos , RandalHP dijo:

Pero la solución final a mi proceso, es para cuando se escribe 2 en cualquier celda de la columna "E" en el rango "R:V" se copie de arriba para abajo. Al parecer el código proporcionado esta copiando siempre el mismo rango, Tipo "Rango Absoluto".

Los usuarios como tu ya deberían de modificar algo con los aportes recibidos... yo por eso solicito un antes y un después, para no estar explicando tanto, tu eres el que debe esforzarte por ser mas que explicito con archivo adjunto, si no pues mi colaboración se queda aquí 

 

Saludos!

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.



×
×
  • Create New...

Important Information

Privacy Policy


CTA Templates.png