Algunas preguntas

12/12/2006 - 18:58 por Memento | Informe spam
Hola a todo la gente del foro...

Tengo dos preguntas:

1- Le asigne el valor de una variable contador a una celda en
específico de la siguiente manera:

Sheets("Historico").Range("e15").Value = contador

¿Por qué si el valor del contador es cero no marca ese valor en la
celda especificada? ¿Hay alguna manera en particular para marcar el
valor de un contador cuando es cero en una celda?

2- Para borrar el contenido de algunas celdas utilizo la siguiente
macro.

Sheets("Reporte 1").Select
Range("A9,D9,G10,I10,E38,E40,E42,A15:J21,A27:J36").Select
Selection.ClearContents

pero si ejecuto la siguiente macro en otra hoja por ejemplo:

Sheets("Reporte 2").Select
Range("A9,D9,G10,I10,E38,E40,E42,A15:J21,A27:J36").Select
Selection.ClearContents

resulta el siguiente error.

"Se ha producido el error '1001'"
"Fallo en el método Select de la clase Range"

¿Por qué?

Esperando la mayor colaboración de su parte me despido de uds

Preguntas similare

Leer las respuestas

#1 Ivan
12/12/2006 - 20:04 | Informe spam
hola Memento

1.-> ¿Por qué si el valor del contador es cero no marca ese valor en
la
celda especificada? ¿Hay alguna manera en particular para marcar el
valor de un contador cuando es cero en una celda?



una forma, (supongo) es marcar la casilla en el menu ->Herramientas
->Opciones -> Ver -> Valores 0

otra puede ser formatearla por ejemplo asi ->

Sheets("Historico").Range("e15").Value = contador
Sheets("Historico").Range("e15").numberformat="0"

o (para mi gusto) mejor ->

with Sheets("Historico").Range("e15")
.Value = contador
.numberformat="0"
end with

2.-> pero si ejecuto la siguiente macro en otra hoja por ejemplo:
Sheets("Reporte 2").Select
Range("A9,D9,G10,I10,E38,E40,E42,A15:J21,A27:J36").Select
Selection.ClearContents
resulta el siguiente error.
"Se ha producido el error '1001'"
"Fallo en el método Select de la clase Range"
¿Por qué?




el motivo no estoy seguro, creo que posiblemente deberias activar la
hoja 1º, pero no me hagas demasiado caso

en cualquier caso, no es necesario activar/seleccionar rangos ni hojas
para borrar (y en general, para trabajar) su contenido, esto, en teoria
te haria el trabajo sin problemas

->> Sheets("Reporte 2") _
.Range("A9,D9,G10,I10,E38,E40,E42,A15:J21,A27:J36").ClearContents

->OJO al salto de linea

bueno, espero te ayude en algo, y que algun experto de verdad te aclare
las dudas del todo

un saludo y hasta pronto
Ivan
Respuesta Responder a este mensaje
#2 Memento
13/12/2006 - 14:45 | Informe spam
Ivan ha escrito:

hola Memento

1.-> ¿Por qué si el valor del contador es cero no marca ese valor en
la
> celda especificada? ¿Hay alguna manera en particular para marcar el
> valor de un contador cuando es cero en una celda?

una forma, (supongo) es marcar la casilla en el menu ->Herramientas
->Opciones -> Ver -> Valores 0

otra puede ser formatearla por ejemplo asi ->

Sheets("Historico").Range("e15").Value = contador
Sheets("Historico").Range("e15").numberformat="0"

o (para mi gusto) mejor ->

with Sheets("Historico").Range("e15")
.Value = contador
.numberformat="0"
end with

2.-> pero si ejecuto la siguiente macro en otra hoja por ejemplo:
> Sheets("Reporte 2").Select
> Range("A9,D9,G10,I10,E38,E40,E42,A15:J21,A27:J36").Select
> Selection.ClearContents
> resulta el siguiente error.
> "Se ha producido el error '1001'"
> "Fallo en el método Select de la clase Range"
> ¿Por qué?


el motivo no estoy seguro, creo que posiblemente deberias activar la
hoja 1º, pero no me hagas demasiado caso

en cualquier caso, no es necesario activar/seleccionar rangos ni hojas
para borrar (y en general, para trabajar) su contenido, esto, en teoria
te haria el trabajo sin problemas

->> Sheets("Reporte 2") _
.Range("A9,D9,G10,I10,E38,E40,E42,A15:J21,A27:J36").ClearContents

->OJO al salto de linea

bueno, espero te ayude en algo, y que algun experto de verdad te aclare
las dudas del todo

un saludo y hasta pronto
Ivan



Muchas gracias tocayo! En la primera pregunta me resolvistes mi duda
perfectamente, ya el contador me coloca el valor cero en la
hoja.Pero en la segunda hoja continuia el error, hice lo siguiente:

Sheets("Reporte
2").Range("A9,D9,G10,I10,A15:J21,A27:J36,E38,E40,E42").ClearContents

pero continua el error:

"Se ha producido el error '1004' en el tiempo de ejecución"

"No se puede cambiar parte de la celda combinada"

¿Por qué?

Hay alguna manera de borrar esas celdas con una macro? Son 4 hojas
(Reporte 1, Reporte 2, Reporte 3 y Reporte 4). Hay una manera de
corregir ese error y ejecutar la macro correctamente?

Espero la mayor colaboración de tu parte...
Respuesta Responder a este mensaje
#3 Ivan
14/12/2006 - 04:45 | Informe spam
hola tocayo()

por lo que se ve estas haciendo referencia a celdas convinadas, y
aunque no he trabajado (por codigo) nunca con ellas, tengo entendido
que tienen un comportamiento 'un tanto especial' .

No se como las tienes agrupadas, y lo que voy a decirte es pura
intuicion (es muy posible que errona), quizas deberias borrar el rango
convinado completo, no una sola celda, que por lo que se ve no te lo
permite, o quizas desconvinar y volver a convinar (si asi lo deseas)
despues de clearcontents.

Se que existen propiedades y no se si metodos referidos a las celdas
convinadas, pero ahora mismo no sabria decirte. Quizas, aparte de
esperar a ver si alguien mas avezado que yo te echa una mano, podrias
probar a echar un ojo en la ayuda de vba (F! desde el editor)

de todas formas en cuanto le meta mano a un 'problemilla' que tengo
pendiente intentare echar un ojo a ver si veo algo

un saludo y hasta pronto
Ivan

PD podrias exponer que celdas tienes convinadas y el criterio/motivo
del borrado (o no borrado) de determinadas celdas. Creo que ayudaria
Respuesta Responder a este mensaje
#4 Ivan
17/12/2006 - 02:48 | Informe spam
hola Memento,

lo primero, como autoflagelo, llamarme Burro a mi mismo, con B de burro
y de comBinada

y despues, indagando un poco (casi calcando de la ayuda de vba excel),
he sacado esto que creo que te podria valer para el caso concreto que
mencionas. El codigo comprueba todas las celdas que le pasas, y si
forman parte de un rango de celdas combinadas, borra la celda que da
valor al grupo, si no forman parte simplemente las borra

de todas formas, si sabes cuales son las celdas combinadas, te podrias
ahorrar los bucles
poniendo simplemente la direccion de la celda superior izquierda en vez
la de la celda en si,

y por lo que se ve las celdas combinadas (ni siquiera la 'principal')
no admiten Clearcontents, pero sin embargo si puedes borrarlas usando
"", o sea convirtiendolas en celdas vacias, o al menos esa es la
impresion que me da a mi

bueno, no me hagas demasiado caso, pues todo esto lo acabo de deducir
ahora mismo tras echar un vistazo a la ayuda y hacer unas pruebas

un saludo
Ivan
Respuesta Responder a este mensaje
#5 Ivan
17/12/2006 - 02:52 | Informe spam
disculpa tocayo, pero se me ha olvidado poner el codigo

aqui va :

Sub testCombinadas()
Dim misCeldas As Variant, i As Byte
Dim combi As Range, celda As Range
misCeldas = Array("A9", "D9", "G10", "I10", _
"E38", "E40", "E42")
With Sheets("Reporte 2")
For i = 0 To UBound(misCeldas)
If .Range(misCeldas(i)).MergeCells Then
Set combi = .Range(misCeldas(i)).MergeArea
combi.Cells(1, 1) = ""
Else
.Range(misCeldas(i)).ClearContents
End If
Next
For Each celda In .[A15:J21]
If celda.MergeCells Then
Set combi = celda.MergeArea
combi.Cells(1, 1) = ""
Else
celda.ClearContents
End If
Next
For Each celda In .[A27:J36]
If celda.MergeCells Then
Set combi = celda.MergeArea
combi.Cells(1, 1) = ""
Else
celda.ClearContents
End If
Next
End With
Set combi = Nothing
End Sub

es bastante tosco, pero en mis pruebas funciona

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