contar celdas que tienen sus bordes marcados como una X

19/05/2007 - 22:28 por MyVi | Informe spam
Hola grupo.

LLevo un rato mirando a ver si esto ya lo ha preguntado antes alguien,
pero no lo encuentro.

A ver si alguno de vosotros sabria cómo hacerlo.

Muchas gracias de antemano.

Tengo una columna: range(B10:B20) donde necesitaría que aquellas
celdas que tengan sus bordes marcados de una forma concreta (en este
caso seria como una "X") se cuenten.

Es decir que si de todas las celdas que hay en dicha columna, hay 2
que tienen sus bordes como tachados (espero que esto se entienda) pues
que me los cuente y en otra celda me aparezca el resultado = 2.

El caso es que tengo un calendario. Con un doble clic en un dia del
año (en dicha celda) se marca dicha celda con los bordes inclinado
derecho e izquierdo. Pero entonces necesitaria poder contar que he
marcado dicho dia.
Visualmente en el calendario puedo seleccionar tantos dias como
quiera, pero necesito un contador.

He tratado de hacerlo con "contar.si" pero no veo cómo puedo hacerlo
para que entienda que cuente si la celda tiene esos 2 bordes internos
marcados. Tampoco veo otra forma de poderlo hacer (como siempre ya me
estoy metiendo en camisas de once baras! Esto de no saber programación
no me ayuda demasiado).

¿Alguna idea?

Gracias de nuevo.

Myvic

Preguntas similare

Leer las respuestas

#11 zz
20/05/2007 - 00:53 | Informe spam
listo, espero que ahora si te sirva

Private Sub contarceldasconX()
Dim c As Range
Dim numceldasconX As Integer
numceldasconX = 0
For Each c In ActiveSheet.Range("B10:B20")
If c.Borders(xlDiagonalUp).LineStyle > 0 And
c.Borders(xlDiagonalDown).LineStyle > 0 Then
numceldasconX = numceldasconX + 1
End If
Next
ActiveSheet.Range("S36").Value = numceldasconX
numceldasconX = 0
Set c = Nothing
End Sub


aunque siempre trato de crear las macros lo mas genericas posible, en esta
ocasion no me he querido complicar la vida, la anterior devolvia un conteo
absurdo y falso, no cabe duda que aun me queda un largo camino.

Saludos.




30 de septiembre "Dia internacional de la panza chelera"
Que viva la familia...
Zz

"Error: The file 'Brain.sys' could not be found in folder 'Head', body will
now work in reduced functionality mode'
Loading Heart.sys...

"zz" wrote in message
news:
revisando mi macro me doy cuenta de que en realidad no funciona como yo
pensaba, sigo aprendiendo y no todo es tan facil como se ve, mil disculpas
por el tiempo que te he hecho perder, revisare bien la macro para dar con
el detalle que tiene, en principio pense que era el comentario que con
solo borrarlo lo hubiera solucionado, pero no es por ahi el problema.

:(

30 de septiembre "Dia internacional de la panza chelera"
Que viva la familia...
Zz

"Error: The file 'Brain.sys' could not be found in folder 'Head', body
will now work in reduced functionality mode'
Loading Heart.sys...

"MyVi" wrote in message
news:
Bueno, no estoy seguro.

A ver, el caso es que necesito contarlas para que aparezca la suma en
una celda concreta.
x1= el nº de veces que en el range(x,y) hay una celda con sus dos
bordes marcados.

Es como tachar una celda para contabilizarla como 1. Si tachas dos
pues tienes 2 dias contabilizados.
El cómo tachar la celda ya lo tengo controlado. Ahora solo me falta el
poder contar el nº de celdas tachadas. Y que este resultado se muestre
en una celda.

Voy a tratar de estudiarme tu propuesta, pero mi primer vistazo ya me
ha dado problemas (de ahi que ya esté respondiendo).

gracias

MyVi


Respuesta Responder a este mensaje
#12 MyVi
20/05/2007 - 01:42 | Informe spam
BIEN! Ya lo tengo.
Al final lo he resuelto de una forma más rápida y fácil.

Aunque no es 100% lo que me gustaria, pero lo resuelve bastante bien.

If Selection.Borders(xlDiagonalDown).LineStyle = xlContinuous Then
ActiveSheet.Range("S36").Value = ActiveSheet.Range("S36").Value +
1
End If


Esto me incrementa el valor de dicha celda en 1 cada vez que marco una
X. Como la X la marco con un doble clic en la celda de la fecha, pues
a su vez me suma 1.

No esta mal. El problema es que si hago doble clic en la misma celda
mas de una vez me cuenta de más, y eso ya no es correcto.
Lo suyo seria que al hacer doble clic una vez me marcara la X y me
sumara el 1 y si volviera a hacer doble clic me borrara la X y me
restara un 1.


A ver, si alguna idea.

Esto que digo que hago ahora lo hago con este código:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel
As Boolean)
Dim Rng As Range
Set Rng = Range("B8:AI31")
If Not Application.Intersect(Rng, Target) Is Nothing Then
Application.Run "macro6" ' La macro6 me marca la X
Cancel = True
End If

If Selection.Borders(xlDiagonalDown).LineStyle = xlContinuous Then
ActiveSheet.Range("S36").Value = ActiveSheet.Range("S36").Value +
1
End If

End Sub


Bueno, si alguna idea perfecto. Sino lo voy a dejar asi.


Gracias nuevamente.

MyVi
Respuesta Responder a este mensaje
#13 zz
20/05/2007 - 01:47 | Informe spam
la unica pega que le vería es que si el tipo de linea no es xlcontinuous, si
es por ejemplo xldashed o xldotted entonces te la contaría.

por eso en la mía me decante por revisar el width o espesor del borde, un
espesor =<0 seria un borde no visible por lo tanto no lo contarías.

30 de septiembre "Dia internacional de la panza chelera"
Que viva la familia...
Zz

"Error: The file 'Brain.sys' could not be found in folder 'Head', body will
now work in reduced functionality mode'
Loading Heart.sys...

"MyVi" wrote in message
news:
BIEN! Ya lo tengo.
Al final lo he resuelto de una forma más rápida y fácil.

Aunque no es 100% lo que me gustaria, pero lo resuelve bastante bien.

If Selection.Borders(xlDiagonalDown).LineStyle = xlContinuous Then
ActiveSheet.Range("S36").Value = ActiveSheet.Range("S36").Value +
1
End If


Esto me incrementa el valor de dicha celda en 1 cada vez que marco una
X. Como la X la marco con un doble clic en la celda de la fecha, pues
a su vez me suma 1.

No esta mal. El problema es que si hago doble clic en la misma celda
mas de una vez me cuenta de más, y eso ya no es correcto.
Lo suyo seria que al hacer doble clic una vez me marcara la X y me
sumara el 1 y si volviera a hacer doble clic me borrara la X y me
restara un 1.


A ver, si alguna idea.

Esto que digo que hago ahora lo hago con este código:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel
As Boolean)
Dim Rng As Range
Set Rng = Range("B8:AI31")
If Not Application.Intersect(Rng, Target) Is Nothing Then
Application.Run "macro6" ' La macro6 me marca la X
Cancel = True
End If

If Selection.Borders(xlDiagonalDown).LineStyle = xlContinuous Then
ActiveSheet.Range("S36").Value = ActiveSheet.Range("S36").Value +
1
End If

End Sub


Bueno, si alguna idea perfecto. Sino lo voy a dejar asi.


Gracias nuevamente.

MyVi
Respuesta Responder a este mensaje
#14 zz
20/05/2007 - 01:52 | Informe spam
además esta el tema del selection, que puede ser una celda fuera del rango
especifico que estas evaluando.

30 de septiembre "Dia internacional de la panza chelera"
Que viva la familia...
Zz

"Error: The file 'Brain.sys' could not be found in folder 'Head', body will
now work in reduced functionality mode'
Loading Heart.sys...

"zz" wrote in message
news:%
la unica pega que le vería es que si el tipo de linea no es xlcontinuous,
si es por ejemplo xldashed o xldotted entonces te la contaría.

por eso en la mía me decante por revisar el width o espesor del borde, un
espesor =<0 seria un borde no visible por lo tanto no lo contarías.

30 de septiembre "Dia internacional de la panza chelera"
Que viva la familia...
Zz

"Error: The file 'Brain.sys' could not be found in folder 'Head', body
will now work in reduced functionality mode'
Loading Heart.sys...

"MyVi" wrote in message
news:
BIEN! Ya lo tengo.
Al final lo he resuelto de una forma más rápida y fácil.

Aunque no es 100% lo que me gustaria, pero lo resuelve bastante bien.

If Selection.Borders(xlDiagonalDown).LineStyle = xlContinuous Then
ActiveSheet.Range("S36").Value = ActiveSheet.Range("S36").Value +
1
End If


Esto me incrementa el valor de dicha celda en 1 cada vez que marco una
X. Como la X la marco con un doble clic en la celda de la fecha, pues
a su vez me suma 1.

No esta mal. El problema es que si hago doble clic en la misma celda
mas de una vez me cuenta de más, y eso ya no es correcto.
Lo suyo seria que al hacer doble clic una vez me marcara la X y me
sumara el 1 y si volviera a hacer doble clic me borrara la X y me
restara un 1.


A ver, si alguna idea.

Esto que digo que hago ahora lo hago con este código:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel
As Boolean)
Dim Rng As Range
Set Rng = Range("B8:AI31")
If Not Application.Intersect(Rng, Target) Is Nothing Then
Application.Run "macro6" ' La macro6 me marca la X
Cancel = True
End If

If Selection.Borders(xlDiagonalDown).LineStyle = xlContinuous Then
ActiveSheet.Range("S36").Value = ActiveSheet.Range("S36").Value +
1
End If

End Sub


Bueno, si alguna idea perfecto. Sino lo voy a dejar asi.


Gracias nuevamente.

MyVi



Respuesta Responder a este mensaje
#15 MyVi
20/05/2007 - 01:59 | Informe spam
Bueno, veo que nos hemos cruzado.
He probado tu código. Aunque al principio no me ha funcionado (porque
lo aplicaba mal) al final lo he controlado y listo, es bastante mejor
que el mio.

Lo he puesto en Hoja1 dentro de


Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel
As Boolean)
..
End Sub

muchas gracias


MyVi
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida