Compartir a través de

evento SelectionChange

Anónimas
2019-02-16T18:21:30+00:00

Como restringir del evento SelectionChange a un rango en concreto.

Microsoft 365 y Office | Excel | Para la casa | Windows

Pregunta bloqueada. Esta pregunta se migró desde la Comunidad de Soporte técnico de Microsoft. Puede votar si es útil, pero no puede agregar comentarios o respuestas ni seguir la pregunta.

0 comentarios No hay comentarios

10 respuestas

Ordenar por: Muy útil
  1. Héctor Miguel 71,595 Puntos de reputación
    2019-02-17T03:52:59+00:00

    la función de vba "if...end if" tiene varias estructuras (p.ej.)

      if <condición> then

        ' acciones si se cumple la condición '

      end if

      if <condición> then

        ' acciones si se cumple la condición '

      else

        ' acciones si NO se cumple la condición '

      end if

    en una sola línea (primera forma) SIN el "end if":

      if <condición> then [acciones]

    en una sola línea (segunda forma) SIN el "end if":

      if <condición> then [acciones] else [otras acciones]

    (hay más)

    saludos,

    hector.

    ¿Le ha resultado útil esta respuesta?

    0 comentarios No hay comentarios
  2. Anónimas
    2019-02-17T03:27:42+00:00

    Lamento no haberme hecho entender.

    Veras, me cuesta asumir que en el IF se puedan colocar resultados tan diferentes, a mi entender, como son una formula y un MSGBOX.

    ¿Le ha resultado útil esta respuesta?

    0 comentarios No hay comentarios
  3. Héctor Miguel 71,595 Puntos de reputación
    2019-02-17T01:30:59+00:00

    intersect devuelve un objeto de tipo Range que incluye (si existe) toda coincidencia entre los rangos pasados a la función (no importa cual sea su orden)

    en cuanto a la segunda parte de tu consulta (yo ?) haría pruebas para entender a que parte del target pretendo hacer saltar el mensaje (a las coincidencias ? o a las exclusiones ?)

    saludos,

    hector.

    ¿Le ha resultado útil esta respuesta?

    0 comentarios No hay comentarios
  4. Anónimas
    2019-02-16T21:58:13+00:00

    O sea,si coloco el rango como segundo argumento de la función Intersect, el evento no afectara a ninguna  otra celda de la hoja,no es asi?

    Y ya que la formula forma parte del THEN del IF entonces en el ELSE podría colocar la función MSGBOX con el mensaje " Aquí no"; no es cierto esto?

    ¿Le ha resultado útil esta respuesta?

    0 comentarios No hay comentarios
  5. Héctor Miguel 71,595 Puntos de reputación
    2019-02-16T20:34:50+00:00

    suponiendo que tu rango "en concreto" fueran las celdas/rangos: [B2:B15], [C7] y [E5:E6]

    pon lo siguiente en el modulo de codigo de "esa" hoja:

    Private Const enConcreto As String = "b2:b15,c7,e5:e6"

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)

      If Intersect(Target, Range(enConcreto)) Is Nothing Then Exit Sub

      ' aqui el resto de acciones para el _selectionchange p.ej. '

      MsgBox Target.Address

    End Sub

    saludos,

    hector.

    ¿Le ha resultado útil esta respuesta?

    0 comentarios No hay comentarios