Jump to content

AlexanderS

Moderators
  • Content Count

    1,381
  • Joined

  • Last visited

  • Days Won

    57

Everything posted by AlexanderS

  1. Tienes razón, no me di por hecho que los num de los recibos serian únicos. Adjunto el archivo con una modificación. Saludos EJEMPLO PARA INSERTAR COMENTARIOS.xlsm
  2. Prueba el adjunto, ten en cuenta que la macro esta echa con el formato de la tabla que adjuntaste es posible que debas realizar modificaciones a la macro para adaptarlo a otro libro. Saludos. EJEMPLO PARA INSERTAR COMENTARIOS.xlsm
  3. Hola @tupy77, si es posible con macros y es bastante simple, pero para no tener que imaginarnos la tabla y construirla desde 0 te recomiendo subir un excel de ejemplo. Saludos.
  4. @Leonardo Briceño Pura vida!! A mi no me pasa lo que indicas, pero de igual forma puedes probar solo des protegiendo la hoja cuando confirmas la eliminación de esta forma no deberías ver las formulas cuando se muestren los cuadros de mensaje. Sub BorrarCeldas(): On Error GoTo ExitSub Set CeldaDestino = Application.InputBox("SELECCIONE LA CELDA CON EL NOMBRE QUE DESEA ELIMINAR", _ "BORRAR - SELECCIONE CELDA", Type:=8) Application.ScreenUpdating = False CeldaDestino.Worksheet.Select CeldaDestino.Select If Msg
  5. @Leonardo Briceño, por lo que veo no estas volviendo a proteger la hoja luego de eliminar, solo la proteges si se cancela. Así debería funcionar: Sub BorrarCeldas(): On Error GoTo ExitSub ActiveSheet.Unprotect Password:="123" Set CeldaDestino = Application.InputBox("SELECCIONE LA CELDA CON EL NOMBRE QUE DESEA ELIMINAR", _ "BORRAR - SELECCIONE CELDA", Type:=8) Application.ScreenUpdating = False CeldaDestino.Worksheet.Select CeldaDestino.Select If MsgBox("DESEA ELIMINAR EL NOMBRE " & ActiveCell.Value, vbQuestio
  6. Hola @Leonardo Briceño, en este caso seria convertir tanto la búsqueda como el nombre de las hojas a mayúsculas independientemente de como estén escritas: Sub BuscarNombreHoja() Application.ScreenUpdating = False Dim existe As Boolean Dim nombreHoja As String Dim cont As Integer nombreHoja = UCase(InputBox("INGRESE EL NOMBRE DE LA HOJA")) existe = False For cont = 1 To Worksheets.Count If UCase(Worksheets(cont).Name) Like "*" & nombreHoja & "*" Then existe = True Exit For End If Next If existe = False Then
  7. Hola @paikerr intenta así: Dim rango As Range Set rango = Range(Columns(1), Columns(6)) If IsNull(rango.OutlineLevel) Then rango.Ungroup Comentas, saludos.
  8. Que tal @fx.ingenieria, bienvenido al foro, te comento que puedes realizar tus consultas en el hilo de excel general (Formulas,etc) o en el de macros y VBA. Espero que el foro te sea de tanta ayuda como ha sido para mi. Pura vida!!, saludos desde Cartago.
  9. Pero probaste abrir el archivo y ejecutar la macro?, el error 1004 regularmente es porque un nombre no definido o alguna comilla faltante etc.
  10. Un gusto @Sergio, sinceramente no sabría recomendarte alguna pagina o vídeo en concreto, la cinta que vez arriba la hice con una recopilación de paginas y un poco de prueba y error. Pero te aseguro que no es tan complicado como parece, seguro que con leer un poco de la documentación del programa le agarras el tiro https://bettersolutions.com/vba/ribbon/custom-ui-editor.htm Saludos.
  11. @RadioViraje73, correcto la instrucción copiara los datos en columnas contiguas, entonces tienes algunas opciones: 1 utilizar un ciclo while para leer cada columna de tu tabla individualmente o 2 realizar una consulta a por cada columna para poder utilizar el .CopyFromRecordset, algo como esto: Columnas = Array("FECHA", "PAGADO", "DEBE") For Each param In Columnas Sql = Replace("SELECT ? FROM [Datos$] where (FECHA BETWEEN #1/1/2020# and #31/3/2020#) and DEBE >0", "?", param) Rst.Open Sql, cn, 3, 3 Select Case param Case Is = "FECHA": Sheets("Resultado").Range("A2").CopyFromRecordset
  12. Hola @joselica, en este caso no es necesario tratar cada celda individualmente, revisa el adjunto y comentas. Saludos COLOR CELDAS (1) Ucase o Lcase.xlsm
  13. Hola @joselica, prueba el adjunto. Saludos COLOR CELDAS (1).xlsm
  14. Hola @Jeison Segura, debes subir algún ejemplo con tu código para entenderte ya que no todos conocemos de SAP y aun menos como funciona tu archivo. Saludos
  15. Hola @RadioViraje73, no es necesario recorrer con un ciclo while un recordset, puedes copiar los datos directamente a la hoja de excel con la instrucción .CopyFromRecordset Sheets("Hoja1").Range("A2").CopyFromRecordset Rst Saludos
  16. Hola @paikerr lo trabajo sin problemas en Office 365 y también lo he probado en versiones 2013,2016,2019 sin problemas. Saludos.
  17. Hola @darkstars9976, prueba este código y me comentas. Sub Copia_recetas() Dim Rng$, x# Dim rept As Range Dim celda With Sheets("BD_Recetas") Rng = .Range("D1") x = 9 For Each celda In Sheets("Proy.-Comer").Range(Rng) If celda <> "" Then Set rept = .Range("C9:C43").Find(celda, , , xlWhole) If rept Is Nothing Then _ .Cells(x, "C") = celda: x = x + 1 End If Next End With
  18. Has probado o tienes información sobre Power Pivot ?, si lo que haces simplemente es un exportación de los datos de access a excel no necesitas ninguna macro excel es capas de realizar la exportación a una tabla plana o dinámica, ademas si utilizas Power Pivot puedes crear las "formulas" internamente. Pero solo estoy suponiendo ya que desconozco la estructura de tu base ni lo que quieres hacer en excel. Si te parece puedes subir un ejemplo del accces y el excel, obviamente con datos ficticios pero con un formato fiel al original para que no tengas problemas para adaptarlo. Salu
  19. Hola @Nori777, no se si entendí pero puedes probar con este código: Sub registrar() Dim jugador As Range Dim Franjas As Variant jug = Sheets("Hoja2").Range("Q36") With Sheets("Hoja1") Set jugador = .Range("BD:BD").Find(jug, , , xlWhole) If jugador Is Nothing Then Exit Sub ult = jugador.End(xlDown).Offset(0, 1).End(xlUp).Row + 1 .Cells(ult, "BE") = Sheets("Hoja2").Range("M36") .Cells(ult, "BF") = Sheets("Hoja2").Range("O36") Franjas = Sheets("Hoja2").Range("L40:Q40"
  20. @jomunozta, tal como dice Cristian, recuerda que las fechas y horas en realidad son números con decimales y bueno por la forma de excel de tratar operaciones con números flotantes obtendrás un resultado con decimales. Puedes limitar el numero de decimales que debe devolver el resultado a 2 así el 7.99999999999 se convertirá en un 8.00. Y en este otro caso el resultado sera 1.50 Después es solo cuestión de evaluar esos decimales sin mayores a 0. Saludos
  21. Hola @Galactico, en ese caso debes buscar como utilizar los ciclos while, te adjunto un código que recorre un rango de celdas colocando un número aleatorio y con el while indico que la instrucción debe repetirse hasta que el número que entrega sea mayor a 50. Sub aleatoreo() Dim c As Range For Each c In Range("A1:A7") num = 0 While num < 50 ' El ciclo while se repite si num es menor a 50 num = Int((100 * Rnd) + 1) 'Generamos un número aleatorio Wend c = num Next End Sub Saludos.
  22. Inténtalo en una sola linea: Sub MsgBox() CreateObject("WScript.Shell").Popup "Hello", 1, "Se cierra en 1 segundo" End Sub Saludos
  23. Hola @MauriciodeAbreu, puedes probar con este código: Sub Eliminar_Rango(): On error Resume Next Dim Rango As Range ActiveSheet.Unprotect "1234" Set Rango = Application.InputBox("Selecione un rango de celdas para eliminar las filas asociadas a ese rango", Type:=8) If Not Rango Is Nothing Then Rango.EntireRow.Delete ActiveSheet.Protect "1234" End Sub Comentas, saludos
  24. Hola @jhon fredy, tus consultas no son claras ( esta y anteriores) por eso no obtienes respuestas. Debes indicar en tus consultas de forma clara la ayuda que necesitas, ademas adjuntar un archivo de excel para poder realizar pruebas ya que casi nadie esta dispuesto a crear un archivo de 0, los datos del ejemplo deben ser ficticios pero fieles al formato original. Realiza tus consultas explicando mas claramente el problema, adjunta un ejemplo. Así habrá mas usuarios dispuestos a usar su tiempo en atender tus consultas. Saludos.
×
×
  • Create New...

Important Information

Privacy Policy