Saltar al contenido
  • Estadísticas de usuarios

    31972
    Usuarios totales
    12075
    Máx. usuarios conectados
    foodandtrees
    Usuario más nuevo
    foodandtrees
    Unido
  • Plantillas gratuitas

  • Top descargas

    1. Por Enigma25
         1   0
    2. Por DiegoLG
         1   2
  • Resumen de reglas y valores del foro

    • Quien más aporta, más recibe.
    • Lee con atención, pregunta con intención.
    • Todos podemos aportar.
    • No incites ni participes en debates estériles
    • Trata a los demás como te gustaría que te trataran a ti.
    • La brevedad mola.
    • Enlaza siempre que puedas.
    • Si dices "no", plantea alternativas.
    • Lee e infórmate primero.
    • No se permite la publicación de enlaces a servicios de almacenamiento de archivos.
    • No se permite ofrecer ni solicitar servicios servicios de pago sin autorización de los administradores.

    Aquí están todas las normas.

  • Quién está conectado (Ver lista completa)

    • No hay usuarios conectados
  • Últimos mensajes

    • Buenas tardes compañero tengo los siguiente, me esta resultado pero no me esta extrayendo el ultimo valor de la columna K del rango especificado, me podrían ayudar creo que es por que tiene celdas vacias dentro del rango especificado. Como solucionaría este impase agradezco sus comentarios. Sub extraer() Dim jh5 As Workbook Dim sh1, jh6 As Worksheet Dim ndatos, uvalor As Double Application.ScreenUpdating = False     Set sh1 = ThisWorkbook.Sheets("Hoja1")     If sh1.Cells(1, "L").Value = "Mezcla" Then              Set jh5 = Workbooks.Open("\\10.7.10.1\calidad\RegCalidad 2024\Molienda de Cemento y Empaque\Base datos Cementos producido 2024.xlsx", ReadOnly:=True)     Set jh6 = Sheets("MEZCLA ADICION")     ndatos = Application.WorksheetFunction.Count(jh6.Range("K371:K736"))     uvalor = Application.WorksheetFunction.Index(jh6.Range("K371:K736"), ndatos)     sh1.Cells(1, "N") = uvalor          jh6.Activate     ActiveWorkbook.Close          Else            'Call calizaco          End If        Application.ScreenUpdating = True End Sub  
    • La macro lo que pretende es hacer lo siguiente: En primera instancia no tenia el checkbox por lo tanto la macro estaba realizando su trabajo en cual consiste en los siguiente. Revisa la columna K de la hoja CALIZA ADICIÓN CTO y compara los dos últimos datos, si el ultimo dato es mayor que el anterior los suma y los divide entre 2, ahora si el ultimo dato es menor toma ese dato. Luego verifica la columna K de la hoja CALIZA ADICION, si el ultimo valor es menor que el obtenido en la fase anterior toma este nuevo valor sino deja el valor anterior. Resulta que no se tomo en cuenta la mezcla de materia prima. Entonces se me ocurrió usar un select que cuando utilicemos la mezcla haga otro procedimiento sino hago el procedimiento ya mencionado y es aquí donde me enrede. Espero haberme explicado. Ahora si de alguna manera se puede mejorar lo que tengo se los agradecería.
    • Buenos dias gracias por responder, te adjunto el codigo que tiene actualmente la hoja y que trabaja sin problemas. El detalle es que no se tomo en cuenta otra variable y es la que quiero introducior con el CheckBox y es lo que quiero que me ayuden a engranar. O si es posible mejorarlo. Muchas gracias por su apoyo Sub Pignea() Dim jh1, jh3 as Workbook Dim sh1, jh1, jh2, jh3, jh4 as Worksheet Set jh1 = Workbooks.Open("\\10.7.10.1\calidad\SEGUIMIENTO HORA-HORA\PREHOMO.xlsx", ReadOnly:=True) Set jh2 = Sheets("CALIZA ADICIÓN CTO") jh2.Activate jh2.Cells(4, "A").Select JFila = ActiveCell.Row For i = 1 To 4 JFila = jh2.Cells(JFila, "A").End(xlDown).Row Next i JFila = Cells(JFila, "K").End(xlUp).Row End If If jh2.Cells(JFila, "K") < jh2.Cells(JFila - 1, "K") Then Cal1 = jh2.Cells(JFila, "K") Else Cal1 = (jh2.Cells(JFila, "K") + jh2.Cells(JFila - 1, "K")) / 2 End If Set jh3 = Workbooks.Open("\\10.7.10.1\calidad\RegCalidad 2024\Molienda de Cemento y Empaque\Base datos Cementos producido 2024.xlsx", ReadOnly:=True) Set jh4 = Sheets("CALIZA ADICION") For i = 371 To 736 If (Not (jh4.Cells(i, "K") = Empty)) And jh4.Cells(i, "A") = (fecha - 1) And jh4.Cells(i, "B") = "4" Then Cal2 = jh4.Cells(i, "K") Else If Cal2 < 2 Or Cal2 > 59 Then Cal2 = 60 End If End If Next i Filacal = jh4.Cells(736, "K").End(xlUp).Row Cal3 = jh4.Cells(Filacal, "K") If Cal2 = 60 Then Cal4 = Cal3 Else Cal4 = Cal2 End If jh4.Activate ActiveWorkbook.Close If Cal1 < Cal4 Then Caliza = Cal1 Else Caliza = Cal4 End If sh1.Activate sh1.Cells(1, "N") = Caliza jh2.Activate ActiveWorkbook.Close
    • lo mismo que te sugeri 'alla'... te dejo tres observaciones 'esencialmente basicas' que estas omitiendo en el codigo que expones: 1ª vba NO es (como) vb 'stand-alone', vba requiere asignar el tipo a cada variable declarada (por lo tanto)... - de tu primera instruccion:   Dim sh1, jh2, jh3, jh4, jh5, jh6 As Worksheet SOLO la ultima variable (jh6) es de tipo 'worksheet', las demas 'asumen' Variant (por omision) 2ª a la primera variable (sh1) tampoco le asignaste una referencia - ANTES de la instruccion:   If sh1.CheckBox1.Value = True Then DEBES vincular el 'checkbox' con 'su hoja' (que asumo es...) la hoja activa del libro activo ? - agrega una instruccion ± asi:   Set sh1 = ActiveSheet 3ª tienes otras variables NO asignadas (y alguna/s del tipo incorrecto) por el resto... la pelota se queda en tu cancha (es un codigo muy 'saltimbanqui') ?
    • Buenas tardes estimados, tengo la siguiente macro donde quiero que al seleccionar el checkbox1 me ejecute el primer procedimiento de lo contario siga al siguiente procedimiento, pero me esta tomando el valor en la casilla de adicion del segundo procedimiento. Agradezco me puedan orientar gracias. Sub Dedicion() dim sh1, jh2, jh3, jh4, jh5, jh6 as Worksheet If sh1.CheckBox1.Value = True Then Set jh5 = Workbooks.Open("\\10.7.10.1\calidad\RegCalidad 2024\Molienda de Cemento y Empaque\Base datos Cementos producido 2024.xlsx", ReadOnly:=True) Set jh6 = Sheets("MEZCLA ADICION") jh6.Activate jh6.Cells(4, "A").Select JFila = ActiveCell.Row For i = 371 To 736 JFila = jh6.Cells(JFila, "A").End(xlDown).Row Next i JFila = Cells(JFila, "K").End(xlUp).Row Cal5 = jh6.Cells(JFila, "K") Else Set jh1 = Workbooks.Open("\\10.7.10.1\calidad\SEGUIMIENTO HORA-HORA\PREHOMO.xlsx", ReadOnly:=True) Set jh2 = Sheets("CALIZA ADICIÓN CTO") jh2.Activate jh2.Cells(4, "A").Select JFila = ActiveCell.Row For i = 1 To 4 JFila = jh2.Cells(JFila, "A").End(xlDown).Row Next i JFila = Cells(JFila, "K").End(xlUp).Row End If If jh2.Cells(JFila, "K") < jh2.Cells(JFila - 1, "K") Then Cal1 = jh2.Cells(JFila, "K") Else Cal1 = (jh2.Cells(JFila, "K") + jh2.Cells(JFila - 1, "K")) / 2 End If Set jh3 = Workbooks.Open("\\10.7.10.1\calidad\RegCalidad 2024\Molienda de Cemento y Empaque\Base datos Cementos producido 2024.xlsx", ReadOnly:=True) Set jh4 = Sheets("CALIZA ADICION") For i = 371 To 736 If (Not (jh4.Cells(i, "K") = Empty)) And jh4.Cells(i, "A") = (fecha - 1) And jh4.Cells(i, "B") = "4" Then Cal2 = jh4.Cells(i, "K") Else If Cal2 < 2 Or Cal2 > 59 Then Cal2 = 60 End If End If Next i Filacal = jh4.Cells(736, "K").End(xlUp).Row Cal3 = jh4.Cells(Filacal, "K") If Cal2 = 60 Then Cal4 = Cal3 Else Cal4 = Cal2 End If jh4.Activate ActiveWorkbook.Close If Cal1 < Cal4 Then Caliza = Cal1 Else Caliza = Cal4 End If sh1.Activate sh1.Cells(1, "N") = Caliza jh2.Activate ActiveWorkbook.Close Application.ScreenUpdating = True End Sub   Cemento.xlsm Cemento.zip
  • Últimas insignias

    • crengifo subió de rango
      Principiante
    • MarianoCruz obtuvo la insignia
      + de 1 año
    • steixidor obtuvo la insignia
      Primera publicación
    • Paco Garrido obtuvo la insignia
      + de 1 año
    • mao123 obtuvo la insignia
      + de 1 año
  • Estadísticas de descargas

    • Archivos
      184
    • Comentarios
      96
    • Revisiones
      27

    Más información sobre "Un juego solitario en Excel"
    Última descarga
    Por pegones1

    4    0

  • Estadísticas de la comunidad

    • Temas totales
      44.7k
    • Mensajes totales
      260.2k
×
×
  • 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.