Página 1 de 1

Como passar por parametro a Tab desejada ?

Enviado: 09 Set 2016 às 10:34
por cyberlacs75
Amigos eu tenho uma planilha que tem vária Tabs e estas Tabs tem algumas que devo realizar alguns cálculos e apos terminar devo ir para a outra Tab e realizar os mesmos cálculos.

A pergunta é como faço para passar a Tab desejada para que uma função realize estes calculos
Código: Selecionar todos
Private Sub CommandButton1_Click()
    Dim objPlanilha As Worksheet
    Dim i As Integer
    
    i = 1
    
    For Each objPlanilha In ThisWorkbook.Worksheets

        If Not InStr(objPlanilha.Name, "Relatório") > 0 Then
            CalculaHorasPorDia (objPlanilha)
            i = i + 1
        End If
        
    Next
End Sub

Function CalculaHorasPorDia(objPlanilha As Workbook)

  'Sabendo qual é a Tab, vou realizar aqui os cálculos

End Function

Fico no aguardo
Obrigado

Como passar por parametro a Tab desejada ?

Enviado: 09 Set 2016 às 11:29
por DJunqueira
Supondo q por Tab vc esteja se referindo a tabelas...
No endereço abaixo vc pode encontrar várias métodos de chamada de tabelas.
http://www.excelanalysiszone.com/?p=374

Re: Como passar por parametro a Tab desejada ?

Enviado: 09 Set 2016 às 19:02
por cyberlacs75
Meu amigo DJunqueira, estou um pouco confuso, mas gostaria de uma ajuda.

Em relação a Tabs é isto mesmo Tabelas.

Então veja o que estou fazendo de errado, este exemplo pega o nome de cada Tabela e vai inserindo o seu próprio nome nas respectivas Tabelas, esta é a ideia mas dá erro.

Arquivo em anexo
Código: Selecionar todos
Private Sub CommandButton1_Click()
    Dim objPlanilha As Worksheet
    Dim i As Integer
    
    i = 1
    
    For Each objPlanilha In ThisWorkbook.Worksheets

            'objPlanilha.Cells(i, 1).Value = objPlanilha.Name
            CalculaHorasPorDia (objPlanilha)
            i = i + 1

        
    Next
End Sub

Function CalculaHorasPorDia(nomePlanilha As Worksheet)
    
    nomePlanilha.Cells(i, 1).Value = nomePlanilha.Name
    
End Function

Como passar por parametro a Tab desejada ?

Enviado: 10 Set 2016 às 04:58
por DJunqueira
Tabela não é Worksheet e provavelmente não é a Tab a q vc se referia.

Workbook = Pasta de traballho, arquivo onde ficam as planilhas;
Worksheet / sheet = Planilha, mas muitas vezes nos referimos a ela como guia ou aba;
Table = Tabela.

Vc provavelmente está querendo colocar o nome das planilhas (ou abas ou guias) em alguma célula, mas vc pode conseguir isso por meio de funções.
Veja o exemplo na planilha anexa.

Re: Como passar por parametro a Tab desejada ?

Enviado: 10 Set 2016 às 09:05
por cyberlacs75
Amigo DJunqueira, primeiro quero agradecer a ajuda, e pedir desculpas pela incorreta passagem de informações, agora pretendo ser mais claro possível.

Eu preciso gerar relatório mensais de trabalhos realizados pelos funcionários, tais como;

-Funcionário Horas Mês Trabalhadas
-Funcionários Horas Dia Trabalhada
- Parada de Produção por Setor

E isto vai longe tem mais coisas, então por este motivo, estou querendo desenvolver uma planilha dinâmica, onde eu coloco os dados nas Abas respectivas de cada funcionário e assim terminado o mês clico em um ButtonCommand e ele me gere os relatório.

Eu quero que o Botão faça a seguinte rotina;

For Each objPlanilha In ThisWorkbook.Worksheets

Vai na Aba Funcionário1 calcule as horas trabalhadas por dia, e passe para o relatório
Next

For Each
Vai na Aba Funcionário2 calcule as horas trabalhadas por dia, e passe para o relatório
Next

For Each
Vai na Aba Funcionário3 calcule as horas trabalhadas por dia, e passe para o relatório
Next

Por este motivo devo passar qual Aba cada função irá realizar os cálculos de Horas e de Setores que sofreram paradas e etc e também por questões de organização tenho que modularizar o código, para que não fique tudo no CommandButton.


Terminou os funcionários os relatórios estão formados

Planilha com o que quero que realize, referente a (HMT)-Horas Mensal Trabalhada e (HDT)-Horas Dia Trabalhada em anexo.

Agora acho que vai dar para entender :D

Re: Como passar por parametro a Tab desejada ?

Enviado: 10 Set 2016 às 12:01
por DJunqueira
cyberlacs75, montei a planilha anexa p/ vc ver q nem tudo passa necessariamente por macros.
Abra a planilha e depois em Dados clique em Atualizar Tudo e veja o relatório q vc quer surgir sem uso de macro (.xlsx).
Vc pode inclusive alterar ou inserir novas horas.

Re: Como passar por parametro a Tab desejada ?

Enviado: 10 Set 2016 às 21:15
por cyberlacs75
DJunqueira, vou ver se aplico isto que você passou acima.

MAS gostaria de saber, por questões de aprendizado, se ha possibilidade de passar por parâmetro alguma coisa, pode ser Index, Name e ai passando isto para a função, eu consiga chegar na Aba desejada e acessar as Cells(lin,col) da mesma, através da minha função ?

Envio CalculaHorasPorDia (objPlanilha.Index) ou CalculaHorasPorDia (objPlanilha.Name)

e ai na função

Function CalculaHorasPorDia(nomeOuNumero As Integer ou String)

Dim valorDaCelula As Integer ou String

AlgumaCoisaQueFaçaEuAcessar(nomeOuNumero ).Cells(lin,col).Value

End Function

Re: Como passar por parametro a Tab desejada ?

Enviado: 11 Set 2016 às 09:21
por DJunqueira
Já q a questão é aprendizado montei sua planilha agora com fórmulas e macro.
Prestar atenção no quanto a transformação de listas em tabelas facilita todo o trabalho de montagem e manutenção.
Um objeto típico no VBA seria uma tabela ou gráfico, evite pensar em planilha como objeto ("objPlanilha").

De todas as 3 formas q remontei seu relatório de longe com Nova Consulta é mais fácil.

Re: Como passar por parametro a Tab desejada ?

Enviado: 11 Set 2016 às 20:17
por cyberlacs75
Estou aqui para trazer a solução com todos os direitos ao Amigo Reinaldo

Funcionou Perfeitamente
Código: Selecionar todos
Private Sub CommandButton1_Click()
    Dim objPlanilha As Worksheet
    Dim i As Integer
    
    i = 1
    
    For Each objPlanilha In ThisWorkbook.Worksheets

        If Not InStr(objPlanilha.Name, "Relatório") > 0 Then
            CalculaHorasPorDia objPlanilha.Name, i
            i = i + 1
        End If
        
    Next
End Sub

Sub CalculaHorasPorDia(nomePlanilha As String, ByVal i As Integer)
Dim wr As Worksheet
Set wr = Sheets(nomePlanilha)
    MsgBox "voçe passou " & wr.Name & " numero " & i
    'Aqui me viro na codificação kkkkkkkk :)
    
End Sub