Jump to content

bigpetroman

Members
  • Content Count

    2,292
  • Joined

  • Last visited

  • Days Won

    94

Posts posted by bigpetroman

  1. amigo @jeaa el problema es que realmente yo no se que es esa formula, no se que es ese valor de 60,4 que tienes alli ni el porque lo divides entre 5 (me imagino que es la cantidad de items), si solo quieres dejar el valor entero sin mas. puedes usar esta formula

    =SI($C$45>0;REDONDEAR(BD!F4-(60,4-$B$48)/5;0);"")

    y aplicas lo mismo en las otras columna (colocar el redondear) puedes hacerlo?

    suerte

  2. @jeaa mientras sigas ignorando los comentarios será difícil, está macro simplemente sustituye en tu hoja el nombre del alumno y la la nota, si hay algún cálculo y NO cuadra, pues es simplemente tu archivo y las formulas que tengas, NO es ningún problema de la macro.

    mientras NO termines de explicar que hace tu archivo o que es lo que necesitas y coloques algún ejemplo de lo que NO cuadra, pues será complicado.

    suerte

  3. amigo, lamentablemente NO nos estamos entendiendo, tu quieres que la macro haga algo pero no terminas de explicar, lo mas que voy a hacer por ti es dejarte esta macro que hace lo mismo que tu macro original pero mucho mas resumida

    Sub correspondencia()
        Dim NumCriterios As Variant
        Dim nCantDatos As Double
        Dim nDatos As Double
        Dim wHoja As Worksheet
        Dim nVariable As Integer
        Dim sVariable As String
        Dim sDatos As String
        
        '
        ' correspondencia Macro
        '
        ' Acceso directo: CTRL+a
        '
        
         ''''''''''''''''''pedimos la cantidad de crieterios '''''''''''''''''''''''''''''''''''''''''''''''''''''''
        NumCriterios = InputBox("Escribe el número de criterios")  'Caja de texto para escribir el numero de criterios
        
        If IsNumeric(NumCriterios) = False Then Exit Sub
        
        '''''''''''''''''' obtenemos la cantidad de datos a procesar '''''''''''''''''''''''''''''''''''''''''''''''''''''''
        
        nCantDatos = Sheets("BD").Cells(Rows.Count, "A").End(xlUp).Row  'contar el numero de nDatos
    
        
        For nDatos = 2 To nCantDatos  'Ciclo para realizar las combinaciones
            Worksheets("Correspondencia").Copy Before:=Sheets(nDatos)
            Set wHoja = ActiveSheet
            
            For nVariable = 1 To NumCriterios
                sVariable = Worksheets("BD").Cells(1, nVariable).Value
                sDato = Worksheets("BD").Cells(nDatos, nVariable).Value
                
                wHoja.Cells.Replace What:="<" & sVariable & ">", Replacement:=sDato, LookAt:=xlPart, _
                    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
                    ReplaceFormat:=False 'Busca y reemplaza los valores de la base de nDatos
                    
            Next nVariable
            
        Next nDatos
    
    End Sub

     

    de resto no puedo ayudarte mas, pues tienes que ayudarme a entender para poder ayudarte, la macro supuestamente busca hasta 8 campos (tu macro original) en la tabla de la hoja DB, pero esa hoja solo tiene 2 campos nombre y nota, no veo el sentido de elegir 8 criterios cuando NO existen.

    y lo otro, dices que algunos no te cuadran, pero no dices cual para revisar.

    suerte

     

  4. Saludos @jeaa , me parece que tu archivo está incompleto o no lo entiendo, según tu código se toman las variables de la hoja DB que van desde la columna A hasta la H según la cantidad de variables, pues es algo ilógico, pues tu tabla de DB solo tiene dos columnas (nombre y nota), es decir, el código en teoría sería para esas dos variables nada mas (aunque lo que vi está mal también), por favor si puedes aclarar eso y explicar un poco mejor puede ser que le dedique un tiempo y te ayude, suerte

    la idea es saber exactamente que es lo que quieres hacer para poder ayudarte

  5. En 12/10/2020 at 2:37 , Haplox dijo:

    No te sorprendas @avalencia, es que esto no lleva a ningún sitio. Todo los ejemplos que os he puesto ves que son de los más normal, y hay que pelearse hata la extenuación para solucionarlos y que funcionen.

    Ya tengo claro que todo tiene que ser igual, que no todas las referencias valen, que Excel no es para crear software (sobre esto tengo serias dudas... No comercial, sino par todo lo que se pide en el foro de macros 😉)

    Así que nada, como dije antes a pelearse toca

    Saludos amigo @Haplox, he llegado tarde a la fiesta pero allí va mi comentario.

    yo he tenido estos problemas muchas veces (el UCASE, FORMAT, etc) que fallan sin explicación aparente, pero te puedo asegurar que prácticamente el 100% de las veces es por problemas de referencias, no necesariamente que te falte una referencia a una librería, sino que tienes marcada una referencia a un objeto que NO está disponible en dicha maquina, si en el momento que te da el problema revisas las referencias del proyecto de seguro veras alguna que dice FALTA o MISSING, y por consiguiente el objeto o código asociado es el que genera la falla pero NO sé el porque se refleja como si fuera el UCASE o el FORMAT el que estuviera fallando.

    para esos casos hay que revisar y re programar, como indicaron antes, tratar de usar controles nativos de Excel (forms 2.0) y no controles que no sean compatibles entre versiones, sobre todo si usas indistintamente versiones de 32 y 64 bits.

    estoy a la orden para tratar de ayudarte en lo que pueda, uso Excel 2016 en mi casa, en la empresa Excel 2003 (si, aunque usted no lo crea 😂😂😂 )

     

  6. Saludos @alvaroballes, con el permiso del maestro @Antoni, te dejo un archivo que creo que hace lo que buscas, mientras al celda este en color naranja (el mismo color que la celda A1 de la hoja config) se agrega a los cuadros semanales donde NO se haya agregado antes, es decir, si ya se agrego a una semana NO se agrega nuevamente así siga en color naranja, solo se agrega a las semanas que no se ha agregado aún

    suerte

     

     

    Seguimiento campañas_BP.xlsm

  7. Saludos @jhon fredy, sin indagar mucho en el código, creo que una opción es invirtiendo el código a buscar, mira el ejemplo en tu función

    Private Sub Buscar_Horizontal(Texto As Range)
        Dim sTextInv As String
        
        For i = Len(Texto) To 1 Step -1
            sTextInv = sTextInv & Mid(Texto, i, 1)
        Next i
        For x = 1 To 42
           cadena = ""
           For y = 3 To [HB1].Column
              cadena = cadena & Cells(x, y)
           Next
           For i = 1 To Len(cadena) - Len(Texto) + 1
              If Mid(cadena, i, Len(Texto)) = Texto Or _
                Mid(cadena, i, Len(Texto)) = sTextInv Then
                 Cells(x, i + 2).Resize(1, Len(Texto)).Interior.Color = Texto.Interior.Color
              End If
           Next
        Next
    End Sub

    suerte

  8. Saludos @hectorcc_18, realmente NO es necesario saber ninguna dirección, simplemente con que el complemento este activado (instalado) es suficiente.

    por ejemplo, creo un complemento llamado "MiComplemento.xlam" y tiene una función que suma dos valores, llamada "sumaPrueba", y otra que simplemente muestra un mensaje

    con este código, llamo a dicha función del complemento

    Sub Ejecutar()
        Dim ElComplemento As AddIn
        Dim nResultado As Double
        
        'verificamos si el complemento está instalado
        If AddIns("MiComplemento").Installed = True Then
            Set ElComplemento = AddIns("MiComplemento")
            
            'obtengo el resultado de la funcion
            nResultado = ElComplemento.Application.Run("sumaPrueba", 2, 3)
            
            'muestro un mensaje directo desde el complemento
            ElComplemento.Application.Run "muestraMensaje"
            
        Else
            MsgBox "El Complemento MiComplemento, no está instalado en esta PC", vbCritical, "Complemento"
        End If
    
    End Sub

    espero te sirva

  9. @giussepe.colan@gmail.com amigo, el problema es el libro compartido, erróneamente te indique que si se puede, pero no, esta forma de proteger es valida para libros NO compartidos, que si te permite actualizar datos sin necesidad de bloquear o desbloquear hojas.

    y eso es algo propio de Excel en los libros compartidos, allí NO hay nada que hacer al respecto, salvo que busques alternativas

    1.- Lo recomendable es que todo lo que necesites tener como base de datos lo tengas una base de datos, pudiera ser Access sin embargo puedes usa también un archivo de excel sin problemas (y le colocas contraseña de apertura, bloqueas las hojas, etc.)

    2.- En tu archivo a compartir, tendrías todas tus macros y formularios para actualizar tu Base de datos, y tendrías todo lo relacionado a las consultas, en este punto, si en este libro NO es necesario guardar nada, puedes tener el archivo sin compartir, pero que abra solo como lectura, así nadie lo modifica y puedes usar tus macros aquí de forma completa.

    suerte

  10. Saludos @giussepe.colan@gmail.com, el problema es que los archivos compartidos NO pueden desbloquearse las hojas, directamente, a juro es necesarios des-compartir el archivo para poder desbloquear una hoja.

    sin embargo existe una solución muy fácil y no entiendo porque la mayoría de los usuarios no la aplican.

    bloquea tus hojas de esta forma

    wLaHoja.Protect Password:=sClaveHojas, UserInterfaceOnly:=True, DrawingObjects:=False, _
                        Contents:=True, Scenarios:=True

    wLaHoja, es tu hoja a bloquear

    sClaveHojas, es la clave que vas a colocar.

    de esta manera, prácticamente puedes hacer de todo (escribir en celdas protegidas especialmente), SIN NECESIDAD de desbloquear la hoja (en archivos compartidos o sin compartir, es lo mismo), eso si, debes hacerlo por macro, es decir, siempre y cuando manipules la celda mediante una macro no hay necesidad de desbloquear la hoja, pero si deseas escribir "manualmente" en una celda protegida NO se puede.

    espero que hayas entendido, te coloco un ejemplo con tu propio codigo

    Private Sub Btn_ok_Click()
    
        ActiveWorkbook.Unprotect "79743237" '----´protegemos la hoja
        Hoja2.Unprotect "79743237"
        
        fila = ultima_fila(Hoja2, 1)
        
        For i = 3 To fila '----llenamos los datos de la unidad programada
            Placa = Hoja2.Cells(i, 2)
            
            If txt_placa.Text = Placa And Hoja2.Cells(i, 11) = "Disponible" Then
            Hoja2.Cells(i, 13) = txt_Cod.Text
            Hoja2.Cells(i, 14) = Cbox_tda.Text
            Hoja2.Cells(i, 15) = Format(txt_Hasig, "HH:MM")
            Hoja2.Cells(i, 16) = txt_Rampa
            Hoja2.Cells(i, 12) = Format(Date, "DD/MM/YYYY")
            Hoja2.Cells(i, 11) = "Asignado"
            
            Hoja2.Cells(i, 11).Select
                    With Selection.Interior
                    .Color = vbYellow
                    End With
            
            
                Set rango = Range(Cells(i, 12), Cells(i, 16))
                
                rango.Select
                
                    With Selection.Interior
                    .Color = RGB(255, 255, 0)
                    End With
            
            End If
        Next i
            rpta = Auxiliar.Mensaje_repeticion("Camión Asignado, ¿deseas repetirlo?", "REGISTRO EXITOSO")
        
        ActiveWorkbook.Protect "79743237"
        Hoja2.Protect "79743237"
        
        If rpta = 6 Then
            Call UserForm_Initialize
        Else
            Unload Me
        End If
            Application.ScreenUpdating = True
    End Sub

    estas lineas que tienes al inicio

    ActiveWorkbook.Unprotect "79743237" '----´protegemos la hoja
        Hoja2.Unprotect "79743237"

    y estas otras al final

    ActiveWorkbook.Protect "79743237"
        Hoja2.Protect "79743237"

     

    NO SON NECESARIAS, si desde un principio bloqueas las hojas como te he dicho

    suerte

×
×
  • Create New...

Important Information

Privacy Policy