Visual Basic para Aplicaciones - for each con varias tablas

Life is soft - evento anual de software empresarial
 
Vista:

for each con varias tablas

Publicado por Carlos (1 intervención) el 18/06/2022 22:48:33
hola, ando haciendo un programa en vba y excel que lo q hace es que lee la informacion de una tabla si/no y en otra tabla oculta aquellos que no se pusieron si pero el problema es q son varias tablas y queria saber si hay una forma de hacer una sola
aqui muestro el codigo:

Dim rangovertabla1 As Range
Dim rangoxtabla1 As Range
Dim celdaactivatabla1 As Range
Dim celdaxtabla1 As Range

Set rangovertabla1 = Hoja5.ListObjects("tabla1").ListColumns(1).DataBodyRange
Set celdaactivatabla1 = Hoja6.Range("tabla1.1")
For Each rangoxtabla1 In rangovertabla1
For Each celdaxtabla1 In celdaactivatabla1.1
If celdaxtabla1.1 .Value = rangoxtabla1 .Value And rangoxtabla1 .Offset(0, 1).Value = "" Then
celdaxtabla1.1 .Cells.EntireRow.Hidden = True
End If
If celdaactivatabla1.RowHeight = 0 Then
celdaactivatabla1.Offset(-2, 0).RowHeight = 0
celdaactivatabla1 .Offset(1, 0).RowHeight = 0
End If
Next celdaxtabla1.
Next rangoxtabla1
'------tabla 2------'
Dim rangovertabla2 As Range
Dim rangoxtabla2 As Range
Dim celdaactivatabla2 As Range
Dim celdaxtabla2 As Range

Set rangovertabla2 = Hoja5.ListObjects("tabla2").ListColumns(1).DataBodyRange
Set celdaactivatabla2 = Hoja6.Range("tabla2.2")
For Each rangoxtabla2 In rangovertabla2
For Each celdaxtabla2 In celdaactivatabla2
If celdaxtabla2 .Value = rangoxtabla2 .Value And rangoxtabla2 .Offset(0, 1).Value = "" Then
celdaxtabla2 .Cells.EntireRow.Hidden = True
End If
If celdaactivatabla2 .RowHeight = 0 Then
celdaactivatabla2 .Offset(-2, 0).RowHeight = 0
celdaactivatabla2 .Offset(1, 0).RowHeight = 0
End If
Next celdaactivatabla2
Next rangoxtabla2

son muchas mas tablas pero la idea es esta y queria saber como podria hacer q fuera mas corto y rapido
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder