none
macro que me genere un numero consecutivo en una misma celda pero en diferente hojas de excel RRS feed

  • Pregunta

  • Hola, necesito hacer una macro que me genere un numero consecutivo en una misma celda pero en diferente hojas de excel, es decir en hoja1 tengo 001 y al agragar hoja2 me aparezca 002.

    De antemano gracias!

    lunes, 26 de septiembre de 2011 18:38

Respuestas

  • Lo único que se me ocurre es recorrer todas las hojas en búsqueda del número mas alto, y luego insertarlo en la hoja nueva:

     

    En un módulo pon lo siguiente:

     

    Public Function Autonumerico(strRango As String) As Long
    Dim Hoja As Worksheet, _
        lngMayor As Long

    For Each Hoja In ThisWorkbook.Sheets
       If Hoja.Range(strRango) > lngMayor Then lngMayor = Hoja.Range(strRango)
    Next Hoja
    Autonumerico = lngMayor + 1
    End Function

     

    y en el módulo de Thisworkbook, en su evento al crear una nueva hoja:

     

    Private Sub Workbook_NewSheet(ByVal Sh As Object)
    ActiveSheet.Range("A1") = Autonumerico("A1")
    End Sub

    Evidentemente cambia A1 por lo que proceda.


    Saludos a todos desde Huelva
    http://www.mvp-access.es/emilio/
    • Propuesto como respuesta Uriel Almendra lunes, 22 de abril de 2013 15:13
    • Marcado como respuesta Uriel Almendra lunes, 22 de abril de 2013 15:13
    martes, 27 de septiembre de 2011 18:05

Todas las respuestas

  • Hola!

    supongamos que en A1 de la Hoja 1 tienes un 1, si en A1 de la Hoja2 pones =Hoja1!A1+1, tendrás un 2, ¿es eso lo que quieres


    Saludos a todos desde Huelva
    http://www.mvp-access.es/emilio/
    lunes, 26 de septiembre de 2011 18:54
  • Hola!

    Si, pero en automático. Es decir tengo una macro que me guarda y da nueva hoja, bueno al crearse esa nueva hoja mi número ya este en número 2.

    Tengo esta macro y me funciona, pero al ejecutar la macro y yo lo quiero en automático, se puede?

    Gracias!

     

    Sub Libro()

    Range("F2").Select

    ActiveCell.FormulaR1C1 = Range("F2").Value + 1

    End Sub

    lunes, 26 de septiembre de 2011 21:34
  • Lo único que se me ocurre es recorrer todas las hojas en búsqueda del número mas alto, y luego insertarlo en la hoja nueva:

     

    En un módulo pon lo siguiente:

     

    Public Function Autonumerico(strRango As String) As Long
    Dim Hoja As Worksheet, _
        lngMayor As Long

    For Each Hoja In ThisWorkbook.Sheets
       If Hoja.Range(strRango) > lngMayor Then lngMayor = Hoja.Range(strRango)
    Next Hoja
    Autonumerico = lngMayor + 1
    End Function

     

    y en el módulo de Thisworkbook, en su evento al crear una nueva hoja:

     

    Private Sub Workbook_NewSheet(ByVal Sh As Object)
    ActiveSheet.Range("A1") = Autonumerico("A1")
    End Sub

    Evidentemente cambia A1 por lo que proceda.


    Saludos a todos desde Huelva
    http://www.mvp-access.es/emilio/
    • Propuesto como respuesta Uriel Almendra lunes, 22 de abril de 2013 15:13
    • Marcado como respuesta Uriel Almendra lunes, 22 de abril de 2013 15:13
    martes, 27 de septiembre de 2011 18:05
  • Gracias Emilio, ya lo logré hacer. Saludos desde México!
    martes, 27 de septiembre de 2011 22:17
  • Hola! 

    Como lograste hacer la macro? estoy intentando hacer una exactamente igual y no he podido

    lunes, 3 de julio de 2017 16:28