Jump to content

Antoni

Members
  • Content Count

    9,964
  • Joined

  • Last visited

  • Days Won

    513

Everything posted by Antoni

  1. Todo esto está en la ayuda de Office, pero es más cómodo que lo busque otro. 🙁
  2. Esta macro hace lo que pides, o eso creo. Se supone que tus datos estén en el rango A:B y tienen una fila de encabezamieno. Sub CrearArchivoTXT() Dim Cuenta, Saldo, Signo, Valor, x '-- Open ThisWorkbook.Path & "\Archivo.txt" For Output As #1 For x = 2 To Range("A" & Rows.Count).End(xlUp).Row Cuenta = CStr(Range("A" & x)) Cuenta = Cuenta & String(12 - Len(Cuenta), " ") Signo = "0" Valor = Range("B" & x) If Valor < 0 Then Signo = "N" Valor = Valor * -1 End If Saldo = Signo & Replace(Format(Valor, "00000000.00"), _ Application.DecimalSeparator, "") Print #1, Cuenta & Saldo Next Close #1 End Sub
  3. Hasta donde yo se, no existe la posibilidad de cargar una tabla de forma directa desde un listbox sin un bucle. Sería algo así (No está probado) Private Sub procesar_Click() 'Debe existir una conexión abierta de la BD con el nombre Conexion Set rs = New ADODB.Recordset With rs .CursorLocation = adUseClient .CursorType = adOpenStatic .LockType = adLockOptimistic End With '.. With ListBox1 For X = 0 To .listcount1 - 1 Sql = "INSERT INTO Entradas Values(" Sql = Sql & "'" & .List(X, 1) & "'," Sql = Sql & "'" & .List(X, 2) & "'," Sql = Sql & CLng(.List(X, 0)) & "," Sql = Sql & CCur(.List(X, 3)) & "," Sql = Sql & CCur(.List(X, 4)) & ")" rs.Open Sql, Conexion Next End With '.. rs.Close Set rs = Nothing End Sub
  4. Después de tres días todo a vuelto a la normalidad. ¿Motivo?, ni idea, supongo que va en la linea de lo comentado por Riddle. Gracias a ambos por vuestro interés.
  5. Para mi, todo parece funcionar. El label aparece a medida que te desplazas por el listbox, mostrando la descripción del artículo sin ningún tipo de efecto visual no deseado.
  6. Hola amado pueblo: Tengo Windows 10 y desde hace unos días al arrancar se me abre Access de forma automática. Ya he revisado el menú de arranque y no hay nada que lo justifique. ¿Alguna idea? Gracias de antemano
  7. A veces los árboles no nos dejan ver el bosque. Añade una columna al ListBox1 y guárdate el precio original en ella. Luego utiliza esa columna para hacer los cálculos. Nota: Dale longitud cero en la propiedad ColumnWidths a la columna si no quieres que se visualice en el listbox.
  8. La macro solo cambia las fórmulas de las celdas seleccionadas de la primera tabla. Ejemplo: Si cambias las fórmulas del rango D20:E23: Selecciona el rango D20:E23, ejecuta la macro y se cambiarán las fórmulas de los rangos D93:E96, D166:E169, D239:E242,.... y así sucesivamente hasta completar todas las tablas.
  9. Yo creo que con esto te apañas. Libro1 (2).xlsm
  10. Selecciona el rango modificado y ejecuta esta macro: Sub CopiarFórmulas() Application.ScreenUpdating = False For Each celda In Selection If celda.HasFormula Then celda.Copy For x = 1 To WorksheetFunction.CountIf(Range("D:D"), "P") - 1 celda.Offset(73 * x).PasteSpecial xlFormulas Next End If Next Application.CutCopyMode = False End Sub
  11. Private Sub UserForm_Initialize() Dim Valores As Variant, i As Integer Valores = Array(1, 2, 3, 4, 5, 6, 7) For i = 0 To UBound(Valores) ComboBox1.AddItem Valores(i) Next End Sub
  12. Te falta un hervor y en tu casa no lo saben. Proverbio español.
  13. Había un error de sintaxis. No he podido probar porqué me dice que no encuentra la tabla de Access cajafinal. Dim Comprobante As Range Dim x As Long With ListBox1 For x = .ListCount - 1 To 0 Step -1 Set Comprobante = Sheets("Base de datos").Columns("C").Find(.List(x, 1), , , xlWhole) If Not Comprobante Is Nothing Then .RemoveItem (x) Next End With
  14. A grandes males, grandes remedios. Después de cargar el listbox con los datos de Access, elimina los elementos que estén en Excel. Dim Comprobante As Range Dim x As Long With ListBox1 For x = .ListCount - 1 To 0 Step -1 Set Comprobante = Sheets("Base de datos").Columns("C").Find(.List(x, 1), , , xlWhole) If Not Comprobante Is nothimg Then .RemoveItem (x) Next End With
  15. No subes el archivo y demás, todavía tienes abiertos temas anteriores. 🙁
  16. Sin el archivo es imposible decirte nada, pero ya te avanzo que no pinta bien.
  17. ¡¡ MUCHAS GRACIAS POR EL DETALLE !!
  18. Private Sub Workbook_Open() For Each Window In Windows Window.DisplayHeadings = True Next End Sub
  19. Lamentablemente los controles ActiveX no disponen de una opción EnableEvents de la que si disponen hojas y libros, por lo que es necesario fabricarlos a mano. Es fácil, define una variable a nivel formulario (p.e: SaltarEvento as Boolean) activála/desactívala cuando sea necesario y condiciona la ejecución el evento Change del combobox a que la variable esté desactivada, ejemplo: Dim SaltarEvento as Boolean Private Sub MiProcedimiento() SaltarEvento = True ... ... SaltarEvento = False End Sub '-- Private Sub ComoboBox1_(Change() If SaltarEvento = True Then Exit Sub ... ... End Sub Por cierto, si te aseguras que los nombres de los rangos se corresponden con los elementos de cada combo, podrías dejar los procedimientos change de los combos mucho más sencillos, por ejemplo: Private Sub cmb_tipo_persona_Change(): On Error Resume Next If SaltarEvento = True Then Exit Sub cmb_tipo_cartera.Clear lbl_tipo_cartera.Caption = "" If Not cmb_tipo_persona.ListIndex = -1 Then cmb_tipo_cartera.List = Hoja2.Range(cmb_tipo_persona).Value find_code_tipo_persona End If End Sub
  20. No consigo descargar el archivo.
  21. Como decía Groucho Marx en Los hermanos Marx en el Oeste, "Mas marmota, que es la guerra" 😂😂😂
  22. Junta los 2 códigos en un único procedimiento Worksheet_Change()
  23. Recuerda que MIÉRCOLES y SÁBADO se acentúan. Sub DistribuirFechas() Dim I, X, Fecha, OK Application.ScreenUpdating = False Application.EnableEvents = False Días = Array("", "LUNES", "MARTES", "MIÉRCOLES", "JUEVES", "VIERNES", "SÁBADO", "DOMINGO") I = 7 For X = 6 To Hoja4.Range("E" & Rows.Count).End(xlUp).Row Hoja4.Range("F" & X) = "" OK = False For I = I To Hoja6.Range("A" & Rows.Count).End(xlUp).Row Fecha = Días(Weekday(Hoja6.Range("A" & I), vbMonday)) If UCase(Hoja4.Range("E" & X)) = Fecha Then OK = True Exit For End If Next If OK = True Then Hoja4.Range("F" & X) = Hoja6.Range("A" & I) Next Application.EnableEvents = True End Sub
  24. Te adjunto una macro que funciona, lo aplicas a otro archivo y no funciona, ergo, no has sabido aplicar la macro a tu archivo o los datos no se adaptan al ejemplo suministrado, por consiguiente, o subes el archivo en los que se producen los errores que describes o te quedas sin solución.
×
×
  • Create New...

Important Information

Privacy Policy

Ayuda Excel - Madrid, Madrid, ES - Valorada por 6254 personas - Aprender Excel - Total: 4.7 / 5