Saltar al contenido
View in the app

A better way to browse. Learn more.

Ayuda Excel

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

error '1004' en tiempo de ejecucion

publicado

buenas tardes jovenes tengo un problemita con una macho que estoy ejecutando y me da un error '1004' en tiempo de ejecucion, me pueden decir por favor como lo soluciono, le explico que esta macro es para buscar las diferentes combinaciones exixtentes de 6 codigos en un rango del 1 al 38.

este es el codigo que estoy utilizando lo que esta en negrita es en donde me esta dando el error.

espero me puedan ayudar.

Gracias

Private Sub CommandButton1_Click()

Dim nn As Long, mm As Integer, rElem As Long, kk As Long, r_Comb As Long

Dim myMat(), Elem, piv() As Long

nn = Cells(Rows.Count, "B").End(xlUp).Row

If WorksheetFunction.CountA([b:b]) <> nn Then

MsgBox "La columna B no puede tener celdas vacías."

Exit Sub

End If

If nn = 1 Then

MsgBox "Introduzca los elementos a combinar" & Chr(10) & "en la columna B."

Exit Sub

End If

If [c2] <= 0 Or (Int([c2]) <> [c2]) Then

[c2].Select

MsgBox "Introduzca un Nº válido de elementos en cada combinación."

Exit Sub

End If

nn = nn - 1: mm = [c2]

If mm > nn Then

[c2].Select

MsgBox "El Nº de elementos en cada combinación no puede ser" & _

Chr(10) & "mayor que el Nº de elementos totales."

Exit Sub

End If

[c4].Formula = "= COMBIN( COUNTA(b:B) - 1, c2 )"

If [c4] > Rows.Count - 1 Then

MsgBox "El Nº de combinaciones es mayor que el Nº de filas disponibles"

Exit Sub

End If

Application.ScreenUpdating = False

Range([e1], [e1].SpecialCells(xlLastCell).Offset(2, 2)).EntireColumn.Delete

ReDim myMat(1 To [c4], 1 To mm)

Elem = [b2].Resize(nn)

ReDim piv(1 To mm)

rElem = 1: piv(1) = 1

Do

For kk = 1 + rElem To mm: piv(kk) = piv(rElem) + kk - rElem: Next kk

Do While piv(mm) <= nn

r_Comb = r_Comb + 1

For kk = 1 To mm: myMat(r_Comb, kk) = Elem(piv(kk), 1): Next kk

piv(mm) = 1 + piv(mm)

Loop

rElem = mm

Do

rElem = rElem - 1: If rElem = 0 Then GoTo Fin

piv(rElem) = 1 + piv(rElem)

Loop Until piv(rElem) <= nn - mm + rElem

Loop

Fin:

[e2].Resize([c4], mm) = myMat

ReDim myMat(1 To 1)

[e2].Offset(, mm).ColumnWidth = 10: [e2].Resize([c4], mm).EntireColumn.AutoFit

Application.ScreenUpdating = True

End Sub

Featured Replies

publicado

Hola! Alberto

El por qué de tu error lo vas a encontrar en el siguiente enlace:

--> Combinaciones sin Repetición (código original de autor muy conocido).

Sólo te ruego que no te unas a la moda que se ve en otros Foros de Excel, en los que se utilizan códigos de autores muy conocidos y que son "autoadjudicados" por quienes se quieren lucir con ideas que no les son propias, sin reconocer los méritos del autor original (por ellos conocido).

Cualquier duda/consulta: ¡Pregunta, nomás!...

  • 2 weeks later...
publicado
  • Autor

gracias cacho, disculpa por lo del código estaba buscando como un ejemplo de como hacer esa macro, hasta el momento estoy aprendiendo hacerlas y solo me fijo en los códigos de las macros que necesito para saber como hacer esa y cualquier otra que se me presente, te prometo que la próxima ves la pregunta sera de una de mi propia creación, con dios delante.

Archivado

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.