Jump to content

Antoni

Members
  • Content Count

    10,198
  • Joined

  • Last visited

  • Days Won

    557

Posts posted by Antoni


  1. 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


  2. 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

     


  3. 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.


  4. 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

×
×
  • Create New...

Important Information

Privacy Policy


CTA Templates.png