Macro al clikear un rango

09/09/2009 - 17:30 por Angelo Vernaza | Informe spam
Hola buenos días,

Quisiera que me ayudaran a hacer una Macro la cual en el rango A2:A500
se haga lo siguiente:

1. Al seleccionar una celda coloque la letra "a" si en todo caso la
letra "a" ya estaba puesta que la quite.

Todo esto para el rango indicado,

tambien queria saber si esto haria quel archivo se hiziera lento?

Saludos,
Angelo V.-

Preguntas similare

Leer las respuestas

#1 Cacho
09/09/2009 - 19:06 | Informe spam
Hola! Angelo.
a) Haz clic con el botón derecho de tu ratón en la etiqueta de la hoja en la
que quieres el efecto (abajo a la izquierda)

b) En la ventana que se abrirá, copia y pega lo siguiente:



Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address <> "$D$2" Then Exit Sub
rng = "A2:A500"

Application.ScreenUpdating = False
Range(rng) = Evaluate("transpose(transpose(if(" & rng & "=""A"", """",
""A"")))")
Application.ScreenUpdating = True
End Sub




c) Cierra todas las ventanas del ambiente Visual Basic for Application en el
que te encuentras y retorna al Excel.


A partir de ese momento, cada vez que selecciones la celda "D2" obtendrás el
efecto buscado.

En la macro puedes cambiar la celda en cuestión (D2) tanto como el rango
procesado (A2:A500).

Espero te sea de utilidad.
Saludos, Cacho.
Respuesta Responder a este mensaje
#2 Angelo Vernaza
09/09/2009 - 21:13 | Informe spam
Hola Cacho,

Creo que no me supe explicar bien, lo que quiero es que al seleccionar
una celda del rango a2:a500 en esa celda se coloque la letra "a" o si
ya esta puesta que la borre en todo caso.

Saludos,
Angelo V.-

On 9 sep, 12:06, Cacho wrote:
Hola! Angelo.
a) Haz clic con el botón derecho de tu ratón en la etiqueta de la hoja en la
que quieres el efecto (abajo a la izquierda)

b) En la ventana que se abrirá, copia y pega lo siguiente:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address <> "$D$2" Then Exit Sub
rng = "A2:A500"

Application.ScreenUpdating = False
Range(rng) = Evaluate("transpose(transpose(if(" & rng & "=""A"", """",
""A"")))")
Application.ScreenUpdating = True
End Sub

c) Cierra todas las ventanas del ambiente Visual Basic for Application en el
que te encuentras y retorna al Excel.

A partir de ese momento, cada vez que selecciones la celda "D2" obtendrás el
efecto buscado.

En la macro puedes cambiar la celda en cuestión (D2) tanto como el rango
procesado (A2:A500).

Espero te sea de utilidad.
Saludos, Cacho.
Respuesta Responder a este mensaje
#3 jose
09/09/2009 - 21:40 | Informe spam
En la hoja "ThisWorkbook":


Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target
As Range)

If Target.Column = 1 And Target.Row >= 2 And Target.Row <= 500 Then
If Target.Value = "a" Then
Target.Value = ""
Else
Target.Value = "a"
End If
End If

End Sub


"Angelo Vernaza" wrote:

Hola Cacho,

Creo que no me supe explicar bien, lo que quiero es que al seleccionar
una celda del rango a2:a500 en esa celda se coloque la letra "a" o si
ya esta puesta que la borre en todo caso.

Saludos,
Angelo V.-

On 9 sep, 12:06, Cacho wrote:
> Hola! Angelo.
> a) Haz clic con el botón derecho de tu ratón en la etiqueta de la hoja en la
> que quieres el efecto (abajo a la izquierda)
>
> b) En la ventana que se abrirá, copia y pega lo siguiente:
>
> Private Sub Worksheet_SelectionChange(ByVal Target As Range)
> If Target.Address <> "$D$2" Then Exit Sub
> rng = "A2:A500"
>
> Application.ScreenUpdating = False
> Range(rng) = Evaluate("transpose(transpose(if(" & rng & "=""A"", """",
> ""A"")))")
> Application.ScreenUpdating = True
> End Sub
>
> c) Cierra todas las ventanas del ambiente Visual Basic for Application en el
> que te encuentras y retorna al Excel.
>
> A partir de ese momento, cada vez que selecciones la celda "D2" obtendrás el
> efecto buscado.
>
> En la macro puedes cambiar la celda en cuestión (D2) tanto como el rango
> procesado (A2:A500).
>
> Espero te sea de utilidad.
> Saludos, Cacho.


Respuesta Responder a este mensaje
#4 Cacho
09/09/2009 - 22:46 | Informe spam
Ja ja ja...
Entiendo: me confundió tu comentario: -"Todo esto para el rango indicado".
No hay problema.

Entonces lo que debes incorporar es algo más sencillo como:



Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, [a2:a500]) Is Nothing Then Exit Sub
Select Case Target.Value
Case "A"
Target = ""
Case Else
Target = "A"
End Select
End Sub



Saludos, Cacho.
Respuesta Responder a este mensaje
#5 Angelo Vernaza
09/09/2009 - 23:13 | Informe spam
Hola muchas gracias por su ayuda,

Jose: Funciona pero lo hace en todas las paginas, solo lo necesitaba
en una hoja

Cacho: Funciona pero faltaria perfeccionar que si selecciono un rango
dentro de el rango a2:a500 me haga la misma operación, pero en este
momento me genera un error.

En espera de sus comentarios.

Saludos,
Angelo V.-

On 9 sep, 15:46, Cacho wrote:
Ja ja ja...
Entiendo: me confundió tu comentario: -"Todo esto para el rango indicado".
No hay problema.

Entonces lo que debes incorporar es algo más sencillo como:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, [a2:a500]) Is Nothing Then Exit Sub
Select Case Target.Value
Case "A"
  Target = ""
Case Else
  Target = "A"
End Select
End Sub

Saludos, Cacho.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida