** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Otros de Microsoft: Windows y Office > Excel
  Mensajes nuevos Mensajes nuevos RSS - Recorrer rango y formula excel
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoRecorrer rango y formula excel

 Responder Responder
Autor
Mensaje
Iris Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 07/Noviembre/2005
Estado: Sin conexión
Puntos: 219
Enlace directo a este mensaje Tema: Recorrer rango y formula excel
    Enviado: 21/Mayo/2009 a las 20:59
Hola,

a ver si me pueden decir que estoy haciendo mal en este código. Esta hoja tiene 3 columnas. En la 1º un código numérico, en la 2º unas fecha con el formato 02.03.2009 pero algunas celdas pueden tener el valor NULL, si tiene este valor tengo que coger la fecha de la siguiente columna.

Todo el proceso me lo hace bien excepto las fechas que empiezan por 0 que me quita el 0.

Range("B1").Activate
     Range(ActiveCell, ActiveCell.End(xlDown)).Select
     For Each Celda In Selection.Cells
        If Celda.Value = "NULL" Then
             Celda.Value = Celda.Offset(0, 1).Value
             Celda.Font.Bold = True
             Nulls = Nulls + 1
        End If
        fecha = Celda.Value
        Celda.Value = Application.WorksheetFunction.Substitute(fecha, ".", "")
       
       
     Next Celda
     fecha = 0

Muchas gracias por todo.
Saludos
Salu2, desde Asturias Iris!!!
Arriba
Emilio Ver desplegable
Administrador
Administrador

Santander

Unido: 08/Agosto/2004
Localización: España
Estado: Sin conexión
Puntos: 18807
Enlace directo a este mensaje Enviado: 21/Mayo/2009 a las 21:12
Hola!
 
Prueba con
 
If isnull(Celda.Value) Then
   Celda=celda.offset(0,1)
Endif
 
La mayor parte de ese código no tiene ninguna relación con lo que explicas
Saludos a todos desde Huelva

http://www.mvp-access.es/emilio/
Arriba
Iris Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 07/Noviembre/2005
Estado: Sin conexión
Puntos: 219
Enlace directo a este mensaje Enviado: 21/Mayo/2009 a las 21:28
Perdón por mi mala explicación.

la última sentencia antes del Next Celda es porque toda la columna número 2 también la trato para dejarla con el formato 02022009, tengo que quitarle los punto a las fechas de la columna 2. Aquí es donde me quita el primer 0 si lo tiene.
 
lo mismo que si utilizase =SUSTITUIR(B1;".";"")

Gracias.
Salu2, desde Asturias Iris!!!
Arriba
Emilio Ver desplegable
Administrador
Administrador

Santander

Unido: 08/Agosto/2004
Localización: España
Estado: Sin conexión
Puntos: 18807
Enlace directo a este mensaje Enviado: 21/Mayo/2009 a las 21:35
Desde luego, ahora no tiene nada que ver el problema con el anterior.
 
Ultiliza replace
 
Replace(Celda,".",vbnullsring)
Saludos a todos desde Huelva

http://www.mvp-access.es/emilio/
Arriba
Iris Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 07/Noviembre/2005
Estado: Sin conexión
Puntos: 219
Enlace directo a este mensaje Enviado: 22/Mayo/2009 a las 08:06
Siento no haberme explicado bien.
El codigo que muestro me funciona bien escepto por una cosa, que el tratar la columna B para quitar el punto a todas las fechas, las que  empiezan por 0 me quita el 0.

Un saludo.

Salu2, desde Asturias Iris!!!
Arriba
AnSanVal Ver desplegable
Administrador
Administrador
Avatar

Unido: 16/Marzo/2005
Localización: España
Estado: Sin conexión
Puntos: 5458
Enlace directo a este mensaje Enviado: 22/Mayo/2009 a las 11:12
Las fechas para Excel son números (los días transcurridos desde 1Enero 1900). Por lo que igual que con un número "ordinario", es lo mismo 00045 que 45, y Excel (por defecto), considera a ambos como 45.
 
Puedes ver el 45 como 00045 o 045 o... etc. con el formato de número adecuado (tendríamos que saber cual precisas), pero internamente seguiría siendo 45.
 
Si precisas que realmente tenga un cero (o varios) a la izquierda debes manejarle como texto. Tanto desde código como directamente en la hoja.
 
 
Aprendemos viendo respuestas de otros, también intentando resolver dudas (intenta ayudar cuando puedas/sepas).

Mi sitio_web con ejemplos Excel.
Arriba
Iris Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 07/Noviembre/2005
Estado: Sin conexión
Puntos: 219
Enlace directo a este mensaje Enviado: 22/Mayo/2009 a las 12:16
De acuerdo, muchas gracias a todos.

me funciona con este código y poniendo el formato de la columna a texto. Siento mi mala explicación.
NOTA: lo del cambio del bucle es por probar con otro.

Dim Celda As Range
     Dim fecha As String
     Dim Nulls As Integer
    
     Range("B1").Activate
    
     Do While Not ActiveCell.Text = ""
        If ActiveCell.Value = "NULL" Then
             ActiveCell = ActiveCell.Offset(0, 1).Value
             ActiveCell.Font.Bold = True
            Nulls = Nulls + 1
        End If
        fecha = ActiveCell
        ActiveCell = Replace(fecha, ".", "")
        ActiveCell.FormulaR1C1 = ActiveCell.Text
        ActiveCell.Offset(1, 0).Activate
     Loop
     fecha = 0
     MsgBox "La hoja de fechas tiene; , vbInformation " & Nulls
Se puede cerrar el hilo, muchas gracias!!
Salu2, desde Asturias Iris!!!
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable