Como adaptar instrucción

08/04/2009 - 10:46 por Miguel | Informe spam
Saludos,
Tengo una macro en una hoja excel para que me muestre un calendario en
cualquier celda de la columna A, pero necesito que también se muestre
en la columna G, pero no se como hay que adaptar esa instrucción. La
macro que tengo es la siguiente:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim rngFechas As Range
Set rngFechas = Range("A:A") 'Muestra el calendario en
cualquier celda de la columna A
If Union(Target, rngFechas).Address = rngFechas.Address Then
Call abrir_calendario
End Sub

Muchas Gracias.
Un saludo,
Miguel A.

Preguntas similare

Leer las respuestas

#1 Juan M
08/04/2009 - 11:11 | Informe spam
"Miguel" escribió
Saludos,
Tengo una macro en una hoja excel para que me muestre un calendario en
cualquier celda de la columna A, pero necesito que también se muestre
en la columna G, pero no se como hay que adaptar esa instrucción. La
macro que tengo es la siguiente:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim rngFechas As Range
Set rngFechas = Range("A:A") 'Muestra el calendario en
cualquier celda de la columna A
If Union(Target, rngFechas).Address = rngFechas.Address Then
Call abrir_calendario
End Sub

Muchas Gracias.
Un saludo,
Miguel A.


Hola Miguel,

Modifica el código de la siguiente forma:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Debug.Print (Target.Column = 1 Or Target.Column = 7), Target.Count < 2

If (Target.Column = 1 Or Target.Column = 7) And Target.Count < 2 Then
Call abrir_calendario
End If
end sub

En la rutina que indicas se permite la ejecución en el caso de seleccionar
varias celdas de la columna A
En el caso de ser el comportamiento deseado elimina
target.count<2
de la condición if

Un saludo,
Juan
Respuesta Responder a este mensaje
#2 aretradeser
08/04/2009 - 13:34 | Informe spam
On 8 abr, 11:11, "Juan M" wrote:
"Miguel"  escribió
Saludos,
Tengo una macro en una hoja excel para que me muestre un calendario en
cualquier celda de la columna A, pero necesito que también se muestre
en la columna G, pero no se como hay que adaptar esa instrucción. La
macro que tengo es la siguiente:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim rngFechas As Range
        Set rngFechas = Range("A:A") 'Muestra el calendario en
cualquier celda de la columna A
        If Union(Target, rngFechas).Address = rngFechas.Address Then
Call abrir_calendario
End Sub

Muchas Gracias.
Un saludo,
Miguel A.

Hola Miguel,

Modifica el código de la siguiente forma:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Debug.Print (Target.Column = 1 Or Target.Column = 7), Target.Count < 2

    If (Target.Column = 1 Or Target.Column = 7) And Target.Count < 2 Then
      Call abrir_calendario
    End If
end sub

En la rutina que indicas se permite la ejecución en el caso de seleccionar
varias celdas de la columna A
En el caso de ser el comportamiento deseado elimina
target.count<2
de la condición if

Un saludo,
Juan



Gracias por tu contestación,
No entiendo lo que quieres decir:
"En el caso de ser el comportamiento deseado elimina
target.count<2
de la condición if"
Ya que sustituyendo la instrucción que yo tenía por la que me
recomiendas, funciona perfectamente; es decir, se me muestra el
calendario en la columna G que es lo que necesitaba, pero si elimino
target.count<2 de la condición If, también funciona, no entiendo cual
es la diferencia.
Un saludo,
Miguel A.
Respuesta Responder a este mensaje
#3 Juan M
08/04/2009 - 14:36 | Informe spam
<..> escribió
On 8 abr, 11:11, "Juan M" wrote:
"Miguel" escribió
Saludos,
Tengo una macro en una hoja excel para que me muestre un calendario en
cualquier celda de la columna A, pero necesito que también se muestre
en la columna G, pero no se como hay que adaptar esa instrucción. La
macro que tengo es la siguiente:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim rngFechas As Range
Set rngFechas = Range("A:A") 'Muestra el calendario en
cualquier celda de la columna A
If Union(Target, rngFechas).Address = rngFechas.Address Then
Call abrir_calendario
End Sub

Muchas Gracias.
Un saludo,
Miguel A.

Hola Miguel,

Modifica el código de la siguiente forma:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Debug.Print (Target.Column = 1 Or Target.Column = 7), Target.Count < 2

If (Target.Column = 1 Or Target.Column = 7) And Target.Count < 2 Then
Call abrir_calendario
End If
end sub

En la rutina que indicas se permite la ejecución en el caso de seleccionar
varias celdas de la columna A
En el caso de ser el comportamiento deseado elimina
target.count<2
de la condición if

Un saludo,
Juan



Gracias por tu contestación,
No entiendo lo que quieres decir:
"En el caso de ser el comportamiento deseado elimina
target.count<2
de la condición if"
Ya que sustituyendo la instrucción que yo tenía por la que me
recomiendas, funciona perfectamente; es decir, se me muestra el
calendario en la columna G que es lo que necesitaba, pero si elimino
target.count<2 de la condición If, también funciona, no entiendo cual
es la diferencia.
Un saludo,
Miguel A.


Hola Miguel,

La cuestión es que en el código original, si seleccionas varias celdas de la
columna A, el calendario se mostrará.
En el código que te propongo, si seleccionas dos celdas de la misma columna
no se muestra el calendario.

Y si eliminamos la restricción 'target.count<2' aparecerán efectos como
seleccionando celdas como A2:B2 el calendario se muestra y si seleccionamos
F1:G1 no se mostrará.

Sólo es para que tengas en cuenta los efectos secundarios en función de los
condicionantes iniciales.

Un saludo,
Juan
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida