Jump to content

Antoni

Members
  • Content Count

    10,200
  • Joined

  • Last visited

  • Days Won

    557

Everything posted by Antoni

  1. Animo amigo que esto ya está. ¡Quedate en casa!
  2. En lugar de suprimirlo yo lo cambiaría por Exit Sub. Un abrazo Juan. 🙂
  3. Como estamos prisioneros y hay pocas cosa que hacer, déjame unos días a ver si puedo extender la planificación a un periodo determinado. PD: Y si, tenemos la mejor cerveza de España y posiblemente en uno de los sitios donde mejor la tiran. 🙂
  4. Nadie se va a molestar en crear un entorno para poder probar el resultado. Sube tu archivo,
  5. No encuentro el archivo original. ¿Tu lo tienes?, si es así súbelo para poder comparar si hay alguna diferencia en el código.
  6. Tengo Office 365 y la macro me funciona sin problemas. Sube tu archivo y le echo un vistazo.
  7. Prueba la macro: Sub Definitiva_Posta() ' ' Definitiva_Posta Macro ' Application.ScreenUpdating = False Hoja1.Range("B1:B10").Copy Hoja2.Range("A3").PasteSpecial Paste:=xlPasteValues, Transpose:=True Hoja2.Rows(3).Insert Shift:=xlDown Hoja1.Range("B3:B10").ClearContents Application.CutCopyMode = False End Sub
  8. VBA no permite referirse a un control ActiveX cuyo nombre este en una variable tipo string. Entiendo que los botones están en la hoja, si los cambias a botones del tipo control de formulario, si podrías hacerlo. También se puede intentar con un módulo de clase. Sube tu archivo con todas las macros e intentaré buscarte una solución.
  9. Revisa el adjunto, si tienes cualquier duda, comentas. Prueba_Excel.xlsm
  10. A ver si te he entendido. Revisa el adjunto. Pasar Datos.xlsm
  11. He ejecutado la macro en tu archivo y funciona correctamente.
  12. Para tu primera consulta la respuesta es sencilla, combina la propiedad TabStop=False con la propiedad TakeFocusOnClic=False y listo. Tu segunda consulta tiene múltiples soluciones, eso si, todas a través de código. Los botones no tienen las propiedades BorderStyle/BorderColor por lo que habría que recurrir a un label transparente con el borde deseado, que se fuera posicionando sobre el botón al pasar sobre el y ocultándolo al perder el foco. Esta solución no es excesivamente complicada, pero si engorrosa. Yo particularmente prefiero cambiar los colores fuente/fondo del botón al pasar sobre el y restaurarlos al posicionarnos sobre el fondo del formulario. Revisa el adjunto a ver que te parece. Prueba resalte botones.xlsm
  13. Será algo parecido a esto, o no, porqué como no has subido un archivo explicando con un ejemplo lo que quieres. Sub Copiar() Application.ScreenUpdating = False x = 1 With Hoja2 .Rows.Clear Do Until Range("A" & x) = "" Set celda = Columns("B").Find(Range("A" & x), , xlValues, xlPart) If celda Is Nothing Then x = x + 1 Else fila = fila + 1 Rows(celda.Row).Copy .Rows(fila) Rows(celda.Row).Delete End If Loop .Columns("A").Delete .Select End With End Sub
  14. Ejemplo para F4: Range("F4").FormulaLocal = "=SUMAR.SI.CONJUNTO($H$8:$H$508;$A$8:$A$508;"">=""&F2;$A$8:$A$508;""<=""&F3)" o también Range("F4").Formula = "=SUMIFS($H$8:$H$508,$A$8:$A$508,"">=""&F2,$A$8:$A$508,""<=""&F3)" En el caso de FormulaLocal debes usar el separador que tengas definido en Excel, en el ejemplo el punto y coma (;), en el caso de Formula, debes usar obligatoriamente la coma (,) como separador y el nombre de la función en Inglés.
  15. Hablas de un archivo que no subes, de un código que no vemos, de unos checkbox que no sabemos si están en una hoja o en un userform, no especificas que es lo que quieres, ni para que y pretendes que te solucionemos tu problema ¿En serio crees que alguien te va a ayudar?. ☹️
  16. Prueba así: Private Function suma(lista As MSForms.ListBox) As Double Dim i As Integer For i = 0 To lista.ListCount - 1 suma = suma + Val(lista.List(i, 1)) Next End Function
  17. La macro de evento Worksheet_SelectionChange puede sustituirse por esta un poco mas "pro": 🙂 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Not Intersect(Target, Range("D3,D5,D7,D9")) Is Nothing Then Borrar End Sub
  18. Imagino que lo que pretendes es que solo pueda informarse un solo valor en el rango D3, D5, D7 y D9. Cada vez que informes un valor en una celda, se borran los otros tres. He añadido una validación de los valores que pueden entrarse, revisa a fondo el archivo adjunto. Estas son las macros: Private Sub Worksheet_Change(ByVal Target As Range) Select Case Target.Address(False, False) Case "D3": Validar Target, 10 Case "D5": Validar Target, 2 Case "D7": Validar Target, 8 Case "D9": Validar Target, 16 End Select End Sub Private Sub Validar(Target, Dígitos) lista = "0123456789ABCDEF" valor = CStr(Target) If Len(valor) > 0 Then For x = 1 To Len(valor) ok = False For y = 1 To Dígitos If Mid(valor, x, 1) = Mid(lista, y, 1) Then ok = True Next If ok = False Then MsgBox "Solo se admiten valores: " & Left(lista, Dígitos), vbCritical Target = "" Target.Select Exit Sub End If Next End If End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) Select Case Target.Address(False, False) Case "D3": If [D5] <> "" Or [D7] <> "" Or [D9] <> "" Then Borrar Case "D5": If [D3] <> "" Or [D7] <> "" Or [D9] <> "" Then Borrar Case "D7": If [D3] <> "" Or [D5] <> "" Or [D9] <> "" Then Borrar Case "D9": If [D3] <> "" Or [D5] <> "" Or [D7] <> "" Then Borrar End Select End Sub Private Sub Borrar() If [D3] <> "" Then [D3] = "" If [D5] <> "" Then [D5] = "" If [D7] <> "" Then [D7] = "" If [D9] <> "" Then [D9] = "" End Sub ISC 1.xlsm
  19. Súbelo a Mega, DropBox, Sky drive,.........
  20. Te dejo una UDF que hace lo que quieres: Function Buscardanbagex(ByVal Valor As Double) As Double For x = Hoja2.Range("A1").End(xlDown).Row To 1 Step -1 If Valor > Hoja2.Range("A" & x) Then Buscardanbagex = Hoja2.Range("B" & x + 1) Exit Function End If Next End Function Te dejo un ejemplo de como aplicarla. Buscardanbagex.xlsm
  21. Selecciona el barco de lista desplegable de la columna C, si no es esto lo que necesitas, explícate mejor. barcos.xls
  22. No encuentra el dato, inténtalo así: set celda = rng.Find(what:=ActiveSheet.Name, lookat:=xlWhole, MatchCase:=False) if not celda is nothing then fila = celda.row secop = Sheets("IMPRESION_SEC_OP").Cells(fila, 1).Text end if
  23. Si no subes tu archivo, nadie va a poder ayudarte.
×
×
  • Create New...

Important Information

Privacy Policy


CTA Templates.png