Referência de célul...
 
Notifications
Clear all

Referência de células em outra aba

4 Posts
2 Usuários
1 Likes
513 Visualizações
(@rafadeggau)
Posts: 8
Active Member
Topic starter
 

Bom dia,

Tenho o seguinte trecho de uma macro que funciona quando roda dentro da aba aonde estão os dados, mas quando eu tento colocar este código em outra aba ou em algum módulo, a maneira como eu estou me referindo ao local de origem dos dados não está funcionando.

Quero usar como referência as células B2 e o intervalo B2:B da aba LISTA e a D6 da aba PAINEL

DHi = DateSerial(Year([B2]), Month([B2]), Day([B2])) + _
TimeSerial(Hour([PAINEL!D6]), Minute([PAINEL!D6]) - 2, 59)
DHf = DateSerial(Year([B2]), Month([B2]), Day([B2])) + _
TimeSerial(Hour([PAINEL!D6]), Minute([PAINEL!D6]) - 1, 59)
If Evaluate("SUMPRODUCT((B2:B" & Cells(Rows.Count, 2).End(3).Row & ">" & Replace(DHi, ",", ".") & _
")*(B2:B" & Cells(Rows.Count, 2).End(3).Row & "<=" & Replace(DHf, ",", ".") & "))") = 0 Then Exit Sub

Assim como o código está acima a macro funciona enquanto está rodando dentro da aba LISTA, porém se eu desloco o código para um módulo, e faço a referência das células da aba LISTA no código, não funciona.

DHi = DateSerial(Year([LISTA!B2]), Month([LISTA!B2]), Day([LISTA!B2])) + _
TimeSerial(Hour([PAINEL!D6]), Minute([PAINEL!D6]) - 2, 59)
DHf = DateSerial(Year([LISTA!B2]), Month([LISTA!B2]), Day([LISTA!B2])) + _
TimeSerial(Hour([PAINEL!D6]), Minute([PAINEL!D6]) - 1, 59)
If Evaluate("SUMPRODUCT((LISTA!B2:B" & Cells(Rows.Count, 2).End(3).Row & ">" & Replace(DHi, ",", ".") & _
")*(LISTA!B2:B" & Cells(Rows.Count, 2).End(3).Row & "<=" & Replace(DHf, ",", ".") & "))") = 0 Then Exit Sub

Com estas referências "LISTA!" e dentro de um módulo, este código não retorna nenhum resultado e também não acusa erro.

Este código é uma parte que o amigo @osvaldomp ajudou a escrever em outro fórum

Alguém pode fazer a gentileza de iluminar minhas idéias e ajudar a escrever o código com referências que funcionem sempre? Não importa em que aba ou módulo o código esteja localizado?

 
Postado : 02/11/2023 7:22 am
(@osvaldomp)
Posts: 852
Prominent Member
 

[quote data-userid="9402" data-postid="131495"

Quero usar como referência as células B2 e o intervalo B2:B da aba LISTA e a D6 da aba PAINEL

... com referências que funcionem sempre? Não importa em que aba ou módulo o código esteja localizado?

O código abaixo irá funcionar se colocado em um módulo comum e qualquer que seja a planilha ativa do arquivo que contiver a macro.

Entenda-se como módulo comum qualquer módulo obtido via menu Inserir | Módulo , que gera Módulo1, Módulo2, ...

Sub ReplicaDados_HoraPainelD6()
Dim DHi As Double, DHf As Double, x As Long
Application.ScreenUpdating = False
With Sheets("LISTA")
.AutoFilterMode = False
DHi = DateSerial(Year(.[B2]), Month(.[B2]), Day(.[B2])) + _
TimeSerial(Hour(Sheets("PAINEL").[D6]), Minute(Sheets("PAINEL").[D6]) - 2, 59)
DHf = DateSerial(Year(.[B2]), Month(.[B2]), Day(.[B2])) + _
TimeSerial(Hour(Sheets("PAINEL").[D6]), Minute(Sheets("PAINEL").[D6]) - 1, 59)
If Evaluate("SUMPRODUCT((LISTA!B2:B" & Sheets("LISTA").Cells(Rows.Count, 2).End(3).Row & ">" & Replace(DHi, ",", ".") & _
")*(LISTA!B2:B" & Sheets("LISTA").Cells(Rows.Count, 2).End(3).Row & "<=" & Replace(DHf, ",", ".") & "))") = 0 Then Exit Sub
.Range("A1:G1").AutoFilter Field:=2, Criteria1:=">" & Replace(DHi, ",", "."), Operator:=xlAnd, _
Criteria2:="<=" & Replace(DHf, ",", ".")
x = .AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible).Count
Sheets("Plan2").Range("A2").Resize(x - 1).EntireRow.Insert
.Range("A2:G" & .Cells(Rows.Count, 1).End(3).Row).Copy Sheets("Plan2").[A2]
.AutoFilterMode = False
End With
With Sheets("Plan2").Range("B2:B" & x)
.Value = Evaluate("=TIME(HOUR(Plan2!B2),MINUTE(Plan2!B2),0)")
.NumberFormat = "hh:mm"
End With
End Sub

 

Osvaldo

 
Postado : 02/11/2023 1:19 pm
rafadeggau reacted
(@rafadeggau)
Posts: 8
Active Member
Topic starter
 

Amigo @osvaldomp,

Você não imagina a admiração que tenho por pessoas como você.

Novamente surpreendendo. Muito obrigado!

Que Deus ilumine seu caminho!

 
Postado : 02/11/2023 6:41 pm
(@osvaldomp)
Posts: 852
Prominent Member
 

Olá, @rafadeggau.

Ficamos contentes por você ter encontrado uma solução satisfatória.

God bless you too! 😀 

Osvaldo

 
Postado : 02/11/2023 6:56 pm