Macro Antonio

Miembros
  • Contador de contenido

    7920
  • Unido

  • Última visita

  • Days Won

    316

Sobre Macro Antonio

  • Rango
    Miembro

Información de perfil

  • Sexo Hombre
  • Localización: Galicia (UTC+1) Excel 2010

Configuraciones

  • Campo que utilizas como separador de argumentos ;
  1. Yo a lo mio, con esta macro se soluciona fácilmente. No entiendo la manía de solucionarlo todo con fórmulas. Si, si, ya se que todo el mundo no sabe VBA, pero las fórmulas necesarias para resolver este problema, tampoco. Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False fila = 1 If Not Intersect(Target, Range("A2:E" & Range("A" & Rows.Count).End(xlUp).Row)) Is Nothing Then Range("G2:H" & Range("G" & Rows.Count).End(xlUp).Row + 1).ClearContents For Each celda In Range("B2:E" & Range("A" & Rows.Count).End(xlUp).Row) If IsNumeric(celda.Value) Then For x = 1 To celda.Value fila = fila + 1 Range("G" & fila) = Range("A" & celda.Row) Range("H" & fila) = Cells(1, celda.Column) Next End If Next End If Application.EnableEvents = True End Sub
  2. Prueba ahora. LICENCIAS II.xlsm
  3. Prueba el adjunto. Observa que es necesario el año en el nombre de la hoja. LICENCIAS.xlsm
  4. Era un problema con las celdas en blanco de presupuesto. Ya está arreglado. Copia de Presupuestos.xlsm
  5. . En tu ejemplo tienes 7 opciones(3+2+2), que corresponderían a las páginas 1-7 del control MultiPage1, pues bien, crea un ComboBox3 con los 7 valores posibles de ComboBox2 y lo ocultas con la propiedad Visible=False y luego: Private Sub ComboBox2_Change() If ComboBox2.Listindex > -1 then ComboBox3 = ComboBox2 MultiPage1.Value = ComboBox3.Listindex + 1 End If End Sub ,
  6. Prueba a ver si es esto. Presupuestos.xlsm
  7. Sin ver lo que te propone smart27, mi solución consiste en un control Multipage ligado al índice del control ComboBox4. Te lo dejo preparado para 30 opciones, pero puedes añadir/quitar tantas como sean necesarias. PROYECTO2.xlsm
  8. Sub OrdenarPOSICIÓN() Sheets("POSICIONES").Select With ActiveSheet.Sort.SortFields .Clear .Add Key:=Columns("I"), Order:=xlDescending .Add Key:=Columns("G"), Order:=xlDescending .Add Key:=Columns("F"), Order:=xlDescending End With With ActiveSheet.Sort .SetRange Range("D6:J23") .Apply End With End Sub Sub OrdenarBATEO() Sheets("COLECTIVO").Select With ActiveSheet.Sort.SortFields .Clear .Add Key:=Columns("C"), Order:=xlDescending .Add Key:=Columns("D"), Order:=xlDescending End With With ActiveSheet.Sort .SetRange Range("B3:AA20") .Apply End With End Sub Sub OrdenarPITCHEO() Sheets("COLECTIVO").Select With ActiveSheet.Sort.SortFields .Clear .Add Key:=Columns("AE"), Order:=xlAscending .Add Key:=Columns("AH"), Order:=xlDescending .Add Key:=Columns("AG"), Order:=xlAscending .Add Key:=Columns("AF"), Order:=xlDescending End With With ActiveSheet.Sort .SetRange Range("AD3:BG20") .Apply End With End Sub
  9. Sub orde() If MsgBox("¿ Desea continuar con la ordenación ?", vbQuestion + vbYesNo) = vbYes Then Range("B17:B46").Select ActiveWorkbook.Worksheets("AFILIACIÓN").Sort.SortFields.Clear ActiveWorkbook.Worksheets("AFILIACIÓN").Sort.SortFields.Add Key:=Range("B17"), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("AFILIACIÓN").Sort .SetRange Range("B17:K46") .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With End If End Sub
  10. Intenta evitar .Select y .Activate en la medida de lo posible y no tendrás estos problemas. Deja tu función así: Public Function BordeDeFilas(Hoja As Worksheet, xFila As Long, xColumna As String, Optional Color As Long, Optional Inicio As String = "A") Hoja.Range(Inicio & xFila & ":" & xColumna & xFila).BorderAround Color:=Hoja.Range("A1").Interior.Color, Weight:=xlThin End Function
  11. Última oportunidad, sigues sin contestar a lo demandado. Que datos hay que colocar en el cronograma y cuando. El cronograma de tu primer archivo, nada tiene que ver con el cronograma de tu segundo archivo, has cambiado el diseño de todo. A ver si te aclaras, porqué si no te vas a quedar sin respuesta.
  12. En tu ejemplo no pones el resultado que esperas obtener en el cronograma.
  13. A ver si mañana puedo echarle una hojeada, si no, durante el fin de semana.
  14. If MsgBox("¿ Desea continuar con la ordenación ?", vbQuestion + vbYesNo) = vbYes Then 'aquí tu macro End If
  15. El evento Activate se ejecuta inmediatamente después del procedimiento Initialize con el formulario ya cargado. Una forma de ver como funciona todo este tema, es ejecutando el formulario/macro paso a paso (F8), y/o poniendo puntos de interrupción (F9) en la línea deseada y a continuación ejecutar (F5).