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.
Por SandroLima
#47901
Boa tarde, colegas forumeiros.

Estou precisando de uma solução em VBA para localizar a "linha de corte" de uma tabela.

No caso do exemplo em anexo a linha de corte seria dada por:
Total de linhas da tabela - (soma da quantidade de células que apresentam cor de preenchimentoda coluna [Data] e da coluna [Registro]) - (a quantidade de linhas em que as duas colunas possuem células com cor de preenchimento - interseção).

No caso desse exemplo a linha de corte corresponderia à linha do registro 39 da tabela.

Como eu chegaria a esse resultado?
Você não está autorizado a ver ou baixar esse anexo.
Editado pela última vez por SandroLima em 09 Set 2019 às 17:06, em um total de 1 vez.
Por SandroLima
#47918
Corrigindo a conta da msg anterior:

Linha de Corte = Total de linhas da tabela - (soma da quantidade de células com cor de preenchimento da coluna [Data] e da coluna [Registro]) - (a quantidade de linhas em que as duas colunas possuem células com cor de preenchimento, ou seja, interseção entre as duas colunas)

Obrigado a quem puder ajudar.
Editado pela última vez por SandroLima em 09 Set 2019 às 17:07, em um total de 1 vez.
Por eduardogrigull
Posts
#47920
Só não consegui entender direito. Todas os registros estão preenchidos, assim como as datas... Tente explicar melhor, eu nao faco a minima ideia do que se trata, e de qual data voce está falando, assim como nao entendo o que queres dizer com "Soma da qtd de células com preenchimento", sendo que todas elas tem um preenchimento!
Por eduardogrigull
Posts
#48003
Eu até queria ajudar, mas desisti pq voce não explicou o que eu queria saber. Em nenhuma das dezenas de vezes que tentei, consegui chegar ao resultado da linha 39. Provavelmente os outros que analisaram o arquivo tbm não entenderam. :|
Por SandroLima
#48015
Mas tentei explicar da melhor maneira possível.

A linha de corte seria a primeira linha em que não houvesse cor de preenchimento nas colunas Registro e Data da tabela.

A linha de corte corresponde à linha cujo valor da célula da coluna Registro é 39.
Você não está autorizado a ver ou baixar esse anexo.
Por eduardogrigull
Posts
#48032
Se eu entendi direito, está funcionando...
Código: Selecionar todos
Sub LinhadeCorte()
    
Dim UltimaLinha As Variant
Dim LinhaCorte As Integer

'Ultima linha da tabela, se quiser, pode digitar manualmente, esta autmatico
UltimaLinha = wshAtivDiarias.Cells(wshAtivDiarias.Rows.Count, 2).End(xlUp).Row

'Loop
For i = 15 To UltimaLinha
    
    'Verificar a cor da formatacao condicional
    If wshAtivDiarias.Cells(i, 2).DisplayFormat.Interior.Color = 16777215 Or wshAtivDiarias.Cells(i, 2).DisplayFormat.Interior.Color = 15917529 Then
        If wshAtivDiarias.Cells(i, 4).DisplayFormat.Interior.Color = 16777215 Or wshAtivDiarias.Cells(i, 4).DisplayFormat.Interior.Color = 15917529 Then
            
            '=Primeira linha sem formatacao condicional
            LinhaCorte = i                              'Linha na planilha
            MsgBox "A linha de corte é: " & wshAtivDiarias.Cells(i, 2).Value
            Exit Sub
        
        End If
    End If
Next
 
End Sub
Faca uns testes, eu programei pra ele avisar qual a primeira linha sem preenchimento, das colunas código e data... está acusando a linha 46, que contém o valor "39"
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