Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
  • Avatar do usuário
#31331
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
Você não está autorizado a ver ou baixar esse anexo.
#31332
Boa noite.
Veja se te atende.
Você não está autorizado a ver ou baixar esse anexo.
#31333
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.
#31338
JCabral escreveu: Atendendo ao resto do processo, isto é uma pequena parte, é de facto imperioso o uso do VBA.
Veja se te atende agora.
Você não está autorizado a ver ou baixar esse anexo.
#31339
Uma versão mais "enxuta" e que produz o mesmo resultado, teste-a no mesmo arquivo que postei acima:
Código: Selecionar todos
Sub 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
#31362
Experimente:
Código: Selecionar todos
Sub 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 todos
Sub 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
#31366
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
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord