Excelente toda la colección de este curso. Son muy adictivos, ves un video y te vas con el que sigue y el que sigue. Felicitaciones por este excelente trabajo.
Gracias por su excelente enseñanza. Cuando sea grande quiero ser como usted
2 ปีที่แล้ว +1
Vas respondiendo a las preguntas que me van surgiendo a lo largo de cada uno de tus video. Tienes una grandísima facilidad didáctica y haces muy fácil aprender conceptos que a priori son complejos. Muchas gracias de nuevo. Estoy "Devorando" este curso y poniendo en práctica en mi día a día profesional 🙂
Una optimizacion mas puedes poner Activeworkbook.Sheets.Add(before:=Sheets(1)).Name="Concentrado".. Asi le colocas el nombre a tu hoja nueva desde el principio y ya no necesitas la ultima linea
Jejejeje ahora se ve que nos pasamos de frenada cuando en el anterior video dijimos que se podía omitir "Select", ya lo tenías preparado, eso y mas. Sergio, Gracias por tu tiempo Saludos desde España.
Tocayo buenos días, excelente video una forma muy articulada para optimizar el código, solo como comentario cuando ejecutas la macro, aun cuando le digas que no deseas hacer el proceso, es decir le dices que no al msgbox la macro hace el proceso, y lo resolví cambio el tipo de variable "Dim MsgContinuar As Boolean" a Dim MsgContinuar As Byte Saludos...
Lo que usted dice no es cierto, ya que por eso mismo Sergio colocó el Si condicional. En caso de que sea VbNot entonces se ejecuta Exit Sub, lo cual genera que se finalice el procedimiento. Saludos.
Sergio ¿Podrías validar que la variable MsgContinuar está correctamente definida como Boolean o debería ser definida como Byte? Si corro la macro y le doy a "No".... la corre de todas formas... Un saludo. PD: Veo en comentarios anteriores que esta pregunta ya fue respondida por el Sergio. Quedamos en Byte entonces. Excelente Curso!!!
Una duda y en caso que que cuando hace la selecicon del current region fueran una base de datos mas grande? se puede utiliza otro metodo que no se resize para que seleccione la ultima celda con datos?
Hola Sergio. Muchas gracias por tu valioso aporte. He aplicado particularmente lo tratado en este módulo y te cuento que al elegir la opción de no en el msgbox que consulta si se desea continuar, la agrupación de las hojas se ejecuta de todos modos. Puedes por favor darle un vistazo al código?
en el anterior video, mencionó que tendria que nombrar a la variable de msgbox como un numero, el yes corresponde al 6 y el 7 al no, a partir de ahi se podria hacer una instruccion if con esos valores para el código, espero no equivocarme
Es necesario colocar el else en la instruccion If , si no genera ninguna accion? El desplazamiento a la derecha o hacia abajo no generaría segmentación de la base de datos (copia incompleta de información, en el ejemplo del capítulo 28) si existen valores vacios en algunas celdas de filas o de celdas en la columnas?
Sergio, muchisimas gracias por compartir tus conocimientos de forma libre, estoy siguiendo tus capitulos uno a uno, en este capitulo me quedo una duda: ¿ Porque es necesario resetear los valores de rango y rango2?, porque al volver a iterar en la siguiente hoja va a asumir los valores de la siguiente hoja. Agradeceria mucho puedas absolver mi duda. Muchas gracias nuevamente...desde Perú
Muy buen ajuste del ejercicio hay que practicarlo, una duda como se puede hacer que la hoja "concentrado" si existe se elimine desde la macro??. Gracias por todos sus aportes.
Hola Sergio Excelentes todos tus aportes, gran conocimiento y gran don para la enseñanza. tengo dudas en esto: cuando vas a hacer que la macro omita mas de una hoja solamente se vuelve a poner "and" y se repite la linea de codigo para tantas hojas quieres omitir?, y tambien quiero preguntar como hacer para que una macro tenga un criterio de selección en base a una columna y sus filas, que selecione las celdas con datos + 1 sin datos, y oculte el resto de filas de la tabla. mi tabla es de 6c x10f. no se si me explico bien, espero me ayudes¡¡
Excelente video por lo que me interese en agrupar unas facturas que tengo pero están hechas con tablas por lo que al agrupar me trae su formato, donde puedo colocar la función "xlPasteValues" para que solo pegue en la hoja Concentradora sus valores...
Estimado excelente explicacion, quisiera consultarle, que hacemos si al agrupar diferentes hojas nos encontramos con hojas que se encuentran vacias, ya que alli la macro sale que hay que finalizar o depurar, porque estar omitiendo las hojas es medio complicado cuando tienes muchas hojar por omitir, agradezco de antemano su ayuda
Entonces debes una condicional con IF antes de ejecutar el codigo y puedes usar la funcion CountA de worksheetsfunction para determinar si la hoja tiene datos o esta vacia
Hola Sergio, Excelente material, estoy aprendiendo mucho. Pero no entendi porque colocas en el If Sheets (i).... etc un AND???? No seria un OR??? Con el And se deben cumplir las dos condiciones al mismo tiempo: lo cual no es posible, al mismo tiempo. Gracias, ojala me contestes
Hola Mª Jose, fíjate que la condición es que sea diferente( es decir ) para que se realice el bucle. Si pones un OR, en cuanto pase por una hoja que no interesa(por ejemplo "HojaPrueba") la lógica del programa te dirá si es diferente de la hoja "EXCELeINFO" o es diferente de la hoja "HojaPrueba", verás que se cumple la primera condición(es decir diferente de la hoja "EXCELeINFO") y por tanto sigue el código interior del bucle.
Hola Sergio, creo que mi comentario del video de ayer no paso como quería, tengo duda, en la linea siguiente "iIf MsgContinuar =vbNo Then Exit Sub", yo entiendo que si le dices que no, ya no se ejecuta la macro, pero tanto en mi archivo como el tuyo si la ejecuta, porque? Gracias, saludos
Si usas Dim Rango, la variable por defecto queda como Variant. Sį quieres que queden en una línea usa; Dim rango as Ranger: Dim rango2 as Ranger Ó Dim Rango, Rango2
Hola Sergio, excelente aportación. Tal vez se podría incorporar un temporizador en las dos macros de tal manera que se pueda visualizar la optimización de los tiempos. Saludos
Lo eficiente no necesariamente es sinónimo de menor tiempo. En ese sentido Sergio se refiere a más eficiente en términos de modo de ejecución del código.
Hola Segio, me gustaria saber donde está el error en esta linea de codigo. Set Rango_Origen = Sheets(i).Range (Cells(2, 1), Cells( UFila_Origen, Cuenta_Columnas)) las variables UFila_Origen y Cuenta_Columnas están declaradas como Integer y Rango_Origen como Range Pretendo seleccionar una región con unas variables pero, a la hora de copiar este rango para pegarlo en la otra hoja, me da error. Si me posiciono encima de la variable Set Rango_Origen, aparece en el cursor la etiqueta Rango_Origen = Nothing. Todo esto es simplemente por evitarme el Resize, cuestión de cabezoneria e intentar sacar el ejercicio de forma diferente. Practicar para aprender. Muchas gracias y adelante con el curso. Salvador
Sergio, junto con saludarte y agradecerte compartir tu conocimiento (me ha servido mucho en lo laboral). Quisiera hacerte una pregunta: Por qué debemos reiniciar Rangos? No me convencía, así que lo probé y resulta que me funciona igual sin tener que reiniciar. Saludos desde Chile y gracias de nuevo
Lo primero darte las gracias por ti tiempo y tus buenos videos Me gustaria que me ayudases con mi problema: al momento de cerrar un formulario se me cierra el excel y vuelve a reiniciarse
Hola Sergio, tengo problemas con esta macro. Igual que en la del capítulo anterior cuando digo que no deseo ejecutarla con el MsgBox no cumple End Sub y otra cosa, me pega los datos salvo los de la última columna, el encabezado sí, pero los datos que están por debajo del último encabezado no. Lo he repasado varias veces, contrastándolo con tu código, y soy incapaz de localizar el error. Un saludo,
He encontrado el fallo de la columna que no copiaba. Lo he resuelto de esta manera: Rango.Offset(1, 0).Resize(CuentaF, CuentaC).Copy Sheets(1).Cells(CuentaF2 + 1, 1). No he restado 1 a CuentaF de Resize. De todas formas, se sigue ejecutando la macro aunque al preguntarme le diga que no. Me pasaba en el capítulo 27 y también en el 28.
Hola Sergio, quiero que las hojas a copiar las seleccione a partir del nombre parcial de "Sucursal". No consigo hacerlo. Quise usar caracteres comodin o el comando xlpart, pero no lo se hacer, podrias ayudarme?
Es muy complicado saber de antemano cuantas y cuales variables utilizar. Me parece que debemos iniciar el procedimiento y en base ala necesidad ir definiendo variables. Creo suponer que vos las sabes de antemano por haber preparado previamente la macro. Es así?
Excelente, Tengo hartos archivos, en cada archivo hay una hoja. Las hojas tienen el mismo encabezado. Y quiero tener un archivo con todos los datos, como se puede hacer? Gracias
Es exactamente lo que yo pienso, probé sin liberar esas dos variables y dan los mismos resultados. A mi parecer, quizás es para mayor seguridad pero no sé.
Else 'Nada Pero me sale: "Se ha rpoducido el error (6): desbordameinto" Estoy tratando de consolidar filas de 31 hojas (una diaria) con aprox. de 1600 filas cada una. Espero me puedan ayudar PD Soy principiante en tus cursos
Yupii!!!! :) consegui corregir el error cambiando acá "Integer" por "Long" Sub AgruparHojas() Dim Cuenta As Long Dim i As Long Dim MsgContinuar As Boolean Dim Rango As Range Dim Rango2 As Range Dim CuentaF As Long Dim CuentaF2 As Long Dim CuentaC As Long
Option Explicit Public Cuenta As Integer Public I As Integer Public MsgContinuar As Boolean Public Rango As Range Public Rango2 As Range Public CuentaF As Integer Public CuentaF2 As Integer Public CuentaC As Integer Sub Ventas_2018() MsgContinuar = MsgBox("Se Agruparán Todos Los Meses" + _ vbNewLine + vbNewLine + "Desea Continuar?", vbYesNo + vbQuestion, "Alfonso Marín") If MsgContinuar = vbNo Then Exit Sub ActiveWorkbook.Sheets.Add Before:=Sheets(1) Sheets(3).Range("A9:L9").Copy Sheets(1).Range("A9") Sheets(1).Range("A10").Select Cuenta = Sheets.Count For I = 3 To Cuenta If Sheets(I).Name "TDENE" And Sheets(I).Name "TDFEB" And Sheets(I).Name "TDMAR" And _ Sheets(I).Name "TDABR" And Sheets(I).Name "TDMAY" And Sheets(I).Name "TDJUN" And _ Sheets(I).Name "TDJUL" And Sheets(I).Name "TDAGO" And Sheets(I).Name "TDSEP" And _ Sheets(I).Name "TDOCT" And Sheets(I).Name "TDNOV" And Sheets(I).Name "TDDIC" And _ Sheets(I).Name "TOTAL" And Sheets(I).Name Then Set Rango = Sheets(I).Range("A10").CurrentRegion CuentaF = Rango.Rows.Count CuentaC = Rango.Columns.Count Rango.Offset(1, 0).Resize(CuentaF - 1, CuentaC).Copy Sheets(1).Cells(CuentaF2 + 1, 1)
Set Rango = Nothing Set Rango2 = Nothing Else End If Next I Application.CutCopyMode = False Cells.EntireColumn.AutoFit End Sub Hola Sergio, te comento desde la provincia de Alicante (España). Quiero unir todos los mese del año excluyendo las tabas dinámicas de cada mes, a la hora de ejecutar la macro me dice "ERROR 12 EN TIEMPO DE EJECUCION. NO COINCIDEN LOS TIPOS.", me estoy volviendo LOCO y no consigo el porqué. Me podrías ayudar...o bien alguno de los compañero de éste Foro. Muchas gracias de antemano.
Excelente vídeo de cómo optimizar algo que ya funciona.... me encanta este curso Sergio!!!! Sigue así.
Felicitaciones maestro, es usted un genio, saludos desde no Honduras
Excelente toda la colección de este curso. Son muy adictivos, ves un video y te vas con el que sigue y el que sigue. Felicitaciones por este excelente trabajo.
Excelente, he podido notar que tomar en cuentas los comentarios, sugerencias de las personas para optimizar su trabajo. Sigamos aprendiendo, gracias.
Muy bueno Sergio sigue adelante cuentas con capacidad de hacer compreder...los capirulos.....
Gracias por su excelente enseñanza. Cuando sea grande quiero ser como usted
Vas respondiendo a las preguntas que me van surgiendo a lo largo de cada uno de tus video. Tienes una grandísima facilidad didáctica y haces muy fácil aprender conceptos que a priori son complejos. Muchas gracias de nuevo. Estoy "Devorando" este curso y poniendo en práctica en mi día a día profesional 🙂
¡Gracias!
Me gustó mucho. Gracias 🗻🏟
De corazón muchas gracias por este gran curso!!!,eres de los mejores profesores que he conocido :) te cuidas don sergio y un saludo desde colombia
¡Bravo!. No sólo por la optimización de la macro, sobre todo por ser capaz de hacernos fácil la comprensión de ella
Me vi todo el curso, muchas gracias, el mejor.
Realmente un explicación impecable. Me está sirviendo de gran ayuda. Saludos desde España.
Excelente clase Gracias por enseñarnos
EXCELENTE CURSO, APLIQUE LA FUNCION CURRENTREGION VISTA ENTERIORMENTE ME DI CUENTA QUE SELECCIONA TAMBIEN LOS ENCABEZADOS SALUDOS.
Mis respeto, realmente es una extraordinaria aportación. Que DIOS te bendiga.
Una optimizacion mas puedes poner Activeworkbook.Sheets.Add(before:=Sheets(1)).Name="Concentrado".. Asi le colocas el nombre a tu hoja nueva desde el principio y ya no necesitas la ultima linea
Excelente maestro mil gracias por compartir sus conocimientos
Excelente video. Muchas gracias
Muchas gracias por todo el conocimiento Profesor!, saludos desde Cajamarca, Peru.!
Que gran video,con esto se pulira más el trabajo que ya tenía echo. Gracias por el aporte.
Jejejeje ahora se ve que nos pasamos de frenada cuando en el anterior video dijimos que se podía omitir "Select", ya lo tenías preparado, eso y mas.
Sergio, Gracias por tu tiempo
Saludos desde España.
Excelente! Muchas gracias por la dedicación, ya tienes un suscriptor.
Saludos.
Gracias!
Tocayo buenos días, excelente video una forma muy articulada para optimizar el código, solo como comentario cuando ejecutas la macro, aun cuando le digas que no deseas hacer el proceso, es decir le dices que no al msgbox la macro hace el proceso, y lo resolví cambio el tipo de variable "Dim MsgContinuar As Boolean" a Dim MsgContinuar As Byte
Saludos...
Cierto, ya que lo que regresa MsgBox es un número, 6 para vbYes y 7 para vbNo. Saludos.
Lo podemos checar con un "MsgBox MsgContinuar"...
Lo que usted dice no es cierto, ya que por eso mismo Sergio colocó el Si condicional. En caso de que sea VbNot entonces se ejecuta Exit Sub, lo cual genera que se finalice el procedimiento. Saludos.
Siempre aprendiendo con tu gran voluntad gracias por eso
Muy buen video, ahora me vinieron muchas ideas a cuales macros aplicar esto! Gracias!
Excelente explicación Sergio, gracias por compartir!
Hola Sergio eatoy aprendiendo mucho con usted. Una pregunta ta hay alguien a macro para insertar un video desde TH-cam a una hoja de exce.??l.
Sergio ¿Podrías validar que la variable MsgContinuar está correctamente definida como Boolean o debería ser definida como Byte? Si corro la macro y le doy a "No".... la corre de todas formas... Un saludo.
PD: Veo en comentarios anteriores que esta pregunta ya fue respondida por el Sergio. Quedamos en Byte entonces. Excelente Curso!!!
Una duda y en caso que que cuando hace la selecicon del current region fueran una base de datos mas grande? se puede utiliza otro metodo que no se resize para que seleccione la ultima celda con datos?
Que bien explicas amigo!
Excelente!!!, mucho mejor, sin palabras. Gracias...
genial Sergio eso necesitaba saberlo gracias por esta entrega sal2 y pulgar arriba..
Excelente vídeo Sergio. Muchas gracias.
Hola Sergio. Muchas gracias por tu valioso aporte. He aplicado particularmente lo tratado en este módulo y te cuento que al elegir la opción de no en el msgbox que consulta si se desea continuar, la agrupación de las hojas se ejecuta de todos modos. Puedes por favor darle un vistazo al código?
en el anterior video, mencionó que tendria que nombrar a la variable de msgbox como un numero, el yes corresponde al 6 y el 7 al no, a partir de ahi se podria hacer una instruccion if con esos valores para el código, espero no equivocarme
Es necesario colocar el else en la instruccion If , si no genera ninguna accion?
El desplazamiento a la derecha o hacia abajo no generaría segmentación de la base de datos (copia incompleta de información, en el ejemplo del capítulo 28)
si existen valores vacios en algunas celdas de filas o de celdas en la columnas?
Genial, Sergio. Gracias.
Sergio, muchisimas gracias por compartir tus conocimientos de forma libre, estoy siguiendo tus capitulos uno a uno, en este capitulo me quedo una duda: ¿ Porque es necesario resetear los valores de rango y rango2?, porque al volver a iterar en la siguiente hoja va a asumir los valores de la siguiente hoja. Agradeceria mucho puedas absolver mi duda. Muchas gracias nuevamente...desde Perú
Muy buen ajuste del ejercicio hay que practicarlo, una duda como se puede hacer que la hoja "concentrado" si existe se elimine desde la macro??. Gracias por todos sus aportes.
Excelentes videos. Muchas gracias
EXCELENTE!!!! nuevamente gracias por compartir tus conocimientos....!
Hola Sergio Excelentes todos tus aportes, gran conocimiento y gran don para la enseñanza. tengo dudas en esto: cuando vas a hacer que la macro omita mas de una hoja solamente se vuelve a poner "and" y se repite la linea de codigo para tantas hojas quieres omitir?, y tambien quiero preguntar como hacer para que una macro tenga un criterio de selección en base a una columna y sus filas, que selecione las celdas con datos + 1 sin datos, y oculte el resto de filas de la tabla. mi tabla es de 6c x10f. no se si me explico bien, espero me ayudes¡¡
Muchas Graciassss!!!
exccelente curso
Excelente video por lo que me interese en agrupar unas facturas que tengo pero están hechas con tablas por lo que al agrupar me trae su formato, donde puedo colocar la función "xlPasteValues" para que solo pegue en la hoja Concentradora sus valores...
Excelente. Pero pudiera ayudarme pq necesito que ademas me pegue el nombre de la hoja a la que correponde cada fila. Saludos
Estimado excelente explicacion, quisiera consultarle, que hacemos si al agrupar diferentes hojas nos encontramos con hojas que se encuentran vacias, ya que alli la macro sale que hay que finalizar o depurar, porque estar omitiendo las hojas es medio complicado cuando tienes muchas hojar por omitir, agradezco de antemano su ayuda
Entonces debes una condicional con IF antes de ejecutar el codigo y puedes usar la funcion CountA de worksheetsfunction para determinar si la hoja tiene datos o esta vacia
Gracias Sergio. Excelente!
De nuevo muchas muchas gracias.
Hola Sergio, Excelente material, estoy aprendiendo mucho.
Pero no entendi porque colocas en el If Sheets (i).... etc un AND???? No seria un OR??? Con el And se deben cumplir las dos condiciones al mismo tiempo: lo cual no es posible, al mismo tiempo.
Gracias, ojala me contestes
Hola Mª Jose, fíjate que la condición es que sea diferente( es decir ) para que se realice el bucle. Si pones un OR, en cuanto pase por una hoja que no interesa(por ejemplo "HojaPrueba") la lógica del programa te dirá si es diferente de la hoja "EXCELeINFO" o es diferente de la hoja "HojaPrueba", verás que se cumple la primera condición(es decir diferente de la hoja "EXCELeINFO") y por tanto sigue el código interior del bucle.
Excelente Sergio, nuevamente comento que la declaración de MsgContinuar debe ser Byte, pues con Boolean no responde a la condición, saludos
Tienes razón Rafael. Gracias por comentar.
@@SergioAlejandroCampos Gracias a ti, me dió un poco de pena hacer ese comentario a un Maestro como tú, estoy aprendiendo mucho, Gracias Sergio
Uff Sergio reprobe mi curso de programar excel porque no me salian las funciones. Que me recomiendan?
Recomiendo que sigas todo el curso desde cero.
Hola Sergio, tengo una duda. En vez del and se podría utilizar el or?
no funcionaria
Gracias gracias
Con la función ARRAY también funciona.
Podrías probar con Ctrl+SHIFT+AV PAG, eso también es agrupar.
Hola Sergio, creo que mi comentario del video de ayer no paso como quería, tengo duda, en la linea siguiente "iIf MsgContinuar =vbNo Then Exit Sub", yo entiendo que si le dices que no, ya no se ejecuta la macro, pero tanto en mi archivo como el tuyo si la ejecuta, porque?
Gracias, saludos
La variable está defnida como Boolean (V o F) debiendo estar definida como Byte (1,2,3...)
Sergio buen día, se puede dejar en una sola linea las variable Dim Rango y Dim Rango2 sabiendo que son del mismo tipo? y como?, Gracias
Si usas Dim Rango, la variable por defecto queda como Variant. Sį quieres que queden en una línea usa;
Dim rango as Ranger: Dim rango2 as Ranger
Ó
Dim Rango, Rango2
@@SergioAlejandroCampos Está última tiene que ser con Variant, cierto?
Sí, al no definirle un tipo, se consideran Variant por default.
Hola Sergio, excelente aportación. Tal vez se podría incorporar un temporizador en las dos macros de tal manera que se pueda visualizar la optimización de los tiempos. Saludos
Lo eficiente no necesariamente es sinónimo de menor tiempo. En ese sentido Sergio se refiere a más eficiente en términos de modo de ejecución del código.
gracias maestro
Hola Segio, me gustaria saber donde está el error en esta linea de codigo.
Set Rango_Origen = Sheets(i).Range (Cells(2, 1), Cells( UFila_Origen, Cuenta_Columnas))
las variables UFila_Origen y Cuenta_Columnas están declaradas como Integer y Rango_Origen como Range
Pretendo seleccionar una región con unas variables pero, a la hora de copiar este rango para pegarlo en la otra hoja, me da error. Si me posiciono encima de la variable Set Rango_Origen, aparece en el cursor la etiqueta Rango_Origen = Nothing.
Todo esto es simplemente por evitarme el Resize, cuestión de cabezoneria e intentar sacar el ejercicio de forma diferente.
Practicar para aprender.
Muchas gracias y adelante con el curso.
Salvador
Sergio, junto con saludarte y agradecerte compartir tu conocimiento (me ha servido mucho en lo laboral). Quisiera hacerte una pregunta: Por qué debemos reiniciar Rangos? No me convencía, así que lo probé y resulta que me funciona igual sin tener que reiniciar.
Saludos desde Chile y gracias de nuevo
Lorenzo: igualmente me funciono sin tener que reiniciar. Saludos y gracias al Maestro por su gran aporte.
Duda, cómo puedo usar ese código sin usar las ocultas? O mejor uso la del video anterior?
Lo primero darte las gracias por ti tiempo y tus buenos videos
Me gustaria que me ayudases con mi problema: al momento de cerrar un formulario se me cierra el excel y vuelve a reiniciarse
Hola Sergio, tengo problemas con esta macro. Igual que en la del capítulo anterior cuando digo que no deseo ejecutarla con el MsgBox no cumple End Sub y otra cosa, me pega los datos salvo los de la última columna, el encabezado sí, pero los datos que están por debajo del último encabezado no. Lo he repasado varias veces, contrastándolo con tu código, y soy incapaz de localizar el error. Un saludo,
He encontrado el fallo de la columna que no copiaba. Lo he resuelto de esta manera: Rango.Offset(1, 0).Resize(CuentaF, CuentaC).Copy Sheets(1).Cells(CuentaF2 + 1, 1). No he restado 1 a CuentaF de Resize.
De todas formas, se sigue ejecutando la macro aunque al preguntarme le diga que no. Me pasaba en el capítulo 27 y también en el 28.
Estas cabron llevaste las variables a otro nivel muy buen video
Qué bueno que te gustó el video.
Como agrupar pero sin que se repitan loa valores de ciertas columnas
Hola Sergio, quiero que las hojas a copiar las seleccione a partir del nombre parcial de "Sucursal". No consigo hacerlo. Quise usar caracteres comodin o el comando xlpart, pero no lo se hacer, podrias ayudarme?
Ya lo consegui con la funcion Mid. La linea quedo asi: If Mid(Sheets(i).Name, 1, 8) = "Sucursal" Then
esto selecciona todas las hojas cuyos nombres empiecen con "Sucursal" y obvia todas las demás
Es muy complicado saber de antemano cuantas y cuales variables utilizar. Me parece que debemos iniciar el procedimiento y en base ala necesidad ir definiendo variables. Creo suponer que vos las sabes de antemano por haber preparado previamente la macro. Es así?
Claro! El ejercicio ya estaba probado.
Excelente, Tengo hartos archivos, en cada archivo hay una hoja. Las hojas tienen el mismo encabezado. Y quiero tener un archivo con todos los datos, como se puede hacer? Gracias
Porque poner Nothing a rango y rango2 ? el ciclo no termina por si sola hasta que recorra las demas hojas ?
Es exactamente lo que yo pienso, probé sin liberar esas dos variables y dan los mismos resultados. A mi parecer, quizás es para mayor seguridad pero no sé.
Y si la hoja concentrado ya existía?
Me pueden apoyar estoy en la sección de la macro siguiente: Cuenta = Sheets.Count
For i = 15 To Cuenta
If Sheets(i).Name "EXCELeINFO" And Sheets(i).Name "HojaPrueba" Then
Set Rango = Sheets(i).Range("A1").CurrentRegion
CuentaF = Rango.Rows.Count
CuentaC = Rango.Columns.Count
Set Rango2 = Sheets(1).Range("A1").CurrentRegion
CuentaF2 = Rango2.Rows.Count
Rango.Offset(1, 0).Resize(CuentaF - 1, CuentaC).Copy Sheets(1).Cells(CuentaF2 + 1, 1)
Set Rango = Nothing
Set Rango2 = Nothing
Else
'Nada
Pero me sale: "Se ha rpoducido el error (6): desbordameinto"
Estoy tratando de consolidar filas de 31 hojas (una diaria) con aprox. de 1600 filas cada una.
Espero me puedan ayudar
PD Soy principiante en tus cursos
Yupii!!!! :) consegui corregir el error cambiando acá "Integer" por "Long"
Sub AgruparHojas()
Dim Cuenta As Long
Dim i As Long
Dim MsgContinuar As Boolean
Dim Rango As Range
Dim Rango2 As Range
Dim CuentaF As Long
Dim CuentaF2 As Long
Dim CuentaC As Long
Option Explicit
Public Cuenta As Integer
Public I As Integer
Public MsgContinuar As Boolean
Public Rango As Range
Public Rango2 As Range
Public CuentaF As Integer
Public CuentaF2 As Integer
Public CuentaC As Integer
Sub Ventas_2018()
MsgContinuar = MsgBox("Se Agruparán Todos Los Meses" + _
vbNewLine + vbNewLine + "Desea Continuar?", vbYesNo + vbQuestion, "Alfonso Marín")
If MsgContinuar = vbNo Then Exit Sub
ActiveWorkbook.Sheets.Add Before:=Sheets(1)
Sheets(3).Range("A9:L9").Copy Sheets(1).Range("A9")
Sheets(1).Range("A10").Select
Cuenta = Sheets.Count
For I = 3 To Cuenta
If Sheets(I).Name "TDENE" And Sheets(I).Name "TDFEB" And Sheets(I).Name "TDMAR" And _
Sheets(I).Name "TDABR" And Sheets(I).Name "TDMAY" And Sheets(I).Name "TDJUN" And _
Sheets(I).Name "TDJUL" And Sheets(I).Name "TDAGO" And Sheets(I).Name "TDSEP" And _
Sheets(I).Name "TDOCT" And Sheets(I).Name "TDNOV" And Sheets(I).Name "TDDIC" And _
Sheets(I).Name "TOTAL" And Sheets(I).Name Then
Set Rango = Sheets(I).Range("A10").CurrentRegion
CuentaF = Rango.Rows.Count
CuentaC = Rango.Columns.Count
Rango.Offset(1, 0).Resize(CuentaF - 1, CuentaC).Copy Sheets(1).Cells(CuentaF2 + 1, 1)
Set Rango = Nothing
Set Rango2 = Nothing
Else
End If
Next I
Application.CutCopyMode = False
Cells.EntireColumn.AutoFit
End Sub
Hola Sergio, te comento desde la provincia de Alicante (España). Quiero unir todos los mese del año excluyendo las tabas dinámicas de cada mes, a la hora de ejecutar la macro me dice "ERROR 12 EN TIEMPO DE EJECUCION. NO COINCIDEN LOS TIPOS.", me estoy volviendo LOCO y no consigo el porqué.
Me podrías ayudar...o bien alguno de los compañero de éste Foro. Muchas gracias de antemano.
👍👍👌👌🦾🦾🤗🤗✔✔👀👀😎😎🍺🍺🍺🍺🍺🍺
Gracias Sergio, genial.
Ånimo!! Hoy sale el capítulo 65.