Toda la actividad
- Hoy
-
Reseteo de recuentos y nuevos datos
Así lo he hecho, he aceptado la segunda columna de anotación y he añadido una macro: Private Sub Worksheet_Calculate() Dim f As Long Dim disparar As Boolean ' Si ya se disparó una vez, salimos If Me.Range("XX2").Value <> "" Then Exit Sub ' Comprobamos si alguna W llegó a 2 For f = 2 To 6 If Me.Cells(f, "W").Value = 2 Then disparar = True Exit For End If Next f ' Si ninguna llegó a 2, no hacemos nada If disparar = False Then Exit Sub ' Guardamos TODO el rango como base For f = 2 To 6 Me.Cells(f, "XX").Value = Me.Cells(f, "W").Value ' Fórmula en Y restando su base Me.Cells(f, "Y").FormulaLocal = _ "=CONTAR.SI.CONJUNTO(Datos!B:B;$V$1;Datos!D:D;$V" & f & ")" & _ "-CONTAR.SI.CONJUNTO(Datos!B:B;$V$1;Datos!E:E;$V" & f & ")" & _ "-XX" & f Next f End Sub No es la opción más bonita porque sigue contando los objetos en la columna W, pero la función me resulta suficiente para poder llevar la cuenta. Tendré que hacer una pequeña macro para cada jugadora, son 14, pero espero no tener problemas
-
Reseteo de recuentos y nuevos datos
Igual puedo conseguir lo que necesito con dos columnas de anotación? Pero seguiría necesitando una macro que hiciera el efecto: Cuando en la primera columna una de las casillas llegue a 2, el recuento continúa en la segunda. 🤔
-
Maku ha empezado a seguir a Reseteo de recuentos y nuevos datos y Recursos imprescindibles para comenzar con macros y VBA
-
Reseteo de recuentos y nuevos datos
Buenas noches, tengo un problema que no consigo solventar tras tres días dándole vueltas. Tengo esta hoja de registro de un juego: -En la hoja Tablas Jugadoras necesito que unas casillas me hagan el recuento de los objetos encontrados por la jugadora, restando los perdidos. Puedo hacerlo con una fórmula, el problema es que quiero que cuando la jugadora haga una pareja (llegue a dos un objeto) estos datos se reseteen, marque un 1 en la celda verde de encima y vuelva a contabilizar desde cero para la segunda pareja (Son necesarias dos) También necesito que me aparezca un 1 en la casilla que está encima de esos recuentos si la jugadora ha conseguido una pareja y VERDADERO si la jugadora ha conseguido las dos. Lo he intentado con la hoja ResetObjetos, pero me encuentro siempre con el mismo problema:cuando una jugadora consigue su primera pareja todo va bien: - resetea anotando lo elminado en la hoja ResetObjetos - me marca 1 en la casilla verde Lo malo es que en cuanto otra jugadora consigue una pareja me marca como verdadero las casillas verdes de las dos jugadoras. He simplificado al máximo el archivo, he eliminado datos, macros, dibujos... espero que lo que queda sea suficiente Gracias por su tiempo! Envío.xlsm
- Última semana
-
Crear un loop para emitir recibos
Debes mover las líneas que leen Range("AK27").Value dentro del bloque donde configuras el objeto Email, asegurándote de que se lean después de que todos los datos del recibo se hayan actualizado (justo antes de preparar el envío). Al mover la lectura de Range("AK27").Value al momento justo antes de usarla (With Email), te aseguras de que estás capturando el valor dinámico y actualizado para cada recibo.
- Antes
-
Sergio ha cambiado su foto de perfil
-
Saludos
¡Hola Héctor! Encantados de echarte una mano en tus quehaceres excelianos.
-
-
Año 2025
Solo puedo soñar con esto. No me dan vacaciones. ¡Feliz Año Nuevo a todos!
-
Año 2025
¡Buenos deseos para usted también! Y felicidades para todos los participantes.
-
Israel Cassales ha empezado a seguir a Año 2025
-
Devuelve texto por rango de horas
No sabía que eso era posible, gracias.
-
fernandoflr ha empezado a seguir a Devuelve texto por rango de horas
-
40 aniversario de Excel
¡Está bien, escribiré cuando tenga tiempo!
-
Aplicar formato a celdas en base a un valor
Hola A eso se le llama formato condicional. Primero selecciona todas las filas (tus celdas grises) Vas a Inicio => Formato Condicional => Nueva Regla => Utilice una fórmula... (la última opción) Luego, en el cuadro de abajo pones algo como: =$L2="Facturado" Das clic al botón Formato y asignas el color que desees Repites del proceso para cada color que quieras.
-
DiegoPC ha empezado a seguir a Aplicar formato a celdas en base a un valor
-
40 aniversario de Excel
Sigue mi blog y descubre novedades que te sorprenderán gratamente: Blog #ExcelPedroWave @fernandoflr ¿Por qué no escribes en mi blog sobre lo que te parece genial? Salu2, Pedro Wave
-
Aplicar formato a celdas en base a un valor
Hola, Tengo este libro donde voy poniendo facturas de compra. Me gustaría que dependiendo del valor que elija del combo de la izquierda se aplicara un formato (color de celda) al grupo de celdas que he marcado en gris. Por ejemplo: Si he marcado Facturado que el grupo de celdas de la izquierda (las coloreadas en gris) tengan fondo amarillo, si elijo Pagado en verde, si elijo inci. (incidencia) en rojo... ¿Se podría hacer? Muchas gracias por adelantado.
-
-
Saludos
Hola, Soy Héctor, tengo un negocio físico. Uso Excel desde tiempos pretéritos pero sin conocimiento alguno... lo típico de ir aprendiendo según se va necesitando. Gracias por crear este foro de ayuda... Espero ir aprendiendo e ir aportando. Un saludo
-
Año 2025
Me tomaré dos semanas de vacaciones y me iré a las islas.
-
-
40 aniversario de Excel
Esto es algo nuevo para mí, genial.
-
Crear un loop para emitir recibos
hola! como estás? quiero subir el archivo, pero la limitación de tamaño me condiciona a sacarle tantas cosas que probablemente termine eliminando partes que son necesarias evaluar para ver donde está el problema. Dejé solo dos hojas, a las cuales le borré la mayor parte de los datos que estaban cargados en las mismas, borré todos los módulos innecesarios en visual basic, saqué todos los botones que no se utilizarían, etc etc.... ya no sé que más sacarle sin que quede algo inútil y aún así el archivo ocupa 178 kb. He visto en otra consulta de macros que una persona subió un archivo de más de 800 kb. Como puedo hacer?
-
Crear un loop para emitir recibos
Sube tu archivo
-
HectorO se ha unido a esta comunidad
-
Crear un loop para emitir recibos
hola! me podrás ayudar a resolver ese problemita que tengo, creo que es lo único que falta para que funcione bien, pero repasé todo el código (con mi limitada comprensión de VB), pero no encontré donde está la falla que hace que no se cambie la direccion de correo de destino a medida que la macro va cambiando de valor en P17. Como comentaba, si cambio de codigo en P17 de manera manual, la celda donde está el correo de destino cambia, pero con la macro no lo hace
-
Saludos
Esta es la primera vez que veo un foro pago, pero me da esperanzas de que aprenderé mucho aquí.
-
fernandoflr se ha unido a esta comunidad
-
Crear un loop para emitir recibos
- Crear un loop para emitir recibos
Hola! anoche estuve revisando, tuve que hacer unos pequeños ajustes en la direccion de la carpeta (en vez de poner la direccion en partes la coloque toda de corrido parecida a como estaba antes) y logramos (vos y yo) que funcione!. Tambien tuve que desactivar la linea de código que bloqueaba la hoja porque sino no estaba dejando que la macro escriba el codigo de la propiedad en la celda, pero eso es lo de menos, supongo que lo puedo solucionar poniendo el bloqueo al final de la macro que creaste o desprotegiendo la celda donde se pone el codigo de propiedad. Así que doy por supuesto que eso lo voy a poder hacer funcionar por lo que entonces voy a marcar como que ya está solucionado lo que necesitaba. Agradezco muchisimo tu ayuda porque era sumamente tedioso tener que estar haciendo los recibos de a uno ya que la macro de envio de recibos es medio lenta. Ahora no me importa si tarda mucho, apretaré el boton y le daré todo el tiempo que se quiera tomar mientras yo hago otra cosa. Gracias nuevamente!!!!- Crear un loop para emitir recibos
Prueba con tu código modificado- Crear un loop para emitir recibos
Sub Imagen13_Haga_clic_en() Dim Izq As Single, Arr As Single, Ancho As Single, Alto As Single Dim rutaArchivo As String Dim Email As CDO.Message Dim t As Single Application.DisplayAlerts = False Application.ScreenUpdating = False ActiveSheet.Unprotect "4324" '--- GENERAR IMAGEN DEL RECIBO --- With Range("H7:R34") Izq = .Left: Arr = .Top: Ancho = .Width: Alto = .Height .CopyPicture End With With ActiveSheet.ChartObjects.Add(Izq, Arr, Ancho, Alto) .Activate .Chart.Paste '---- RUTA DEL ARCHIVO (CORREGIDO) ---- rutaArchivo = "C:\Users\Usuario\Google Drive\LOCACIONES\REC. PROPIETARIOS\" & _ Format(Range("Q20"), "mmmYY") & " - " & _ Range("Q9") & " - " & _ Range("P17") & " - " & _ Range("K19") & ".JPG" .Chart.Export rutaArchivo .Delete End With 'Guardar ruta en AK30 por compatibilidad Range("AK30").Value = rutaArchivo '--- PEGAR BLOQUE DE DATOS --- Range("AH6").Copy Range("AH9").PasteSpecial Paste:=xlPasteValuesAndNumberFormats Range("Y7:AI33").Copy Range("H7").PasteSpecial xlPasteAll ActiveSheet.Protect "4324" ActiveWorkbook.Save '--- PREPARAR ENVÍO DEL MAIL --- Set Email = New CDO.Message correo_origen = "nqn.negocios@gmail.com" Clave_correo_origen = "wkfhaapcnjljbwju" correo_destino = Range("AK27").Value Asunto = Range("AK28") Mensaje = Range("AK29") Email.Configuration.Fields(cdoSMTPServer) = "smtp.gmail.com" Email.Configuration.Fields(cdoSendUsingMethod) = 2 With Email.Configuration.Fields .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465 .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 .Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 30 .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = correo_origen .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = Clave_correo_origen .Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True End With '--- VALIDAR ARCHIVO ANTES DE ENVIAR --- t = Timer Do While Dir(rutaArchivo) = "" And Timer - t < 5 DoEvents Loop If Dir(rutaArchivo) = "" Then MsgBox "ERROR: El archivo no se generó: " & rutaArchivo, vbCritical Exit Sub End If '--- ENVIAR MAIL --- With Email .To = correo_destino .From = correo_origen .Subject = Asunto .TextBody = Mensaje .Configuration.Fields.Update .AddAttachment rutaArchivo On Error Resume Next .Send End With End Sub Sub powerbuttonINQ() Dim Izq As Single, Arr As Single, Ancho As Single, Alto As Single Dim rutaArchivo As String Dim Email As CDO.Message Dim t As Single Application.DisplayAlerts = False Application.ScreenUpdating = False ActiveSheet.Unprotect "4324" '--- GENERAR IMAGEN DEL RECIBO --- With Range("H7:R33") Izq = .Left: Arr = .Top: Ancho = .Width: Alto = .Height .CopyPicture End With With ActiveSheet.ChartObjects.Add(Izq, Arr, Ancho, Alto) .Activate .Chart.Paste rutaArchivo = "C:\Users\Usuario\Google Drive\LOCACIONES\REC. INQUILINOS\" & _ Format(Range("Q20"), "mmmYY") & " - " & _ Range("Q9") & " - " & _ Range("P17") & " - " & _ Range("J17") & ".JPG" .Chart.Export rutaArchivo .Delete End With Range("AK30").Value = rutaArchivo Range("AH6").Copy Range("AH9").PasteSpecial Paste:=xlPasteValuesAndNumberFormats Range("Y7:AI33").Copy Range("H7").PasteSpecial xlPasteAll ActiveSheet.Protect "4324" ActiveWorkbook.Save '--- EMAIL CONFIG --- Set Email = New CDO.Message correo_origen = "nqn.negocios@gmail.com" Clave_correo_origen = "wkfhaapcnjljbwju" correo_destino = Range("AK27").Value Asunto = Range("AK28") Mensaje = Range("AK29") Email.Configuration.Fields(cdoSMTPServer) = "smtp.gmail.com" Email.Configuration.Fields(cdoSendUsingMethod) = 2 With Email.Configuration.Fields .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465 .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 .Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 30 .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = correo_origen .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = Clave_correo_origen .Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True End With '--- VERIFICAR ARCHIVO --- t = Timer Do While Dir(rutaArchivo) = "" And Timer - t < 5 DoEvents Loop If Dir(rutaArchivo) = "" Then MsgBox "ERROR: El archivo no se generó: " & rutaArchivo, vbCritical Exit Sub End If '--- ENVIAR --- With Email .To = correo_destino .From = correo_origen .Subject = Asunto .TextBody = Mensaje .Configuration.Fields.Update .AddAttachment rutaArchivo On Error Resume Next .Send End With End Sub- Crear un loop para emitir recibos
Hola! como estás? Ahora parece ser que quisiera funcionar la macro, pero no he logrado que llegue hasta el final porque me arroja error cuando tiene que adjuntar el archivo (lo cual normalmente funciona bien)... no lo entiendo, porque estuve revisando si el archivo seguía guardandose con el mismo formato y en la misma carpeta y, por lo que vi, está todo correcto. Buenas tardes! Estuve haciendo la prueba. La macro no llega a finalizar porque arroja el error que muestro en los archivos adjuntos. No entiendo por qué no logra encontrar los archivos al ejecutar el loop, porque si utilizo la macro original (es decir, sin el loop), funciona correctamente. Se me ocurría que quizá al copiar y pegar el codigo en la celda P17 quizá estuviera poniendo algo extra en el nombre del archivo a crear que hiciera que el recibo creado no se guardara exactamente con el mismo nombre por el que luego la macro lo intentaría localizar el para enviarlo por mail, pero revisé y aparentemente los archivos se guardan con el mismo formato que se guardaron siempre. Sabrán qué puede ser?- FORMULA EXCEL PARA VALIDAR UN NÚMERO DE CUENTA BANCARIA
Hola Susana. ¿No puedes usar una Macro? No te preocupes, prueba con esta formula, suponiendo que el IBAN de la cuenta está en A2: =SI(EXTRAE(A2;13;2)=SI(11-RESIDUO(EXTRAE(TEXTO(EXTRAE(A2;5;4)&EXTRAE(A2;9;4);"0000000000");1;1)*1+EXTRAE(TEXTO(EXTRAE(A2;5;4)&EXTRAE(A2;9;4);"0000000000");2;1)*2+EXTRAE(TEXTO(EXTRAE(A2;5;4)&EXTRAE(A2;9;4);"0000000000");3;1)*4+EXTRAE(TEXTO(EXTRAE(A2;5;4)&EXTRAE(A2;9;4);"0000000000");4;1)*8+EXTRAE(TEXTO(EXTRAE(A2;5;4)&EXTRAE(A2;9;4);"0000000000");5;1)*5+EXTRAE(TEXTO(EXTRAE(A2;5;4)&EXTRAE(A2;9;4);"0000000000");6;1)*10+EXTRAE(TEXTO(EXTRAE(A2;5;4)&EXTRAE(A2;9;4);"0000000000");7;1)*9+EXTRAE(TEXTO(EXTRAE(A2;5;4)&EXTRAE(A2;9;4);"0000000000");8;1)*7+EXTRAE(TEXTO(EXTRAE(A2;5;4)&EXTRAE(A2;9;4);"0000000000");9;1)*3+EXTRAE(TEXTO(EXTRAE(A2;5;4)*3&EXTRAE(A2;9;4);"0000000000");10;1)*6;11)=10;1;SI(11-RESIDUO(EXTRAE(TEXTO(EXTRAE(A2;5;4)&EXTRAE(A2;9;4);"0000000000");1;1)*1+EXTRAE(TEXTO(EXTRAE(A2;5;4)&EXTRAE(A2;9;4);"0000000000");2;1)*2+EXTRAE(TEXTO(EXTRAE(A2;5;4)&EXTRAE(A2;9;4);"0000000000");3;1)*4+EXTRAE(TEXTO(EXTRAE(A2;5;4)&EXTRAE(A2;9;4);"0000000000");4;1)*8+EXTRAE(TEXTO(EXTRAE(A2;5;4)&EXTRAE(A2;9;4);"0000000000");5;1)*5+EXTRAE(TEXTO(EXTRAE(A2;5;4)&EXTRAE(A2;9;4);"0000000000");6;1)*10+EXTRAE(TEXTO(EXTRAE(A2;5;4)&EXTRAE(A2;9;4);"0000000000");7;1)*9+EXTRAE(TEXTO(EXTRAE(A2;5;4)&EXTRAE(A2;9;4);"0000000000");8;1)*7+EXTRAE(TEXTO(EXTRAE(A2;5;4)&EXTRAE(A2;9;4);"0000000000");9;1)*3+EXTRAE(TEXTO(EXTRAE(A2;5;4)&EXTRAE(A2;9;4);"0000000000");10;1)*6;11)=11;0;11-RESIDUO(EXTRAE(TEXTO(EXTRAE(A2;5;4)&EXTRAE(A2;9;4);"0000000000");1;1)*1+EXTRAE(TEXTO(EXTRAE(A2;5;4)&EXTRAE(A2;9;4);"0000000000");2;1)*2+EXTRAE(TEXTO(EXTRAE(A2;5;4)&EXTRAE(A2;9;4);"0000000000");3;1)*4+EXTRAE(TEXTO(EXTRAE(A2;5;4)&EXTRAE(A2;9;4);"0000000000");4;1)*8+EXTRAE(TEXTO(EXTRAE(A2;5;4)&EXTRAE(A2;9;4);"0000000000");5;1)*5+EXTRAE(TEXTO(EXTRAE(A2;5;4)&EXTRAE(A2;9;4);"0000000000");6;1)*10+EXTRAE(TEXTO(EXTRAE(A2;5;4)&EXTRAE(A2;9;4);"0000000000");7;1)*9+EXTRAE(TEXTO(EXTRAE(A2;5;4)&EXTRAE(A2;9;4);"0000000000");8;1)*7+EXTRAE(TEXTO(EXTRAE(A2;5;4)&EXTRAE(A2;9;4);"0000000000");9;1)*3+EXTRAE(TEXTO(EXTRAE(A2;5;4)&EXTRAE(A2;9;4);"0000000000");10;1)*6;11)))&SI(11-RESIDUO(EXTRAE(EXTRAE(A2;15;10);1;1)*1+EXTRAE(EXTRAE(A2;15;10);2;1)*2+EXTRAE(EXTRAE(A2;15;10);3;1)*4+EXTRAE(EXTRAE(A2;15;10);4;1)*8+EXTRAE(EXTRAE(A2;15;10);5;1)*5+EXTRAE(EXTRAE(A2;15;10);6;1)*10+EXTRAE(EXTRAE(A2;15;10);7;1)*9+EXTRAE(EXTRAE(A2;15;10);8;1)*7+EXTRAE(EXTRAE(A2;15;10);9;1)*3+EXTRAE(EXTRAE(A2;15;10);10;1)*6;11)=10;1;SI(11-RESIDUO(EXTRAE(EXTRAE(A2;15;10);1;1)*1+EXTRAE(EXTRAE(A2;15;10);2;1)*2+EXTRAE(EXTRAE(A2;15;10);3;1)*4+EXTRAE(EXTRAE(A2;15;10);4;1)*8+EXTRAE(EXTRAE(A2;15;10);5;1)*5+EXTRAE(EXTRAE(A2;15;10);6;1)*10+EXTRAE(EXTRAE(A2;15;10);7;1)*9+EXTRAE(EXTRAE(A2;15;10);8;1)*7+EXTRAE(EXTRAE(A2;15;10);9;1)*3+EXTRAE(EXTRAE(A2;15;10);10;1)*6;11)=11;0;11-RESIDUO(EXTRAE(EXTRAE(A2;15;10);1;1)*1+EXTRAE(EXTRAE(A2;15;10);2;1)*2+EXTRAE(EXTRAE(A2;15;10);3;1)*4+EXTRAE(EXTRAE(A2;15;10);4;1)*8+EXTRAE(EXTRAE(A2;15;10);5;1)*5+EXTRAE(EXTRAE(A2;15;10);6;1)*10+EXTRAE(EXTRAE(A2;15;10);7;1)*9+EXTRAE(EXTRAE(A2;15;10);8;1)*7+EXTRAE(EXTRAE(A2;15;10);9;1)*3+EXTRAE(EXTRAE(A2;15;10);10;1)*6;11)));"Valido";"Erroneo") ¿Demasiado largo? Bueno, para los que no apreciáis la belleza de la jungla, puedes usar esta otra: =SI(EXTRAE(A2;13;2)=EXTRAE(12345678910;11-RESIDUO(SUMA(EXTRAE(A2;FILA(INDIRECTO("5:12"));1)*(EXTRAE(37498625;FILA(INDIRECTO("1:8"));1)+1));11);1)&EXTRAE(12345678910;11-RESIDUO(SUMA(EXTRAE(DERECHA(A2;10);FILA(INDIRECTO("1:10"));1)*(EXTRAE(0&137498625;FILA(INDIRECTO("1:10"));1)+1));11);1);"Valido";"No Valido") Esta última depende de la versión de tu excel deberás usar Control+Mayusculas+Intro. Saludos. - Crear un loop para emitir recibos