Saltar al contenido

Antoni

Exceler C
  • Contador de contenido

    11886
  • Unido

  • Última visita

  • Días con premio

    911

Todo se publica por Antoni

  1. La macro del video es la de JSDJSD, que igualmente funciona sin problemas. La mía la puedes descargar de mi primera respuesta.
  2. ¿No estarás intentando ejecutar la macro desde la hoja SERVICIOS?, porqué el botón RESUMEN MENSUAL no tiene ninguna macro asignada. En cualquier caso puedes seguir la maco paso a paso,
  3. La macro contiene solo instrucciones básicas de VBA, funcionaría en cualquier versión de Excel. Y una cosita, en el momento que modificas mi macro, esta, pasa a ser tu macro y pierdes la garantía por mi parte.
  4. He descargado tu archivo y funciona correctamente, revisa el video adjunto:
  5. No has especificado cuales son las celdas a validar si están vacías, te he puesto un ejemplo para el rango A1:A6, corrige a voluntad: Sub Borrar() '------- Corregir las celdas según necesidad If Range("A1") = "" Or _ Range("A2") = "" Or _ Range("A3") = "" Or _ Range("A4") = "" Or _ Range("A5") = "" Or _ Range("A6") = "" Then MsgBox "Hay celdas vacías", vbInformation Exit Sub End If '------- Range("C5").ClearContents Range("C7").ClearContents Range("C8").ClearContents Range("C23").ClearContents Range("C24").ClearContents Range("C39").ClearContents Range("C40").ClearContents Range("C55").ClearContents Range("C56").ClearContents Range("C71").ClearContents Range("C72").ClearContents Range("C87").ClearContents Range("C88").ClearContents Range("C103").ClearContents Range("C104").ClearContents Range("C119").ClearContents Range("C120").ClearContents Range("C135").ClearContents Range("C136").ClearContents Range("C151").ClearContents Range("C152").ClearContents End Sub
  6. Ha sido más sencillo de lo que parecía, o eso creo. Pruebas.xlsb
  7. Para actualizar una celda con un valor numérico con un texto (TextBox), debes convertir el texto a número con una función de conversión de tipos (CInt(), CLng(), CDbl(), CCur(),.......) Poe ejemplo : Range("A1")=CDbl(TextBox1) pero debes asegurarte que contiene solamente números 0-9 y adicionalmente, el separador decimal (punto o coma según el país), para ello tienes la función IsNumeric(), por ejemplo: IF IsNumeric(TextBox1) Then Range("A1")=CDbl(TextBox1) else MsgBox "El TextBox1 no es numérico", VbCritical End If
  8. No tengo ni idea de tablas dinámicas, pero la grabadora de macros muestra: ActiveSheet.PivotTables("TablaDinámica1").PivotFields("Campo 3").AutoSort xlAscending, "Campo 3"
  9. Prueba este código. Sin el archivo no te puedo ajustar más. Private Sub btnCargaBancos_Click() 'El tipo de dato debe especificase para cada variable Dim TasaCompra As Double, TasaVenta As Double, InvBanesco As Double, InvVzla As Double Dim MontoBanesco As Double, MontoVzla As Double, TasaDiaBan As Double, TasaDiaVzla As Double Dim TasaActual As Double 'Hay que comprobar que los textbox tienen contenido numérico 'Los datos numéricos solo pueden contener números y el separador decimal, cualquier otro caracter dará error al convertir If Not IsNumeric(txtInverBanesco) Or _ Not IsNumeric(txtInverVzla) Or _ Not IsNumeric(txtTasaCompra) Or _ Not IsNumeric(txtTasaVenta) Then MsgBox "Los datos deben ser numéricos", vbCritical Exit Sub End If InvBanesco = CDbl(txtInverBanesco) InvVzla = CDbl(txtInverVzla) TasaCompra = CDbl(txtTasaCompra) TasaVenta = CDbl(txtTasaVenta) 'Los datos de los divisores no pueden ser 0 (Indeterminación matemática) If TasaCompra = 0 Or _ InvBanesco = 0 Or _ InvVzla = 0 Then MsgBox "Los datos no admiten valor cero", vbCritical Exit Sub End If MontoBanesco = (InvBanesco / TasaCompra) * (1 - 0.18 / 100) * (TasaVenta * (1 - 0.18 / 100)) MontoVzla = (InvVzla / TasaCompra) * (1 - 0.18 / 100) * (TasaVenta * (1 - 0.18 / 100)) TasaDiaBan = (MontoBanesco / InvBanesco) * (1 - 0.055) TasaDiaVzla = (MontoVzla / InvVzla) * (1 - 0.055) If TasaDiaBan < TasaDiaVzla Then TasaActual = TasaDiaBan Else TasaActual = TasaDiaVzla End If 'En VBA, los datos numéricos no admiten ser formateados, formatear directamente en las celdas, 'MontoBanesco = FormatNumber(MontoBanesco, 2, True, vbFalse) 'MontoVzla = FormatNumber(MontoVzla, 2, True, vbFalse) 'TasaActual = FormatNumber(TasaActual, 5, True, False) txtBcoBanesco = MontoBanesco txtBcoVenezuela = MontoVzla txtTasaDiaria = TasaActual End Sub
  10. Si no me he liado con los paréntesis: Private Sub Worksheet_Change(ByVal Target As Range) Application.ScreenUpdating = False Application.Calculation = xlManual Application.EnableEvents = False If Not Intersect(Target, Range("$L$5:$Y$9")) Is Nothing Then Range("E22") = WorksheetFunction.Sum(Range("E4:E21")) Range("E23") = WorksheetFunction.Sum(Range("E4:E19")) Range("E24") = Range("E23") - WorksheetFunction.Sum(Range("I4:I7")) Range("I22") = WorksheetFunction.Sum(Range("I4:I21")) Range("I4") = Range("E23") * 0.1 Range("I5") = Range("EN10") * Range("EN11") Range("I6") = Range("E23") * 0.0127 Range("I7") = Range("E23") * 0.006 Range("I25") = Range("E22") - Range("I22") Range("I12") = Range("E24") * 0.03 Range("C7") = Range("EQ8") - Range("EQ9") + Range("EN13") + Range("EN14") + Range("EN15") + Range("EN16") Range("C9") = Range("EQ9") + Range("EN17") + Range("EN18") + Range("EN19") Range("E7") = Range("E4") / Range("C4") * 7 / 44 * 1.5 * Range("C7") Range("E8") = Range("E4") / Range("C4") * 7 / 44 * 0.3 * Range("C8") Range("E9") = Range("E4") / Range("C4") * 7 / 44 * 1.3 * 1.5 * Range("C9") End If Application.Calculation = xlAutomatic Application.ScreenUpdating = True Application.EnableEvents = True End Sub
  11. Abre el adjunto y pulsa el botón GENERAR HOJAS y luego pulsa sobre cualquier fecha del calendario para ir a la hoja deseada. Observa que he añadido 2 botones en la hoja CALENDARIO, uno para generar las hojas y otro para eliminarlas. También he añadido una flechita azul en las hojas generadas para volver a la hoja CALENDARIO. Estas son las macros: En la hoja CALENDARIO: Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim d As Integer, m As Integer, a As Integer On Error Resume Next If IsNumeric(Target) Then If Not Target = "" Then x = Int((Target.Row - 6) / 9) y = Int((Target.Column - 5) / 8) + 1 m = x * 6 + y d = Target a = Right([E3], 4) Sheets(Format(d, "00") & "-" & Format(m, "00") & "-" & a).Activate End If End If End Sub En el Módulo1: Sub GenerarHojas() Application.ScreenUpdating = False Application.CopyObjectsWithCells = True Dim a As Integer a = Right([E3], 4) With Sheets("ORIGI") For fecha = CDate("01/01/" & a) To CDate("31/12/" & a) '<-- Periodo a generar .Copy After:=Sheets(Sheets.Count) ActiveSheet.Name = Format(fecha, "dd-mm-yyyy") [B4] = [B4] & " " & fecha Next End With Volver End Sub '-- Sub EliminarHojas(): On Error Resume Next Application.ScreenUpdating = False Application.DisplayAlerts = False Dim a As Integer a = Right([E3], 4) For fecha = CDate("01/01/" & a) To CDate("31/12/" & a) '<-- Periodo a eliminar Sheets(Format(fecha, "dd-mm-yyyy")).Delete Next End Sub '-- Sub Volver() Sheets("CALENDARIO").Activate End Sub Libro1 (15).xlsm
  12. Sub GenerarHojas() Application.ScreenUpdating = False With Sheets("Hoja1") '<--- Hoja a copiar For fecha = CDate("01/01/2024") To CDate("31/12/2024") '<--- Periodo a generar .Copy After:=Sheets(Sheets.Count) ActiveSheet.Name = Format(fecha, "dd-mm-yyyy") Next .Activate End With End Sub Y por si las quieres eliminar: Sub EliminarHojas(): On Error Resume Next Application.ScreenUpdating = False Application.DisplayAlerts = False For fecha = CDate("01/01/2024") To CDate("31/12/2024") '<-- Periodo a eliminar Sheets(Format(fecha, "dd-mm-yyyy")).Delete Next End Sub
  13. Sub FormulaDocs() Set ws = ThisWorkbook.Sheets("Conte") Set Rng = ws.Range("U17:U" & ws.Cells(ws.Rows.Count, "U").End(xlUp).Row) For Each CELL In Rng If CELL.Value <> "" Then F = CELL.Row CELL.Offset(0, -5).FormulaLocal = "=SI.ERROR(SI(ESNUMERO(HALLAR($U" & F & ";$G" & F & "));BUSCARV($V$2&V$3&$U" & F & ";INDIRECTO(""'""&Z$2&""'!""&""G3:J10"");3;FALSO););"""")" End If Next CELL End Sub
  14. ¡Perfecto!, con esto me ahorro la solución. 😀
  15. A ver si mañana encuentro un hueco y te apaño algo.
  16. Preguntas: ¿Las hojas ya existen o hay que crearlas? Si ya existen, ¿Hay que sustituir la información o hay que añadirla a la existente? Quedo a la espera.
  17. No se acaba de ver, solo un ejemplo: 12 hombre+12 mujeres son 24 participantes, si cada participante juega 11 partidos, 24 por 11 son 264 partidos, lo que contradice las siguientes afirmaciones. Dicho lo cual, mejor subes un archivo, por ejemplo 4 hombres y 4 mujeres, a ver si se ve más claro lo que pretendes.
  18. El calendario se calcula automáticamente a partir de la cela Q1. En Q3 hay una llamada a la UDF FirstMonthMonday. Hay 2 formatos condicionales para marcar las fechas fuera del mes. Abre el adjunto y pulsa sobre el "botón" Trova Date. Mio_Progetto_Calendar.xlsx.xlsm
  19. Si lo que buscas es el Cliente, este concepto se halla en la columna 5 de la Hoja7, no en la 83. nombre = Hoja7.Cells(FILA, 83).Value
  20. Faltan hojas en el archivo que has subido (BD, CLIENTES, ALTAARTICULOS1,.....)
  21. Version 1.0.0

    33 downloads

    En el adjunto encontrareis un formulario con 2 ejemplos de como llenar un listbox/combobox, uno, a partir de un nombre y otro, a partir de una fórmula, ambos combinados con la propiedad RowSource. Se basan en la utilización de DESREF y CONTARA. Lamentablemente la propiedad RowSource no admite la fórmula en ingles y con la fórmula en castellano, no funciona, de ahí que he colocado la fórmula en inglés en la propiedad Tag del listbox/combobox.
  22. Version 1.0.0

    75 downloads

    Es un calendario al uso, sin misterios. Ya sabeis de mi debilidad por los calendarios, en este caso la gracia está en el código VBA. Os recomiendo que lo reviseis y os dareis cuenta que se puede hacer click en un label sin evento individual y sin módulo de clase. Calendario mínimo.xlsm
  23. Version 1.0.0

    79 downloads

    Hola a todos: Os dejo un formulario para crear y visualizar álbumes de fotografías. Cada álbum va en una hoja. Puede haber cualquier número de álbumes. Cada álbum puede contener cualquier número de imágenes. En el formulario: Se pueden añadir múltiples imágenes a la vez. Al pulsar sobre la miniatura cambia la resolución de la imagen. El resto os lo dejo para que lo descubrais vosotros. Paz y amor.
×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.