ultima seleccionar recorrer recorre que para otra macro los hoja hasta hacia filas fila desplazar datos cumple cumplan copiar copia condicion con como columnas ciclos celdas celda buscar abajo excel vba excel-vba

seleccionar - Iterar a través de filas pobladas en Excel usando VBA



recorrer filas y columnas excel vba (3)

Así que estoy tratando de iterar a través de una hoja de trabajo en una hoja de cálculo de Excel usando VBA. Quiero iterar a través de cada fila, y luego a través de cada columna, ya pesar de buscar en Google, no puedo encontrar una manera intuitiva de hacerlo.

Supongo que la primera celda de una fila debe ser poblada, si no es así, entonces ese debe ser el final. Puedo hacer cumplir esto

Mi enfoque actual es recorrer las filas, luego intentar obtener el valor de la primera celda, pero no puedo resolverlo. He venido preguntas aquí y en otras partes sobre el uso de rangos y cosas así, pero nada que me ayude a escribir código.

El enfoque actual es:

Set sh = ActiveSheet RowCount = 0 For Each rw In sh.Rows ''If Row.Cells(1, 1).Value = "" Then Exit For RowCount = RowCount + 1 Next rw MsgBox (RowCount)

Ahora cuando ejecuto esto, obtengo un gran número, lo que es incorrecto ya que la tabla solo tiene alrededor de 25 filas. Comenté la primera línea ya que no estaba funcionando.

¿Qué puedo cambiar en la primera línea de For Loop para romper correctamente cuando encuentra una fila donde la primera celda está vacía?


Para el beneficio de cualquiera que .UsedRange similar, vea la hoja de trabajo .UsedRange ,
por ejemplo ? ActiveSheet.UsedRange.Rows.Count ? ActiveSheet.UsedRange.Rows.Count
y bucles como
For Each loopRow in Sheets(1).UsedRange.Rows: Print loopRow.Row: Next


Parece que acaba de codificar la fila y la columna; de lo contrario, un par de pequeños retoques, y creo que estás allí:

Dim sh As Worksheet Dim rw As Range Dim RowCount As Integer RowCount = 0 Set sh = ActiveSheet For Each rw In sh.Rows If sh.Cells(rw.Row, 1).Value = "" Then Exit For End If RowCount = RowCount + 1 Next rw MsgBox (RowCount)


Voy a hacer un par de suposiciones en mi respuesta. Supongo que sus datos comienzan en A1 y no hay celdas vacías en la primera columna de cada fila que tiene datos.

Este código:

  1. Encuentra la última fila en la columna A que tiene datos
  2. Pasa por cada fila
  3. Encuentre la última columna en la fila actual con datos
  4. Pasa por cada celda en la fila actual hasta la última columna encontrada.

Este no es un método rápido, pero se repetirá a través de cada uno de manera individual como lo sugirió es su intención.

Sub iterateThroughAll() ScreenUpdating = False Dim wks As Worksheet Set wks = ActiveSheet Dim rowRange As Range Dim colRange As Range Dim LastCol As Long Dim LastRow As Long LastRow = wks.Cells(wks.Rows.Count, "A").End(xlUp).Row Set rowRange = wks.Range("A1:A" & LastRow) ''Loop through each row For Each rrow In rowRange ''Find Last column in current row LastCol = wks.Cells(rrow, wks.Columns.Count).End(xlToLeft).Column Set colRange = wks.Range(wks.Cells(rrow, 1), wks.Cells(rrow, LastCol)) ''Loop through all cells in row up to last col For Each cell In colRange ''Do something to each cell Debug.Print (cell.Value) Next cell Next rrow ScreenUpdating = True End Sub