He creado una macro con algo de ayuda con la gente maravillosa de este sitio web que determina si las columnas en este Excel están llenas y luego las separa para un proyecto más grande. mi problema es que el código simplemente falla (se carga hasta que hago clic en el que me dicen que excel no responde) excel. ¿podría obtener ayuda?
Option Explicit Public Sub emptysinder() Dim i As Long Dim r As Range Dim num As Integer For i = 1 To 9 Set r = Range("F1").Offset(0, i - 1).Resize(200, 1) If IsAllEmpty(r) Then num = num + 1 Debug.Print "Range " & r.Address & " is all empty." & num ElseIf IsAnyEmpty(r) Then Debug.Print "Range " & r.Address & " is partially empty." Else Debug.Print "Range " & r.Address & " filled." End If Next i split (num) End Sub Public Function IsAllEmpty(ByVal r_range As Range) As Boolean Dim Item As Range For Each Item In r_range If Not IsEmpty(Item) Then IsAllEmpty = False Exit Function End If Next IsAllEmpty = True End Function Public Function IsAnyEmpty(ByVal r_range As Range) As Boolean Dim Item As Range For Each Item In r_range If IsEmpty(Item) Then IsAnyEmpty = True Exit Function End If Next IsAnyEmpty = False End Function Public Function split(i As Integer) Dim sheet As Integer Dim colOpt As Integer sheet = 14 colOpt = sheet - i Dim s As Integer Do While i > 0 For s = 4 To 0 Columns(colOpt).Select Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove i = i - 1 Next s Loop End FunctionComo dijo Shrotter anteriormente, su ciclo for en la función de división no se está ejecutando porque el valor de s está aumentando, no disminuyendo. Use For s = 4 To 0 Step -1 para disminuir s en 1 en cada iteración.