Eu tenho 3 tabelas Eu gostaria de alterar o número de linhas conforme eu atualizo o número de anos. Se eu mudo o ano final ou começo do ano onde a tabela pode flexionar. O problema que encontrei até agora é que, se eu aumentar a tabela, a linha adicionada é depois do ano final e não abaixo (NÃO incluída na tabela real). Portanto, talvez deslocar a mesa para baixo e copiar a fórmula todo o caminho com o resto do ano?
Isso é o que eu tenho até agora:
Private Sub Worksheet_change(ByVal Target As Range)
Dim StartYear, EndYour As Range
Dim UpdateTable As ListObject
Dim UpdateTableInput As ListObject
Dim NrOfRows, OldNrOfRows As Integer
' Set some ranges
Set StartYear = Worksheets("Sheet1").Cells(1, 2)
Set EndYear = Worksheets("Sheet1").Cells(2, 2)
Dim i As Integer
For i = 1 To 3
Set UpdateTable = Worksheets("Sheet2").ListObjects("Table" & i)
' Check if start or end years have changed
If (Not Intersect(StartYear, Target) Is Nothing) Or (Not Intersect(EndYear, Target) Is Nothing) Then
' Store the new and old number of rows
OldNrOfRows = UpdateTable.ListRows.Count - 1
NrOfRows = EndYear.Value - StartYear.Value + 1
' Resize the table
UpdateTable.Resize UpdateTable.Range.Resize(1 + NrOfRows)
'Delete cells below the table if it gets smaller
If OldNrOfRows > NrOfRows Then
UpdateTable.Range.Offset(NrOfRows + 1, 0).Resize(OldNrOfRows - NrOfRows + 1).Delete
End If
End If
Next i
End Sub
Sou novo no fórum e não tenho certeza de como fornecer dados de amostra. Vamos dizer que as tabelas são tão simples quanto 2 colunas. Uma coluna por anos, outra coluna para calcular alguma coisa.
StartYear = 2011
EndYear = 2014
2010 (2011 -1 ) ----- 128 (64*2)
2011 (2012 -1 ) ----- 64 (32*2)
2012 (2013 -1 ) ----- 32 (16*2)
2013 (2014 -1 ) ----- 16 (8*2)
2014 ----- 8
Estou procurando o
deixe-me saber se isso faz sentido.
Tags microsoft-excel vba