No puedo registrar más de 30k renglones, sale error de desbordamiento (Error 6)

Tengo el siguiente código, que de un formulario pasa los datos a una tabla. El problema es que después de aprox. 35,000 renglones registrados, al querer seguir registrando me aparece el error de desbordamiento (Error 6). Comparto código, si de favor alguien me puede decir como puedo solucionarlo y seguir registrando en más renglones (de preferencia pueda llegar hasta 80K en mi base de datos de los registros

Private Sub CommandButton1_Click()
If CBHora <> "" Then

Application.ScreenUpdating = False

Sheets("Database").Select

Dim CeldaInicial As Variant

Dim col As Integer
Dim fila As Integer

CeldaInicial = "A1"

Set CeldaInicial = Range(CeldaInicial)
col = CeldaInicial.Column
'Busca cuál es la última fila
If CeldaInicial.Offset(1, 0).Value = "" Then
fila = 2
Else
fila = CeldaInicial.End(xlDown).Row + 1
End If
Cells(fila, col).Value = Sheets("Controles").Range("E4").Value 'Fecha
Cells(fila, col + 1).Value = Sheets("Controles").Range("J4").Value 'Letra
Cells(fila, col + 2).Value = CBHora.Value
Cells(fila, col + 3).Value = Sheets("Controles").Range("H2").Value

Sheets("Producción").Select
Application.ScreenUpdating = True

End If

End Sub

3 Respuestas

Respuesta

Aunque tampoco es mi especialización el Excel le dejo la solución. El error está en la definición de Dim fila As Integer.

Le dejo el código

Private Sub CommandButton1_Click()
If CBHora <> "" Then
    Application.ScreenUpdating = False
    Sheets("Database").Select
    ' Se cambia 'fila' de Integer a Long para soportar más de 32767 filas
    Dim CeldaInicial As Variant
    Dim col As Integer 
    Dim fila As Long    ' <--- ¡SOLUCIÓN!
    CeldaInicial = "A1"
    Set CeldaInicial = Range(CeldaInicial)
    col = CeldaInicial.Column
    'Busca cuál es la última fila
    If CeldaInicial.Offset(1, 0).Value = "" Then
        fila = 2
    Else
        ' Se recomienda una forma más robusta de encontrar la última fila
        ' La línea original: fila = CeldaInicial.End(xlDown).Row + 1
        ' Esto falla si hay saltos de renglones vacíos. 
        ' La siguiente línea es mejor para encontrar la última fila *usada* en la columna 'col':
        fila = Cells(Rows.Count, col).End(xlUp).Row + 1
    End If
    ' Registro de datos
    Cells(fila, col).Value = Sheets("Controles").Range("E4").Value 'Fecha
    Cells(fila, col + 1).Value = Sheets("Controles").Range("J4").Value 'Letra
    Cells(fila, col + 2).Value = CBHora.Value
    Cells(fila, col + 3).Value = Sheets("Controles").Range("H2").Value
    Sheets("Producción").Select
    Application.ScreenUpdating = True
End If
End Sub

Nota Adicional: He incluido una mejora en la forma en que buscas la última fila:

fila = Cells(Rows.Count, col).End(xlUp).Row + 1

Esta línea es más confiable que CeldaInicial.End(xlDown).Row + 1, ya que encuentra la última celda con datos incluso si hay celdas vacías en medio de tus registros, evitando que el código escriba sobre la siguiente línea vacía en lugar de la última línea

Con este cambio, podrás registrar tus 80,000 registros sin problemas de desbordamiento.

Respuesta

I. Hola Diana Edith, no soy conocedor de Excel sólo habitual de la comunidad, pero tengo interés en este ámbito y deseaba trasladarle la información que vi relativa a esta operación por si pudiese serle de alguna utilidad mientras le atiende una persona conocedora de primera mano, a la que si fuese necesario podríamos llamar.

Le ruego me disculpe por todas las molestias de tanta lectura y la manera de responderle. Ánimo.


https://www-graytechnical-com.translate.goog/blog/resolving-run-time-error-6-overflow-in-excel-vba-macros/?_x_tr_sl=en&_x_tr_tl=es&_x_tr_hl=es&_x_tr_pto=sc 

https://blog.silverpc.hu/2025/09/26/alerta-soluciona-el-error-6-en-tiempo-de-ejecucion-desbordamiento-de-una-vez-por-todas/ 

https://www.auditexcel.co.za/blog/overflow-error-in-excel-powerquery/?srsltid=AfmBOooJrgjUknBi6-9-XbDjTOawQ2vkajULRP3HGEjOpjvgZKVAe6LP 

https://www.vbforums.com/showthread.php?396301-RESOLVED-runtime-error-6-overflow 

https://www.vbforums.com/showthread.php?877167-Strange-Run-time-error-6-Overflow 

https://www.mrexcel.com/board/threads/overflow-error-occurs-quicky.1072986/ 

https://www-exceldemy-com.translate.goog/how-to-solve-overflow-error-in-vba/?_x_tr_sl=en&_x_tr_tl=es&_x_tr_hl=es&_x_tr_pto=sc 

https://www.quora.com/How-can-I-solve-the-VBA-overflow-caused-by-the-32765-limit

https://access-global.net/vba-error-6-desbordamiento/ 

https://www.youtube.com/watch?v=peoGRuA-p50 

https://stackoverflow.com/questions/10558540/vba-macro-crashes-after-32000-rows 

https://superuser-com.translate.goog/questions/1109754/vba-find-last-row-in-very-large-spreadsheet-overflow-error?_x_tr_sl=en&_x_tr_tl=es&_x_tr_hl=es&_x_tr_pto=sc 

https://www.mrexcel.com/board/threads/issue-with-vb-script-within-excel-run-time-error-6-overflow.1206905/ 

https://www.reddit.com/r/excel/comments/1fo8yt8/how_can_i_fit_more_than_30000_charactersstrings/ 

https://stackoverflow.com/questions/64042758/macro-that-only-runs-on-30k-rows-but-no-more 

https://eileenslounge.com/viewtopic.php?style=1&t=12839 

https://www.vbforums.com/showthread.php?518655-Overflow-error-in-Excel-macro 

https://www.youtube.com/watch?v=5u7bpysO3FQ 

https://www.youtube.com/watch?v=KP2s6IkFIuc 

https://www.reddit.com/r/excel/comments/17xp2zf/why_am_i_getting_a_spill_error_from_this_formula/?tl=es-es 

https://www.excelforum.com/excel-programming-vba-macros/849135-help-with-overflow-error-runtime-6-when-using-specialcells-xlcelltypevisible-count.html

https://stackoverflow.com/questions/21556506/getting-overflow-error-when-i-used-the-function-activesheet-usedrange-rows-cou 

https://forum-ozgrid-com.translate.goog/forum/index.php?thread/1229326-run-time-error-6-overflow/&_x_tr_sl=en&_x_tr_tl=es&_x_tr_hl=es&_x_tr_pto=sc 

https://www.reddit.com/r/excel/comments/eolrvj/excel_2016_vba_overflow_error_on_rangerowscount/ 

https://www.reddit.com/r/vba/comments/jeovsx/have_i_hit_max_array_size/ 

https://community.microstrategy.com/s/article/KB243112-In-MicroStrategy-9-x-10-x-documents-with-large-amount?language=en_US 

Respuesta

Dina, si bien el Excel no es lo mío, por darte una idea. Cuando defines una variable como Integer trabaja en el intervalo desde -32 768 hasta 32 767 (no admite fracciones). Por el contrario, si la variable la defines, por ejemplo, como Long ( entero largo) trabaja desde -2 147 483 648 hasta 2 147 483 647 (no admite fracciones).

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas