entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

recorrer una hoja de excel como si fuera una matriz en VBA

Hola, me gustaria saber como recorrer una hoja de excel, una "sheet" como si fuera un array en vba, no se si es suficiente o si se puede guardar toda la hoja en una variable como por ejemplo:
tabla=Activeworkbook.sheets("requirements")

o como he de hacerlo? quiero recorrerla con un bucle for gracias

0voto

Peter comentado

¿Y no tienes nada hecho? ¿Quieres el código completo ya terminado?

0voto

midnightnymph comentado

si, si tengo el codigo hecho solo que me da errores mira este es el codigo:
si me puedes pasar un ejemplo de como recorres una tabla completa de una hoja de calculo te lo agradeceria =)

este es mi codigo hasta ahora y me da un error en la variable Tabla porque dice que "espera un array"

Muchas gracias por responder =)

Function casosPositivosYTotales(Tipo, Equipo, mes, KPI) As Integer()
Dim KPICol As String
If KPI = "response" Then
    KPICol = "AT"
Else
    KPICol = "AU"
End If

Dim contador As Integer
Dim contadorTotal As Integer
Dim fecha As String
Dim MesT As String
Dim Tabla As Range

TablaR = Sheets("Requirements").Select
Tabla = Array(TablaR)

For Index = 1 To UBound(Tabla)
    For Index2 = 0 To UBound(Tabla(Index))
        Dim KPIT As Excel.Range
        TipoT = Range("M" & Index).Value
        EquipoT = Range("AG" & Index).Value
        fecha = Range("P" & Index).Value
        MesT = Mid(fecha, 4, 1)
        MsgBox (MesT)
        Set KPIT = Range(KPICol & Index).Value
        If TipoT = Tipo And EquipoT = Equipo And MesT = mes Then
            If KPIT = 1 Then
                    contador = contador + 1
            Else
                    contadorTotal = contador + 1
            End If
        End If
    Next
Next
Dim casos() As Integer

casos(0) = contador
casos(1) = contadorTotal
casosPositivosYTotatles = casos
End Function

1 Respuesta

2votos

carlossevi Puntos63580

Como ya te he contestado en la otra pregunta idéntica a esta (http://entredesarrolladores.com/8915/ayuda-con-macro-de-visual-basic-para-excel) hay varias opciones, voy a proponerte dos:

  1. Recorrer la hoja hasta que encuentras una celda vacía:

    With Sheets("requirements")

    Dim Fila As Long
    Fila = 1
    Do While (Not (IsEmpty(.Cells(Fila, 1).Value)))
        ' Tu código
        ' ... .Cells(Fila, 1).Value ...
        ' ...
        Fila = Fila + 1
    Loop

    End With

  2. Ver cual es la última fila del rango y recorrer con bucle for:

    With Sheets("requirements")

    Dim Fila As Long
    Dim UltFila As Long
    UltFila = .Range("A1").End(xlDown).Row
    
    For Fila = 1 To UltFila
        ' Tu código
        ' ... .Cells(Fila, 1).Value ...
        ' ...
        Fila = Fila + 1
    Next

    End With

0voto

midnightnymph comentado

gracias, siento haber abierto otra pregunta pero como es un tema distinto al original de la pregunta anterior me parecio conveniente abrir uno nuevo

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta