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
Por SandroLima
#39949
Boa tarde, pessoal

Qual a forma de retornar o número de uma coluna? Tenho uma tabela com 5 colunas

Registro Fluxo Periodicidade Data Dia da Semana

Pensei no seguinte código com a intenção de que retornasse o número da coluna "Data" (no caso 4):
Código: Selecionar todos
Option Explicit

Private Sub Workbook_Open()
    
    Application.ScreenUpdating = False
    
    Dim TabelaConsulta As ListObject
    Dim UCol As Long, Col_Data As Long
               
    Set TabelaConsulta = wshAtivDiarias.ListObjects("TB_ConsultaAtivCadastrada")
    'UCol = TabelaConsulta.ListColumns.Count.Columns(Range.("TB_ConsultaAtivCadastrada[Data]")).DataBodyRange
    UCol = TabelaConsulta.ListColumns.Count
    'Col_Data = TabelaConsulta.DataBodyRange.Columns(1,
    
    'Col_Data = TabelaConsulta.ListColumns("Data") - TabelaConsulta.ListColumns("Registro") + 1 'Nº da coluna "Data" da TB_ConsultaAtivCadastrada
    
    TabelaConsulta.ListRows(1).Range(1, 2).Value = "Entrada"
    TabelaConsulta.ListRows(1).Range(1, 3).Value = "Ocasional"
    'TabelaConsulta.ListRows(1).Range(1, Col_Data).Value = Date
    TabelaConsulta.ListRows(1).Range(1, 4).Value = Date
            
    Set TabelaConsulta = Nothing

    Application.ScreenUpdating = True

End Sub
Fiz dessa maneira pq a posição da coluna data pode variar na tabela. Porém não funcionou.

Como devo proceder?
Você não está autorizado a ver ou baixar esse anexo.
Avatar do usuário
Por gfranco
Avatar
#39958
Amigo,
veja se é isso que precisa:
Você não está autorizado a ver ou baixar esse anexo.
Por SandroLima
#39963
Showwww, gfranco.

Adequei para minha necessidade, após instalar o seu módulo e ficou assim:
Código: Selecionar todos
Option Explicit

Private Sub Workbook_Open()
    
    Application.ScreenUpdating = False
    
    Dim TabelaConsulta As ListObject
    Dim NColData As Long
    Dim NomeColuna1 As String
    'Dim UCol As Long, ColData As Long
    
    NomeColuna1 = "Data"
    
    Set TabelaConsulta = wshAtivDiarias.ListObjects("TB_ConsultaAtivCadastrada")
    
    NColData = RetornaColuna(TabelaConsulta, NomeColuna1)
    
    TabelaConsulta.ListRows(1).Range(1, NColData).Value = Date
    TabelaConsulta.ListRows(1).Range(1, 4).Value = "Entrada"
    TabelaConsulta.ListRows(1).Range(1, 5).Value = "Ocasional"
            
    Set TabelaConsulta = Nothing

    Application.ScreenUpdating = True

End Sub
Funcionou certinho. Muito obrigado.

Esse módulo pode ser adaptado para localizar a linha de uma palavra ou expressão?
Isso pode ser útil também... mas já resolveu o que eu precisava.

Mais uma vez obrigado.
Avatar do usuário
Por gfranco
Avatar
#39966
SandroLima escreveu:
Esse módulo pode ser adaptado para localizar a linha de uma palavra ou expressão?
Isso pode ser útil também... mas já resolveu o que eu precisava.

Mais uma vez obrigado.
Veja se atende.
Você não está autorizado a ver ou baixar esse anexo.
Por SandroLima
#39968
Puxa, GFranco.

Funcionalidade ótima... vou testar mais ela entre hoje e amanhã antes de encerrar o tópico.

Muito obrigado mais uma vez...

Show!!!!
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