Saltar al contenido

Macro Hojas Nuevas cada una con fechas de los dias de mes en curso.


Recommended Posts

publicado

Hola a todos:

Mi consulta se refiere a que he leido y buscado mucho en el foro pero no encontre ninguna respuesta certera.

necesito crear o tengo un libro nuevo desde cero sin nada adentro, en un rango de celdas introduzco con un formato que la solapa de Hoja soporte: ejemplo: 09-05-2013 ya que las barras no me las admite y no me interesa en realidad. bueno volviendo... en un rango ej: P1:P31 que serian 31 dias de algun mes o 30 de otros, que ese rango me genere 31 solapas de hojas cada una con una fecha correspondiente a todos los dias que yo ya habia precargado en el rango de celdas anterior, se entiende? es como si me hiciera el calendario completo de el mes en curso en cada solapa. es posible eso? desde ya mil gracias, no subo ejemplos ya que lo necesito hacer en libros nuevos durante todo el año.

gracias.

publicado

Gracias por responder tan pronto, la formula la he probado y no me funciono con la fecha, probe con distintos formatos de celda para ver si modificando por ejemplo: 01-05-2013.. 01-May-2013... etc etc nunca funciono, debe ser que en las funciones: Fx sale siempre con este formato? 01/05/2013. probe con caracteres sencillos ubicados en A1:A10 y funciono correctamente, tambien observe que no hay un rango definido y solo funciona si ubico las cosas en A1 se entiende la explicacion? espero que si. yo necesito fechar las solapas de las hojas del mes completo. Gracias nuevamente por su atencion.

[ATTACH]38666.vB[/ATTACH]

post-84095-145877007766_thumb.jpg

publicado

El rango esta definido como columna 1: Columns(1)

Debes aplicar el formato que prefieras, por ejemplo para d-mm-yy seria:

Sub test()
Dim r As Range
For Each r In Columns(1).SpecialCells(2)
Sheets.Add().Name = Format(r.Value, "d-mm-yy")
Next
End Sub
[/CODE]

publicado

Excelente funciona aunque ingresa las fechas de manera descendente, eso no seria problema ya que de ultima la invierto en las celdas para que las genere ascendentes, ahora te la voy a complicar un poquito mas... me gustaria copiar una plantilla o una hoja que ya tengo prediseñada en cada una de esas hojas nuevas que se estan generando con las fechas. es posible o la complique mucho. se entiende? tengo una hoja Maestra la cual quiero traspasar tal cual a cada una de las nuevas hojas generadas con la fecha.

Mil gracias por tu colaboración realmente me sos de mucha ayuda ya que en excel no tengo tanta experiencia programando, por no decir casi nada.

adjunto si puedo el archivo maestro.

REPARACIONES.rarFetching info...

publicado

Para agregar las hojas al final solo hay que indicarlo:

Sub test()
Dim r As Range
For Each r In Columns(1).SpecialCells(2)
Sheets.Add(After:=Sheets(Sheets.Count)).Name = Format(r.Value, "d-mm-yy")
Next
End Sub
[/CODE]

Para la segunda parte solo copia la plantilla y renombrala, enciende la grabadora de macros, copia manulamente y generaras el codigo que despues de puublicarlo aqui mismo, te ayudaremos a mejoraralo.

publicado

Hola cui2002:

Prueba con esta modificación de la macro de Armando:

Sub test()

Range("E2:I6").Select

Selection.Copy

Dim r As Range

For Each r In Columns(1).SpecialCells(2)

Sheets.Add(After:=Sheets(Sheets.Count)).Name = Format(r.Value, "d-mm-yy")

ActiveSheet.Paste

Next

End Sub

en ella copio un rango de celdas donde se supone que esta la plantilla que quieres repetir en todas las hojas.

Andrés

publicado

Con esta ayuda me funcino perfectamente el copiado y fechado en las hoja, lo unico que no entendi es porque cuando puse como rango de copi B1:BC1 ya que en az esta el lsitado desplegabe oculto solo me copia el encabezado de las fila 1 pero puse B1:BC410 y todo salio de maravillas.

  "pepafg dijo:
Hola cui2002:

Prueba con esta modificación de la macro de Armando:

Sub test()

Range("E2:I6").Select

Selection.Copy

Dim r As Range

For Each r In Columns(1).SpecialCells(2)

Sheets.Add(After:=Sheets(Sheets.Count)).Name = Format(r.Value, "d-mm-yy")

ActiveSheet.Paste

Next

End Sub

en ella copio un rango de celdas donde se supone que esta la plantilla que quieres repetir en todas las hojas.

Andrés

Ahora con este otro, nunca me funciono y me tiro al depurador, tampoco salio nunca el inputbox preguntandome nada.

estare haciendo algo mal? yo genero un modulo nuevo para probar, no modifico el codigo de la hoja, haciendolo asi el de pepafg me funciona pero el tuyo no Armando, tampoco los anteriores. y es una buena opcion a tner en cuenta ya ue con un input dandole la cantiad me evita tener que generar fechas en un rango. :livid:

  "Armando Montes dijo:
Algo tarde pero aqui va:

Sub CopyTemplate()
For i = 1 To 5 'o InputBox("Cuantas hojas o dias")
Sheet1.Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = i & "-05-13"
Next
End Sub
[/CODE]

publicado

Hola a todos:

Esta muy bien la macro de antonio pero la limita al periodo de Mayo del 2013. Habria que añadirle variables para que fuese mas general y empezara a crear las hojas a partir del dia siguiente al momento de la activacion de la macro.

Voy a intentar modificar esos puntos, degame un poco de tiempo.

Andrés

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

  • 109 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Archivos

  • Estadísticas de descargas

    • Archivos
      188
    • Comentarios
      98
    • Revisiones
      29

    Más información sobre "Cambios en el Control Horario"
    Última descarga
    Por pegones1

    3    1

  • Crear macros Excel

  • Mensajes

    • Saludos @JSDJSD espero estes bien gracias por la solución que propuso para mi pregunta.  Tome el archivo con sus correcciones y al descargarlo verifique no posee una funcionalidad que si estaba en el archivo original de mi pregunta en concreto tiene que ver con la información que debería mostrarse en el TextBox2  de allí que:  Cuando selecciono el código y hago click sobre en el Listbox1  los datos se copian correctamente en los TextBox3 y TextBox5 pero en el TextBox2 no se copia ningun dato revisando me pude percatar que con la macros que agrego no se muestran datos en el TextBox2 a partir de la Columna "G" y cuando se suspende el funcionamiento de la Macro ComboBox1 si se muestran correctamente todos los datos en los TextBox2, 3 y 5 pero en el Listbox1 no se muestran exclusivamente los datos correspondientes al código que se selecciona en el ComboBox1,  mientras que si se suspende el funcionamiento de la Macro BuscarYCargarEnListBox los datos se mostrados en el Listbox1 corresponden exclusivamente al código que se selecciona en el ComboBox1 dichos datos se copian correctamente en los TextBox3 y TextBox5 pero en el TextBox2 no se copia ningun dato
    • Tal y como tienes tu código hace lo siguiente, que es lo que necesitas?
    • Private Sub ComboBox1_Change() Dim hoja As Worksheet Dim fila As Long Dim ultimaFila As Long Dim columnas() As Variant Dim i, ii As Integer Dim codigo As String Dim encontrado As Boolean Set hoja = ThisWorkbook.Sheets("MATRIZ1") codigo = ComboBox1.Value ' Si ComboBox1 está vacío If ComboBox1.Value = "" Then UserForm_Initialize Exit Sub End If ' Si ComboBox1 tiene un valor (código) encontrado = False With ListBox1 ' Limpiar ListBox .RowSource = "" ' Definir ColumnCount para el ListBox .ColumnCount = 6 ' 6 columnas (B, C, D, E, F, M) ' Columnas específicas: B, C, D, E, F, M (números de columna) columnas = Array(2, 3, 4, 5, 6, 13) .ColumnWidths = "70;90;90;90;90;90;0;0;0;0;0;0;0;0" .ColumnHeads = False ' Agregar la cabecera al ListBox (desde la fila 4, columnas B, C, D, E, F, M) .AddItem hoja.Cells(4, columnas(0)).Value ' Columna B For ii = 1 To UBound(columnas) .List(0, ii) = hoja.Cells(4, columnas(ii)).Value ' Añadir encabezados de las otras columnas Next ii ' Determinar última fila con datos en la columna B ultimaFila = hoja.Cells(hoja.Rows.Count, "B").End(xlUp).Row ' Recorrer desde la fila 5 hacia abajo For fila = 5 To ultimaFila If hoja.Cells(fila, 2).Value = codigo Then ' Columna B encontrado = True ' Añadir nueva fila al ListBox (empieza en la segunda fila del ListBox) .AddItem hoja.Cells(fila, columnas(0)).Value ' Columna B For i = 1 To UBound(columnas) ' Asegurarse de que se estén agregando todos los valores correctamente .List(Me.ListBox1.ListCount - 1, i) = hoja.Cells(fila, columnas(i)).Value ' Rellenar las otras columnas Next i End If Next fila End With If Not encontrado Then MsgBox "No se encontró el código en la hoja.", vbInformation End If End Sub  
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.