Imprimir página | Cerrar ventana

Recorrer rango y formula excel

Impreso de: Foro de Access y VBA
Categoría: Otros de Microsoft: Windows y Office
Nombre del foro: Excel
Descripción del foro: Foro de Excel y VBA de Excel
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=57105
Fecha de impresión: 23/Julio/2019 a las 19:39


Tema: Recorrer rango y formula excel
Publicado por: Iris
Asunto: Recorrer rango y formula excel
Fecha de publicación: 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!!!



Respuestas:
Publicado por: Emilio
Fecha de publicación: 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/" rel="nofollow - http://www.mvp-access.es/emilio/


Publicado por: Iris
Fecha de publicación: 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!!!


Publicado por: Emilio
Fecha de publicación: 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/" rel="nofollow - http://www.mvp-access.es/emilio/


Publicado por: Iris
Fecha de publicación: 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!!!


Publicado por: AnSanVal
Fecha de publicación: 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 http://achinet.mvp-access.es/" rel="nofollow - sitio_web con ejemplos Excel.


Publicado por: Iris
Fecha de publicación: 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!!!



Imprimir página | Cerrar ventana