Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Ofimática (http://www.forosdelweb.com/f90/)
-   -   VBA - Contar columnas llenas (http://www.forosdelweb.com/f90/vba-contar-columnas-llenas-632271/)

Laufwerk 08/10/2008 07:00

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!!!

3pies 08/10/2008 07:50

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

Laufwerk 08/10/2008 08:25

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?

3pies 08/10/2008 09:06

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

JoaoM 10/12/2010 16:11

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

hugo180486 10/12/2010 17:26

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

josecadiz 11/12/2010 07:56

Respuesta: VBA - Contar columnas llenas
 
Si quieres un manual de VBA para Excel aqui tienes uno : www.miaulavirtual.es

JoaoM 12/12/2010 09:08

Respuesta: VBA - Contar columnas llenas
 
Cita:

Iniciado por hugo180486 (Mensaje 3667324)
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?

hugo180486 13/12/2010 10:38

Respuesta: VBA - Contar columnas llenas
 
Cita:

Iniciado por JoaoM (Mensaje 3668552)
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 (Mensaje 3667264)
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.


La zona horaria es GMT -6. Ahora son las 23:44.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.