Página 1 de 1
Alterar Valor numa tabela em função de um código
Enviado: 23 Mar 2018 às 22:13
por JCabral
Boa noite
Mais uma vez pedindo ajuda para encontrar o melhor código/VBA para um problema que tenho, assim:
1) Tenho na aba "Data" uma série de códigos, neste caso no range ("E2:E13"), começa sempre em E2 mas o número de códigos é variável;
2) Pretendo que para cada código na Aba "Data" que seja igual ao código na Tabela "tblBACKUP" da aba Backup coluna "idCodAtv" o valor na coluna "inFTE" da Tabela "tblBACKUP" passe para "VERDADEIRO"
Obrigado pela ajuda
Jorge Cabral
Re: Alterar Valor numa tabela em função de um código
Enviado: 23 Mar 2018 às 23:51
por gfranco
Boa noite.
Veja se te atende.
Alterar Valor numa tabela em função de um código
Enviado: 23 Mar 2018 às 23:55
por gfranco
PS: resolvi com fórmula por entender ser o método mais simples para o caso apresentado.
Se for imperioso o uso de VBA, favor avisar.
Alterar Valor numa tabela em função de um código
Enviado: 24 Mar 2018 às 00:03
por JCabral
Boa noite gfranco
Atendendo ao resto do processo, isto é uma pequena parte, é de facto imperioso o uso do VBA.
Muito obrigado pela ajuda.
Jorge Cabral
Re: Alterar Valor numa tabela em função de um código
Enviado: 24 Mar 2018 às 02:38
por gfranco
JCabral escreveu:
Atendendo ao resto do processo, isto é uma pequena parte, é de facto imperioso o uso do VBA.
Veja se te atende agora.
Re: Alterar Valor numa tabela em função de um código
Enviado: 24 Mar 2018 às 03:13
por gfranco
Uma versão mais "enxuta" e que produz o mesmo resultado, teste-a no mesmo arquivo que postei acima:
Código: Selecionar todosSub preenche2()
On Error GoTo errPreenche
Dim tbPrincipal As ListObject, tbBusca As ListObject
Dim counter As Long, i As Long
Dim wkf As WorksheetFunction
Dim colBusca As Long, colResultado As Long
Dim resultado As Boolean
Dim procurado As Variant
Set tbPrincipal = Backup.ListObjects("tblBACKUP")
Set tbBusca = Data.ListObjects("TbCodigos")
Set wkf = Application.WorksheetFunction
colBusca = wkf.Match("idCodAtv", tbPrincipal.HeaderRowRange, 0)
colResultado = wkf.Match("inFTE", tbPrincipal.HeaderRowRange, 0)
tbPrincipal.ListColumns(colResultado).DataBodyRange.ClearContents
For i = 1 To tbPrincipal.DataBodyRange.Rows.Count
resultado = False
procurado = tbPrincipal.DataBodyRange.Cells(i, colBusca)
counter = wkf.CountIf(tbBusca.ListColumns(1).DataBodyRange, procurado)
If counter > 0 Then resultado = True
tbPrincipal.DataBodyRange.Cells(i, colResultado) = resultado
Next i
Exit Sub
errPreenche:
MsgBox "Um erro ocorreu, verifique !", vbExclamation, "Atenção"
End Sub
Re: Alterar Valor numa tabela em função de um código
Enviado: 24 Mar 2018 às 15:32
por osvaldomp
Experimente:
Código: Selecionar todosSub InsereVerdadeiro()
Dim idCodAtv As Range, k As Long
With Sheets("Data")
For Each idCodAtv In .Range("E2:E" & .Cells(Rows.Count, 5).End(3).Row)
If Application.CountIf(Sheets("Backup").[A:A], idCodAtv.Value) > 0 Then
k = Sheets("Backup").[A:A].Find(idCodAtv.Value, lookat:=xlWhole).Row
Sheets("Backup").Cells(k, "P") = True
End If
Next idCodAtv
End With
End Sub
ou
Código: Selecionar todosSub InsereVerdadeiroV2()
Dim idCodAtv As Range
With Sheets("Backup")
For Each idCodAtv In .Range("A2:A" & .Cells(Rows.Count, 1).End(3).Row)
If Application.CountIf(Sheets("Data").[E:E], idCodAtv.Value) > 0 Then idCodAtv.Offset(, 15).Value = True
Next idCodAtv
End With
End Sub
Alterar Valor numa tabela em função de um código
Enviado: 24 Mar 2018 às 18:36
por JCabral
gfranco e osvaldomp, muito obrigado pelas vossas versões ambas funcionam impecavelmente, irei colocar um novo post e que passa por ler para uma listbox apenas os valor (todas as colunas) com VERDADEIRO.
Mais uma vez muito obrigado
Jorge Cabral