Código: Selecionar todosPublic Function VerificaValor() As Boolean
If lngValor <> CLng(Wsh_Acoes.Range("Rng_QtdeAtivos").Value2) Then
VerificaValor = False
Criei uma variável pública chamada lngValor (do tipo Long). Esta variável vai receber o valor da célula Rng_QtdeAtivos. Vamos supor que o valor da célula Rng_QtdeAtivos seja igual a 4. Então lngValor tb será 4. Aí você altera um valor no campo Ativo, mas o valor da célula Rng_QtdeAtivos continua em 4. Então, este código vai comparar se lngValor (que tem valor 4) é igual ao valor da célula Rng_QtdeAtivos. Neste caso é igual, logo a função VerificaValor será True.
Agora vamos supor que o valor da célula Rng_QtdeAtivos seja igual a 4. Então lngValor tb será 4. Aí você altera um valor no campo Ativo, mas o valor da célula Rng_QtdeAtivos se altera para 3. Então, este código vai comparar se lngValor (que tem valor 4) é igual ao valor da célula Rng_QtdeAtivos. Neste caso é diferente, logo a função VerificaValor será False.
Ou seja, criei esta função para verificar se a célula Rng_QtdeAtivos foi alterada, pois a variável pública lngValor armazena o valor de Rng_QtdeAtivos no cálculo anterior.
Código: Selecionar todosf VerificaValor Then Exit Sub
If Not Application.Intersect( _
lobTab.ListColumns("Ativo").DataBodyRange, _
Target) Is Nothing Then
No código acima, se VerificaValor for True, quer dizer que o valor de Rng_QtdeAtivos não foi alterada. Sendo assim, ele sai da subrotina e não faz nada. Porém, se VerificaValor for False, então quer dizer que o valor de Rng_QtdeAtivos foi alterada.
Logo em seguida, verifico se a célula modificada (Target) foi modificada na coluna Ativo. O método Intersect do objeto verifica se a intersecção entre dois intervalos de células é verdadeira ou não. Se não houver intersecção, ela retorna um valor nulo, mas se houver, retorna o intervalo de intersecção.
Então eu comparo se o valor é nulo (is nothing). Porém eu quero o contrário, que seja não nulo. Por isso o "Not" antes da verificação, invertendo a lógica de comparação, pois quero verifica se ele
não é nulo.
Em relação ao uso da subrotina RedimensionaTabela, ela possui dois parâmetros. O primeiro parâmetro é a Tabela, o que não é problema, pois a tabela é a TB_MovimentaçãodeAtivos. O segundo parâmetro é a quantidade de linhas que se deseja redimensionar. Para mim não está claro para quantas linhas você quer redimensionar a tabela após haver alteração do valor da célula Rng_QtdeAtivos.
Sugiro que você dê um exemplo prático de uma (ou mais) alteração(ões) e diga qual o resultado esperado neste redimensionamento da tabela.
Espero que tenha ajudado. Se lhe fui útil, agradeço se me conceder seu LIKE.
Se esta ajuda resolveu seu problema, por favor marque o tópico como RESOLVIDO.
Que o amor e a paz de Deus esteja contigo!