en un rango saber si hay celdas vacías

03/03/2008 - 10:32 por chiri | Informe spam
1º Como puedo saber mediante código si en un rango hay celdas vacías

Con esto tengo suficiente pero por ir más allá

2º podría saber cuales están vacías.

gracias

Preguntas similare

Leer las respuestas

#1 Juan M
03/03/2008 - 11:52 | Informe spam
Hola,

con las siguientes fórmulas puedes saber cuantas celdas hay en blanco y
cuantas no dentro de la columna A

NoBlancos = Application.WorksheetFunction.Count(Range("A:A"))
blancos = Application.WorksheetFunction.CountBlank(Range("A1:A" & Range("A"
& Rows.Count).End(xlUp).Row))

Para saber cuales son, mira la siguiente opción, es probable que se puedan
mejorar/optimizar los procesos en función de las necesidades.

Un saludo,
Juan

Inicio código

Sub CeldasBlanco()
Dim blancos As Long
Dim NoBlancos As Long
Dim i As Long
Dim fila As Long

NoBlancos = Application.WorksheetFunction.Count(Range("A:A"))
blancos = Application.WorksheetFunction.CountBlank(Range("A1:A" & Range("A"
& Rows.Count).End(xlUp).Row))

fila = 1
Do While i < NoBlancos
If Range("A" & fila) = "" Then
Debug.Print Range("A" & fila).Address
Else
i = i + 1
End If
fila = fila + 1
Loop

End Sub

Fin código


"chiri" escribió
1º Como puedo saber mediante código si en un rango hay celdas vacías

Con esto tengo suficiente pero por ir más allá

2º podría saber cuales están vacías.

gracias

Respuesta Responder a este mensaje
#2 chiri
03/03/2008 - 12:04 | Informe spam
PERFECTO

MUCHAS GRACIAS
"Juan M" escribió en el mensaje
news:
Hola,

con las siguientes fórmulas puedes saber cuantas celdas hay en blanco y
cuantas no dentro de la columna A

NoBlancos = Application.WorksheetFunction.Count(Range("A:A"))
blancos = Application.WorksheetFunction.CountBlank(Range("A1:A" &
Range("A" & Rows.Count).End(xlUp).Row))

Para saber cuales son, mira la siguiente opción, es probable que se puedan
mejorar/optimizar los procesos en función de las necesidades.

Un saludo,
Juan

Inicio código

Sub CeldasBlanco()
Dim blancos As Long
Dim NoBlancos As Long
Dim i As Long
Dim fila As Long

NoBlancos = Application.WorksheetFunction.Count(Range("A:A"))
blancos = Application.WorksheetFunction.CountBlank(Range("A1:A" &
Range("A" & Rows.Count).End(xlUp).Row))

fila = 1
Do While i < NoBlancos
If Range("A" & fila) = "" Then
Debug.Print Range("A" & fila).Address
Else
i = i + 1
End If
fila = fila + 1
Loop

End Sub

Fin código


"chiri" escribió
1º Como puedo saber mediante código si en un rango hay celdas vacías

Con esto tengo suficiente pero por ir más allá

2º podría saber cuales están vacías.

gracias





Respuesta Responder a este mensaje
#3 Ivan
03/03/2008 - 12:46 | Informe spam
hola chicos (Juan, parece que vuelvo a entrar un poco tarde - se debe
estar actualizando el antivirus y me trae por el camino de la amargura
con las conexiones-)

aunque ya lo ha respondido Juan, ya que esta hecho, aqui van otras
propuestas

en un modulo normal pega estos codigos y dependiendo de lo que quieras
te podria valer una funcion u otra.

'*************** pegar en un modulo normal *********
'
' para saber si existen celdas vacias
Function HayVacias(Rango As Range) As Boolean
On Error Resume Next
HayVacias = IIf(Rango.Cells.Count > 1, _
Rango.SpecialCells(xlCellTypeBlanks).Count > 0, _
Rango.Cells(1).Value = "")
End Function
'
' para saber el nº de celdas en blanco
Function NumeroVacias(Rango As Range) As Long
On Error Resume Next
NumeroVacias = IIf(Rango.Cells.Count > 1, _
Rango.SpecialCells(xlCellTypeBlanks).Count, _
-1 * (Rango.Cells(1).Value = ""))
End Function
'
' para obtener las referencias de las celdas vacias
Function CeldasVacias(Rango As Range) As String
Dim refs As String, Celda As Range
On Error Resume Next
If Rango.Cells.Count > 1 Then
For Each Celda In Rango.SpecialCells(xlCellTypeBlanks)
refs = refs & ";" & Celda.Address(0, 0)
Next
CeldasVacias = Right(refs, Len(refs) - 1)
Else
If Rango.Value = "" Then _
CeldasVacias = Rango.Address(0, 0)
End If
End Function
' **************************************************
' para probarlos puedes llamar a este procedimiento desde la hoja
'
Sub ComprobarVacias()
Dim msj As String
msj = _
InputBox("Introduce el rango para comprobar vacias", _
"Ver vacias", Range("a1").CurrentRegion.Address(0, 0))
If msj = "" Then msj = ActiveSheet.UsedRange.Address(0, 0)
If HayVacias(Range(msj)) Then
If MsgBox("se han encontrado " & NumeroVacias(Range(msj)) _
& " celdas vacias en el rango " & vbCr & msj & vbCr & _
vbCr & "¿Quieres saber cuales?", vbQuestion + vbYesNo, _
"ATENCION: celdas vacias") = vbYes Then _
MsgBox "Las siguientes celdas estan vacias:" & vbCr _
& vbCr & CeldasVacias(Range(msj))
Else
MsgBox "No se han encontrado celdas vacias en el rango:" _
& vbCr & msj
End If
End Sub
' ******************************************************************

un saludo
Ivan
Respuesta Responder a este mensaje
#4 chiri
03/03/2008 - 13:17 | Informe spam
Me he acelerado, no me funciona (que no quiere decir que no funcione), el
caso es que lo pongo en un botón de una página y me da siempre como valor 0

Application.WorksheetFunction.Count(Range("m2:M38"))

con lo que nunca es mayor que cero
"chiri" <fernandoSUSTITUYEPORARROBAmollatSUSTITUYEPORPUNTOinfo> escribió en
el mensaje news:
PERFECTO

MUCHAS GRACIAS
"Juan M" escribió en el mensaje
news:
Hola,

con las siguientes fórmulas puedes saber cuantas celdas hay en blanco y
cuantas no dentro de la columna A

NoBlancos = Application.WorksheetFunction.Count(Range("A:A"))
blancos = Application.WorksheetFunction.CountBlank(Range("A1:A" &
Range("A" & Rows.Count).End(xlUp).Row))

Para saber cuales son, mira la siguiente opción, es probable que se
puedan mejorar/optimizar los procesos en función de las necesidades.

Un saludo,
Juan

Inicio código

Sub CeldasBlanco()
Dim blancos As Long
Dim NoBlancos As Long
Dim i As Long
Dim fila As Long

NoBlancos = Application.WorksheetFunction.Count(Range("A:A"))
blancos = Application.WorksheetFunction.CountBlank(Range("A1:A" &
Range("A" & Rows.Count).End(xlUp).Row))

fila = 1
Do While i < NoBlancos
If Range("A" & fila) = "" Then
Debug.Print Range("A" & fila).Address
Else
i = i + 1
End If
fila = fila + 1
Loop

End Sub

Fin código


"chiri" escribió
1º Como puedo saber mediante código si en un rango hay celdas vacías

Con esto tengo suficiente pero por ir más allá

2º podría saber cuales están vacías.

gracias









Respuesta Responder a este mensaje
#5 chiri
03/03/2008 - 13:18 | Informe spam
He aprovechado la primera y me da error de tipos simplemente con poner

MsgBox HayVacias("M2:M38")

El error me lo da en M2:M38

debería dar -1 ó 0 supongo

"Ivan" escribió en el mensaje
news:
hola chicos (Juan, parece que vuelvo a entrar un poco tarde - se debe
estar actualizando el antivirus y me trae por el camino de la amargura
con las conexiones-)

aunque ya lo ha respondido Juan, ya que esta hecho, aqui van otras
propuestas

en un modulo normal pega estos codigos y dependiendo de lo que quieras
te podria valer una funcion u otra.

'*************** pegar en un modulo normal *********
'
' para saber si existen celdas vacias
Function HayVacias(Rango As Range) As Boolean
On Error Resume Next
HayVacias = IIf(Rango.Cells.Count > 1, _
Rango.SpecialCells(xlCellTypeBlanks).Count > 0, _
Rango.Cells(1).Value = "")
End Function
'
' para saber el nº de celdas en blanco
Function NumeroVacias(Rango As Range) As Long
On Error Resume Next
NumeroVacias = IIf(Rango.Cells.Count > 1, _
Rango.SpecialCells(xlCellTypeBlanks).Count, _
-1 * (Rango.Cells(1).Value = ""))
End Function
'
' para obtener las referencias de las celdas vacias
Function CeldasVacias(Rango As Range) As String
Dim refs As String, Celda As Range
On Error Resume Next
If Rango.Cells.Count > 1 Then
For Each Celda In Rango.SpecialCells(xlCellTypeBlanks)
refs = refs & ";" & Celda.Address(0, 0)
Next
CeldasVacias = Right(refs, Len(refs) - 1)
Else
If Rango.Value = "" Then _
CeldasVacias = Rango.Address(0, 0)
End If
End Function
' **************************************************
' para probarlos puedes llamar a este procedimiento desde la hoja
'
Sub ComprobarVacias()
Dim msj As String
msj = _
InputBox("Introduce el rango para comprobar vacias", _
"Ver vacias", Range("a1").CurrentRegion.Address(0, 0))
If msj = "" Then msj = ActiveSheet.UsedRange.Address(0, 0)
If HayVacias(Range(msj)) Then
If MsgBox("se han encontrado " & NumeroVacias(Range(msj)) _
& " celdas vacias en el rango " & vbCr & msj & vbCr & _
vbCr & "¿Quieres saber cuales?", vbQuestion + vbYesNo, _
"ATENCION: celdas vacias") = vbYes Then _
MsgBox "Las siguientes celdas estan vacias:" & vbCr _
& vbCr & CeldasVacias(Range(msj))
Else
MsgBox "No se han encontrado celdas vacias en el rango:" _
& vbCr & msj
End If
End Sub
' ******************************************************************

un saludo
Ivan
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida