............ Foro Excel
Si no lo has hecho aún: REGISTRATE!!!

COPIAR Y PEGAR DIFERENTES RANGOS A LA VEZ

Ver el tema anterior Ver el tema siguiente Ir abajo

COPIAR Y PEGAR DIFERENTES RANGOS A LA VEZ

Mensaje por Deivid el Miér Abr 23, 2008 7:00 pm

Hola amigos. Enhorabuena Gali por tu exito. Tengo una macro para pasar datos desde una Hoja a otra. Pero el problema viene cuando intento copiar varios rangos, de la hoja, a la vez para des pues pegarlos en la otra hoja. Me da un error.

Código:
Sub Pasa_Datos()
    Dim fecha, Fecha2, I, I2, Encontrado, Encontrado2, mensaje
    Encontrado = False
    Encontrado2 = False
    I = 16
    Y = 24
    fec = InputBox("Indica fecha para pasar los Datos: (dd-mm-aa)", "Pasar Datos diarios a Glade Furnace Data")
    'Si Fec es igual a vacio(cancelar) entonces se sale de la macro
    If fec = "" Then End
       
    fecha = FormatDateTime(fec, vbShortDate)
    Fecha2 = fecha
    Do While ((Range("A" & I) <> "") And Not (Encontrado))
    If (FormatDateTime(Range("A" & I).Value, vbShortDate) = fecha) Then
        Encontrado = True
    Else
        I = I + 3
    End If
    Loop
    If Not (Encontrado) Then
        mensaje = MsgBox("Error en la fecha. Comprueba que la fecha sea correcta.", vbOKOnly, "FECHA ERRONEA")
    Else
********************************************************************************       
        Range("D" & I & ":F" & I).Select
        Range("G" & I & "J" & I).Select
        Range("L" & I & "Q" & I).Select                                AQUI ESTA MI PROBLEMA. Me gustaria seleccionar
        Selection.Copy                                                    todos los rangos a la vez. 
********************************************************************************
    'Abre HojaDestino
    On Error GoTo 0
        Workbooks.Open ("D:\EXCEL\PLANILLAS\HojaDestino.xls")
        Windows("HojaDestino.xls").Activate
        Sheets("Datos").Select
        Do While Range("A" & Y).Value <> "" And FormatDateTime(Range("A" & Y).Value, vbShortDate) <> Fecha2
            Y = Y + 1
        Loop
       
        If FormatDateTime(Range("A" & Y).Value, vbShortDate) = Fecha2 Then
            Range("AZ" & Y).Select
        End If
        Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
            False, Transpose:=False
    Application.Wait Now + TimeValue("00:00:03")
    ActiveWorkbook.Save
    ActiveWorkbook.Close
    Windows("HojaOrigen.xls").Activate
    Application.CutCopyMode = False
    mensaje = MsgBox("Los datos se han pasado correctamente.", vbInformation, "PROCESO DE DATOS")
   
    End If
   
End Sub

Deivid

Cantidad de envíos : 32
Fecha de inscripción : 20/02/2008

Volver arriba Ir abajo

Re: COPIAR Y PEGAR DIFERENTES RANGOS A LA VEZ

Mensaje por GalileoGali el Miér Abr 23, 2008 9:01 pm

Esta es la forma de fundir en una la seleccion de los tres rangos y copiar los en la otra hoja:
Hoja1.Range("D" & I & ":F" & I & ",G" & I & ":J" & I & ",L" & I & ":Q" & I).Copy Hoja2.Range("a1")

Lo que no se entiende es que queres hacer con el Selection.copy (que seria equivalente a la primera parte de la linea que esta arriba, sino le pones un destino al Copy, que queres que haga la macro con eso. la indicacion del destino tiene que estar inmediata....

_________________
GalileoGali
M.A.P. 2010-2013
Microsoft Active Professional

GalileoGali
Admin

Masculino Cantidad de envíos : 1962
Edad : 61
Ciudad - Pais : QUIROGA, Argentina
Version de Excel : 2000-2003-2007-2010
Fecha de inscripción : 24/01/2008

http://excelgali.mejorforo.net

Volver arriba Ir abajo

Re: COPIAR Y PEGAR DIFERENTES RANGOS A LA VEZ

Mensaje por damianomarsilva el Dom Abr 27, 2008 2:03 am

mirá esta posible solución a la acción de seleccionar/copiar varios rangos:
Código:
Dim r1 As Range, r2 As Range, myMultiAreaRange As Range
Set r1 = Range("A1:B2")
Set r2 = Range("C3:D4")
Set myMultiAreaRange = Union(r1, r2)
myMultiAreaRange.Copy
'creo' los rangos y luego con ellos 'hago uno solo'... para después aplicar la acción que sea necesaria.
te comento que existe la propiedad Areas del objeto Range, con un par de utilidades realmente efectivas. supongamos que por cierto motivo, debés recorrer las distintas selecciones y hacer con ellas algo distinto, dependiendo de tu trabajo; esto sería:
Código:
Dim TotalAreas as Integer
Dim X as integer
'tomo la cantidad de selecciones existentes:
TotalAreas = Selection.Areas.Count
'y las recorro:
For X = 1 To TotalAreas
    'aqui te muestro "la dirección" de cada rango, pero podés aplicar
    'la accion que necesites:
    MsgBox Selection.Areas.Item(X).Address
    'como por ejemplo, colorearlas a partir del amarillo:
    Selection.Areas.Item(X).Interior.ColorIndex = 5 + X   
Next X
el tema es interminable (como todo en excel) y dá para muchos ejemplos, espero te sirva de base para tu proyecto.

damianomarsilva
Moderador
Moderador

Cantidad de envíos : 12
Fecha de inscripción : 12/03/2008

Volver arriba Ir abajo

Re: COPIAR Y PEGAR DIFERENTES RANGOS A LA VEZ

Mensaje por Contenido patrocinado Hoy a las 12:33 pm


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 
Permisos de este foro:
No puedes responder a temas en este foro.