[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
Postado : 02/11/2023 1:19 pm