Jump to content

(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 

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.

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.

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

 

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

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

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.

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!

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


  • Crear macros Excel

  • Posts

    • Hola Haplox (José), Gracias por la valiosa ayuda tuya y de Héctor Miguel, hoy he sido capaz de resolver todas las dudas sobre la plantilla. Adjunto el documento por si hay otras personas interesedas en usarla. Una vez más os doy las gracias a todos que me habeis ayudado hasta ahora y os deseo una buena semana. Ruego poner el tema como: SOLUCIONADO. Saludos a todos, CONTROL DESAYUNOS FINAL 24.11.2020.xlsm
    • ¡Hola @joseppp! Revisa el adjunto, donde propongo una solución a lo que pides.  ¡Bendiciones! Libro1.xlsx
    • Antoni buenos días, por favor podrías ayudarme  agregando a este código lo necesario para crear la hoja de avance de obra siguiente, en este adjunto puse notas para guiarte.  Mil gracias.   Consulta Macro Hoja Avances.xlsx
    • Buenos dias, Agadeceré si me podeis ayudar con esta fórmula, ya que no entiendo porque sale bien con el mayor de los numeros, si pongo en el parametro de coincidir, valor exacto (0). Gracias   Libro1.xlsx
    • Buenas,  es una cosa fácil pero se me esta resistiendo, con Application.hWnd saco la de la ventana activa, el excel, y con FindWindow("notepad", vbNullString), la de notepad, pero cuando intento otras que tengo activas como por ejemplo el word no me da nada... alguien me puede indicar como indicar en el findwindow / ex el titulo de la ventana, gracias
  • Recently Browsing

    No registered users viewing this page.

×
×
  • Create New...

Important Information

Privacy Policy