Foros del Web » Soporte técnico » Ofimática »

VBA - Contar columnas llenas

Estas en el tema de VBA - Contar columnas llenas en el foro de Ofimática en Foros del Web. Hola !! tengo una función que em cuenta las filas de una hoja. Éste es el codigo Código: Sub RowCount(ByVal i As Integer) Range("W1").Select 'el ...
  #1 (permalink)  
Antiguo 08/10/2008, 07:00
 
Fecha de Ingreso: marzo-2007
Mensajes: 538
Antigüedad: 17 años, 1 mes
Puntos: 0
VBA - Contar columnas llenas

Hola !!

tengo una función que em cuenta las filas de una hoja.
Éste es el codigo
Código:
Sub RowCount(ByVal i As Integer)
        Range("W1").Select                                      'el control se hará sobre la columna A, a partir de la fila ***
        While ActiveCell.Value <> ""
           ActiveCell.Offset(1, 0).Select                       'si la celda contiene datos, pasa a la fila siguiente
        Wend
        numRows(i) = ActiveCell.Row                             'guarda en la variable filalibre el número de la primer fila sin datos.
        numRows(i) = numRows(i) - 1                             'Le descontamos la primera fila que es la cabecera
End Sub
pero ahora necesito otra función que me cuente las columnas, sabríais decirme cómo puedo hacerlo?


Gracias!!!
  #2 (permalink)  
Antiguo 08/10/2008, 07:50
Avatar de 3pies
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 20 años, 4 meses
Puntos: 144
Respuesta: VBA - Contar columnas llenas

Prueba esto, que es más sencillo que lo que tienes, incluso (para columnas):
Código:
Sub numero_de_columnas()
'Nos situamos en la celda con el primer dato
Range("A1").Select
'Nos desplazamos hasta la última columna adyacente, que contenga datos
Selection.End(xlToRight).Select
'Mostramos el número de columnas
respuesta = MsgBox("Esta hola de cálculo tiene " & ActiveCell.Column & " columnas con datos contínuos.")
End Sub
Y para filas:
Código:
Sub numero_de_filas()
'Nos situamos en la celda con el primer dato
Range("A1").Select
'Bajamos hasta la última fila adyacente, que contenga datos
Selection.End(xlDown).Select
'Mostramos el número de líneas
respuesta = MsgBox("Esta hola de cálculo tiene " & ActiveCell.Row & " filas con datos contínuos.")
End Sub
Salu2
  #3 (permalink)  
Antiguo 08/10/2008, 08:25
 
Fecha de Ingreso: marzo-2007
Mensajes: 538
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: VBA - Contar columnas llenas

perfecto, pero para las columnas tendria que saber la letra de la última columna y guardarla en una variable y tu codigo me devuelve 23 ,aunque sea correcto.

Cómo hago para obtener la letra?
  #4 (permalink)  
Antiguo 08/10/2008, 09:06
Avatar de 3pies
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 20 años, 4 meses
Puntos: 144
Respuesta: VBA - Contar columnas llenas

Prueba esto:
Código:
Sub numero_de_columnas()
'Nos situamos en la celda con el primer dato
Range("A1").Select
'Nos desplazamos hasta la última columna adyacente, que contenga datos
Selection.End(xlToRight).Select
'Mostramos el número de columnas
respuesta = MsgBox("Esta hola de cálculo tiene " & ActiveCell.Column & " columnas con datos contínuos.")
'"fichamos" la celda donde estamos
celda = ActiveCell.Address
'reemplazamos el singo de dólar que nos devuelve el dato anterior
celda = Replace(celda, "$", "")
'eliminamos los números de la fila
numeros = Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
For j = 0 To UBound(numeros)
    celda = Replace(celda, numeros(j), "")
Next
'mensajillo
respuesta2 = MsgBox("La letra de la comuna es la, hmmmmm " & celda & ", si no me he equivocado :-)")
End Sub
Salu2
  #5 (permalink)  
Antiguo 10/12/2010, 16:11
 
Fecha de Ingreso: agosto-2007
Mensajes: 1.945
Antigüedad: 16 años, 7 meses
Puntos: 39
Respuesta: VBA - Contar columnas llenas

3Pies, me dice que falta una matris
For j = 0 To UBound(numeros)

Del post #2 en lineas si tengo la A1 y A3 con datos, A2, A4, 5 y 6 sin datos, A7 , 8, 9, 10, 11, 12 y 16 con datos me dice 7 lineas con datos y serian 9.
Ademas decirme 7 seleciona la celda A7
¿una imagen?

Columnas
En la misma hoja tengo las columnas A, B, C, Y D. La A ocupada (en parte) la B libre total la C_D combinadas
Las columnas desde la A2, 3, 4, 5, 6, B2, 3, 4, 5, 6 Y C2, 3, 4, 5, 6 desocupadas, de la linea 7 hasta la 12 A, B, C, Y D todas ocupadas, me dice que tengo 3 columnas, siendo 4,
Alguna explicación?

Pregunto para saber y tratar de entender porque la experiencia que me abarca, es minima
__________________
Las contraseñas son como la ropa interior: Nunca dejarlas donde la gente pueda verlas
http://i64.tinypic.com/rho40i.jpg

Última edición por JoaoM; 10/12/2010 a las 16:29
  #6 (permalink)  
Antiguo 10/12/2010, 17:26
Avatar de hugo180486  
Fecha de Ingreso: septiembre-2007
Mensajes: 199
Antigüedad: 16 años, 7 meses
Puntos: 3
Respuesta: VBA - Contar columnas llenas

Puedes usar esta funcion y pasarle el Numero de Columna, te devolvera la letra.

Código vb:
Ver original
  1. Function Letra_Columna(ByVal lCol As Long) As String
  2.     Letra_Columna = Replace$(Cells(1, lCol).Address(False, False), "1", "")
  3. End Function
  #7 (permalink)  
Antiguo 11/12/2010, 07:56
 
Fecha de Ingreso: diciembre-2010
Mensajes: 1
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: VBA - Contar columnas llenas

Si quieres un manual de VBA para Excel aqui tienes uno : www.miaulavirtual.es
  #8 (permalink)  
Antiguo 12/12/2010, 09:08
 
Fecha de Ingreso: agosto-2007
Mensajes: 1.945
Antigüedad: 16 años, 7 meses
Puntos: 39
Respuesta: VBA - Contar columnas llenas

Cita:
Iniciado por hugo180486 Ver Mensaje
Puedes usar esta funcion y pasarle el Numero de Columna, te devolvera la letra.

Código vb:
Ver original
  1. Function Letra_Columna(ByVal lCol As Long) As String
  2.     Letra_Columna = Replace$(Cells(1, lCol).Address(False, False), "1", "")
  3. End Function
Podrias darme una Opcion mas valida para mi? es qeu los conocimientos mios en programacion, no son abultados.
Donde coloco ese codgo?
__________________
Las contraseñas son como la ropa interior: Nunca dejarlas donde la gente pueda verlas
http://i64.tinypic.com/rho40i.jpg
  #9 (permalink)  
Antiguo 13/12/2010, 10:38
Avatar de hugo180486  
Fecha de Ingreso: septiembre-2007
Mensajes: 199
Antigüedad: 16 años, 7 meses
Puntos: 3
Respuesta: VBA - Contar columnas llenas

Cita:
Iniciado por JoaoM Ver Mensaje
Podrias darme una Opcion mas valida para mi? es qeu los conocimientos mios en programacion, no son abultados.
Donde coloco ese codgo?
Cita:
Iniciado por JoaoM Ver Mensaje
3Pies, me dice que falta una matris
For j = 0 To UBound(numeros)

Del post #2 en lineas si tengo la A1 y A3 con datos, A2, A4, 5 y 6 sin datos, A7 , 8, 9, 10, 11, 12 y 16 con datos me dice 7 lineas con datos y serian 9.
Ademas decirme 7 seleciona la celda A7
¿una imagen?

Columnas
En la misma hoja tengo las columnas A, B, C, Y D. La A ocupada (en parte) la B libre total la C_D combinadas
Las columnas desde la A2, 3, 4, 5, 6, B2, 3, 4, 5, 6 Y C2, 3, 4, 5, 6 desocupadas, de la linea 7 hasta la 12 A, B, C, Y D todas ocupadas, me dice que tengo 3 columnas, siendo 4,
Alguna explicación?

Pregunto para saber y tratar de entender porque la experiencia que me abarca, es minima


Joao la funcion que puse solo te sirve para saber la letra de la columna en Funcion del numero de columna.

Tal como preguntaba Laufwerk.... Te puede ser util pero para otros proyectos segun yo. De todos modos te pngo una breve explicacion.

Puedes poner el codigo de la funcion en el modulo donde tienes las macros, o crear un modulo nuevo donde almacenes las funciones que pienses que puedes usar a menudo en tus programas. en seguda te pongo un codigo de ejemplo.

Código vb:
Ver original
  1. Function Letra_Columna(ByVal lCol As Long) As String
  2.     Letra_Columna = Replace$(Cells(1, lCol).Address(False, False), "1", "")
  3. End Function
  4.  
  5. Sub Usar_Funcion()
  6.    
  7.     '// Puedes decalrar una variable y alojar el valor de la Funcion.
  8.    Dim sLetra As String
  9.     '// Paco el numero de columna de la celda activa
  10.    Letra = Letra_Columna(ActiveCell.Column)
  11.    
  12.     '// Puedes mostrar la letra de x columna con la funcion
  13.    '// Pase un numeero directamente
  14.    MsgBox Letra_Columna(10)
  15.    
  16.     '// Para hacer comparaciones
  17.    If Letra_Columna(1) = Letra_Columna(ActiveCell.Column) Then
  18.         MsgBox "Las letras de las columnas son iguales"
  19.     Else
  20.         MsgBox "Las letras de las columnasa no son iguales"
  21.     End If
  22.    
  23. End Sub

No tiene sentido alguno, pero dependera de ti como quieras usar la funcion, puede haber mas maneras o manera con setido, esto solo fue para que te des una idea.

Saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:15.