Jump to content

AlexanderS

Moderators
  • Content Count

    1,356
  • Joined

  • Last visited

  • Days Won

    54
  • Country

    Costa Rica

Posts posted by AlexanderS


  1. Bueno eso ya es un proceso normal de excel y el inicio depende de los recursos que este usando tu computadora en ese momento, por eso puede variar, y claro al inicio se ve la última hoja en la que estabas cuando guardaste el libro, si tu macro al ejecutarse cambia de hoja pues veras por un instante la última hoja abierta y después cambiará a la que indicaste en tu macro.

    Claro es más notorio cuando en tu código hay instrucciones como .Select o .Activate, las cuales son totalmente prescindibles y yo no recomiendo usar.

    En resumen no hay forma de evitar ese parpadeo inicial puesto que los eventos de Workbook_Open se ejecutan después de toda la carga del excel. (Al menos que yo sepa)

    Saludos 


  2. Hola @OAGARCIA, es cierto lo que nos comenta @avalencia, el foro es para responder consultas puntuales y aprender, ese aporte cuando lo realice fue porque tenia un problema similar al tuyo y decidí compartirlo en el foro para que al que le fuera de utilidad pudiera aprovecharlo. Esta ahí para que cualquiera pueda usar mi idea y transformarla a su gusto, ademas aprender de ello.

    De igual forma no es la primera vez que me plantean lo de la actualización de varios módulos con ese código, así que aprovechando que llevo tiempo sin subir algún aporte al foro, voy a pensar en algo y ya te aviso cuando lo tenga en la sección de aportes, eso si incluirlo y adaptarlo a tu archivo deberás intentarlo tu.

    Saludos a ambos!! 


  3. Hace 25 minutos , Marcos14 dijo:

    @JSDJSD me refiero a que el formulario en si lleva más controles, entonces como hago para que esos controles no aparezcan en el pdf

    Screenshot (20200630-213907).jpg

    Es es fácil simplemente has de agregar al inicio del código del botón una linea así:

    Me.CommandButton1.Visible = False
    Me.CommandButton2.Visible = False
    Me.CommandButton3.Visible = False

    Y así para todos los botones o controles que no quieres que aparezcan.

      Saludos @Marcos14 y @JSDJSD


  4. Hace 1 hora, Marcos14 dijo:

    Gracias por contestar @AlexanderS la idea sería poder arrastrar o poner los números en la posición que yo deseara y que al mismo tiempo ese número se quede al lado del textbox.

    Espero haberme explicado.

    Gracias de ante mano

    @Marcos14, lo que pides no es tan sencillo pero es posible, en el adjunto esta el formulario y funciona de la siguiente forma:

    Para mover los números debes dar click encima de uno de ellos no debes mantener presionado basta con un simple click encima 

    Con el mause te mueves por la imagen de los círculos y cuando estés en la posición que quieras debes presionar de nuevo un click sobre el numero no sobre la imagen

    En caso de que quieras eliminar uno de los números que moviste debes dar un dobleClick sobre este, con eso volverá a colocarse a la derecha en la lista.

    Ahora se que este era un ejemplo y para trasladarlo a otro libro debes tomar en cuanta lo siguiente:

    Tuve que crear un modulo de clase (ClassControl), este contiene el código para que los controles funcionen, debes copiar este modulo competo.

    También el modulo 1 contiene código para el funcionamiento del formulario.

    El Formulario debe llamarse (frmbiomicroscopia), si cambias el nombre debes modificar el código del modulo de clase.

    No importa la cantidad de Etiquetas que crees el código se adapta.

    Los controles donde van los números deben ser Labels de lo contrario el código no funcionara. 

     

    Como ves debes tener cuidado si lo vas a trasladar a otro libro ya que el código no esta solo en el formulario.

    Comentas, saludos.

    1447133462_GIF29-6-202010-20-08a.m..thumb.gif.8e4a2cc56d0c8e4bc6024228df7dd135.gif

     

    Libro1 (2).xlsm


  5. @Marcos14, para trabajar con los Ítems dentro de un Treeview se utilizan el evento NodeClick, él detectará cuando demos click sobre uno de los ítems. Ejem:

    Private Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node)
    
    Me.TextBox1 = Node.Text
    
    End Sub

    Intenta colocar dentro de ese evento node. después de el punto el IDE de VBA te dará sugerencias sobre las instrucciones que puedes utilizar.

    Saludos.


  6. Hace 33 minutos , Marcos14 dijo:

    Lo siento @AlexanderS si te estoy molestando mucho, lo estoy intentando hacer pero no se en que me equivoco, te adjunto el archivo

    No hay problema, es un gusto poder ser de ayuda.

    Ahora bien hay un problema con el código, el ciclo for, ya que tienes espacios en blanco entre tus filas y la columna C no es capas de determinar la ultima fila con datos puesto que esta en la columna B, hay que usar otro truco para determinar la ultima fila con datos.

    Después cada una de las jerarquías o categorías deben ser evaluadas por separado.

    Mira el código, creo que esta mas claro ahora, incluso podrías intentar agregar una categoría mas para practicar.

    Comentas Saludos.

     

    estudio.xlsm


  7. Con un ejemplo siempre es mejor!.

    El código esta bien el problema es como tienes la fecha y el nombre de la hoja, la fecha en la celda tiene formato 10/7/2020 y la hoja se llama 10-7-2020 por lo que no son iguales, en los nombres de las hojas no se admite el carácter "/".

    Prueba ahora con el archivo.

    Comentas , saludos. 

    Informe Ejecutivo de Actividades Diarias.xlsm


  8. Y con el mensaje :

    Sub guardar()
    
    Application.ScreenUpdating = False
    
    On Error Resume Next
    Set hoja = Sheets(Range("d13"))
    
    If Err.Number = 9 Then
    
        Sheets("ingreso").Copy After:=Sheets(1)
        ActiveSheet.Name = Range("d13")
        Sheets("ingreso").Select
    
    Application.ScreenUpdating = True
    
    Range("c19:e38").ClearContents
    
    MsgBox ("guardado con éxito!!!!")
    
    Else
    
    MsgBox "Fecha del informe ya existe y no se puede guardar"
    
    End If
    
    End Sub

    Saludos


  9. Ahora mismo, MIJAF35 dijo:

    como podria incluir en mi macro, no me resulta soy novato no se en que linea debo colocarla 

     

    Se me fue ese detalle con el nombre de la hoja no es Sheets("Prueba3"), lo correcto es Sheets(Range("d13"))

    Solo debes copiar tu código dentro del que que yo te pase, así:

    Sub guardar()
    
    Application.ScreenUpdating = False
    
    On Error Resume Next
    Set hoja = Sheets(Range("d13"))
    
    If Err.Number = 9 Then
    
        Sheets("ingreso").Copy After:=Sheets(1)
        ActiveSheet.Name = Range("d13")
        Sheets("ingreso").Select
    
    Application.ScreenUpdating = True
    
    Range("c19:e38").ClearContents
    
    MsgBox ("guardado con éxito!!!!")
    
    End If
    
    End Sub

    Pruebalo así y me comentas.

    Saludos


  10. Hace 7 minutos , Marcos14 dijo:

    @AlexanderS entonces si quiero cargar una segunda subcategoria, he de incluir otra letra y otra variable?

    Correcto solo que ahora la llave de relación seria "e" & cel.Row

    Por ejemplo

    Me.TreeView1.Nodes.Add "e" & cel.Row, tvwChild, "R" & cel.Row, Text:=cel

    También no se si lo tenias claro, el porque uso cel.row, pero por las dudas es porque las llaves deben ser siempre únicas entonces como los números de las filas  no se van a repetir los utilizo con esa instrucción, con lo cual por ejemplo la llave de la RITALINA es "E7" ya que se encuentra en la celda #7 y le estoy colocando una "e" al principio.

    Espero no confundirte mucho con mis explicaciones.

    Saludos. 


  11. Hola @Marcos14, te dejo el adjunto.

    Del control básicamente lo que debes saber es que se basa en jerarquías, utilizamos llaves para categorizar cada elemento  ejemplo:

    'Creamos categorias principales
    
    Me.TreeView1.Nodes.Add Key:="llave1", Text:="Elemento1"
    Me.TreeView1.Nodes.Add Key:="llave2", Text:="Elemento2"

    Aquí las llaves son "llave1" y "llave2", ahora si queremos agregar Subcategorias utilizamos esas llaves como relación:

    Me.TreeView1.Nodes.Add "llave1", tvwChild, "E1", Text:="Estoy dentro de ELEMENTO1"
    
    Me.TreeView1.Nodes.Add "llave2", tvwChild, "E2", Text:="Estoy dentro de ELEMENTO2"

    Fíjate que la linea de código es diferente a la de arriba, aquí "llave1" y "llave2" se utilizan para indicar a que "Elemento" va a pertenecer y donde coloco "E1" y "E2" estas son las llaves de estas nuevas lineas

    Por el momento queda así:

    image.png.e95b2d9cc110e0abc69b5aee0f376280.png

    Si necesitas una 2 subcategoria tendrías que copiar las misma linea anterior pero utilizando las llaves "E1" o "E2"

     Me.TreeView1.Nodes.Add "E1", tvwChild, "H1", Text:="Otra SubCategoria"

    image.png.d1daa4defa2e5e5522ba0723e010378f.png

    Ahora en mi ejemplo utilizo un ciclo for para poder cargar los datos, analiza el código y cualquier duda aqui estamos.

    Saludos.

    vademecum.xlsm


  12. Hola @Manuel TR, prueba modificando el código así:

    Sub Redondeo()
    
    'REDONDEO
    
    For i = 8 To Cells(8, "B").End(xlDown).Row 'los datos a redondear se encuentran de la fila 8 hasta la fila 20
    
        
        'Redondea en la columna 5 - los datos que se encuentran en la columna 5
        Cells(i, 5).Value = Round(Cells(i, 5).Value, 2) 'redondea a 2 dig
        
        'Redondea en la columna 6 - los datos que se encuentran en la columna 6
        Cells(i, 6).Value = Round(Cells(i, 6).Value, 2) 'redondea a 2 dig
        
        'Redondea en la columna 7 - los datos que se encuentran en la columna 7
        Cells(i, 7).Value = Round(Cells(i, 7).Value, 2) 'redondea a 2 dig
    
        
    Next i
    
    End Sub

    Comentas, saludos.


  13. Hola @aaquino, no se si te estoy entendiendo, pero si lo que buscas es guardar una copia de tu archivo en formato xlsx, puedes usar la grabadora de macros y un guardar como, algo así con un poco de modificación:

    Sub Macro1()
    Dim ruta$, Nombre$
    ruta = ThisWorkbook.Path & "\"
    Nombre = Split(ThisWorkbook.Name, ".")(0)
    
    ActiveWorkbook.SaveAs Filename:=ruta & Nombre, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
    End Sub
    

     Saludos.

×
×
  • Create New...

Important Information

Privacy Policy