Tenho aqui 2 folhas. 1 folha é para os dados principais. A outra folha é para as entradas de Times of the Name.
Folha 1 (os espaços em branco são propositais - para ver o resultado também se houver espaços em branco)
UM | B | C |
---|---|---|
Nome | Data adicionada | Data de modificação |
Ana | 11/03/2025 | 18/03/2025 |
Mav | 11/03/2025 | 12/03/2025 |
Lisa | 14/03/2025 | 13/03/2025 |
Ron | 11/03/2025 | 14/03/2025 |
Mary | 12/03/2025 | 15/03/2025 |
Kurt | 13/03/2025 | 17/03/2025 |
15/03/2025 | ||
Kevin | 16/03/2025 |
Folha2
UM | B |
---|---|
Equipe | Nome |
Lúcia | Ana |
Lúcia | Mav |
Peter | Lisa |
Peter | Ron |
Nory | Mary |
Nory | Kurt |
Carlos | Mona |
Carlos | Kevin |
Caixa de listagem:
Gostaria de escolher equipes vindas da Planilha2. Tenho um código aqui abaixo, mas ele me dará o erro "Incompatibilidade de tipo".
showList é chamado durante a alteração do ComboBox:
Sub showList()
Dim ws As Worksheet, colList As Collection
Dim arrData, arrList, i As Long, j As Long
Dim targetTeam As Variant
' ***
Dim ws2 As Worksheet: Set ws2 = Worksheets("Sheet2")
Dim arr: arr = ws2.Range("B1").CurrentRegion.Value
Dim dict As Object: Set dict = CreateObject("Scripting.Dictionary")
For i = 2 To UBound(arr)
dict(arr(i, 2)) = Empty
Next
' ***
Set colList = New Collection
Set ws = Worksheets("Sheet1")
arrData = ws.Range("A1:E" & ws.Cells(ws.Rows.count, "A").End(xlUp).Row)
For i = 2 To UBound(arrData)
targetTeam = Application.VLookup((arrData(i, 2)), ws2.Range("B1").CurrentRegion.Value, -1, False)
If dict.exists(arrData(i, 1)) And cmbTeam = targetTeam Then
colList.Add i, CStr(i)
End If
Next
ReDim arrList(1 To colList.count + 1, 1 To UBound(arrData))
For j = 1 To 5
arrList(1, j) = arrData(1, j) ' header
arrList(1, 4) = "Date Added Duration"
arrList(1, 5) = "Date Modified Duration"
For i = 1 To colList.count
arrList(i + 1, j) = arrData(colList(i), j)
Dim dateA As Variant
Dim dateB As Variant
Dim dateC As Variant
Dim difference1 As Long
Dim difference2 As Long
' Assign values to the dates
dateA = arrList(i + 1, 2)
dateB = arrList(i + 1, 3)
dateC = Format(Now, "m/d/yyyy")
' Calculate the difference in days
difference1 = DateDiff("d", dateA, dateC) 'date today minus date added
If Not dateA = "" Then
If difference1 > 1 Then
arrList(i + 1, 4) = difference1 & " days"
Else
arrList(i + 1, 4) = difference1 & " day"
End If
Else
arrList(i + 1, 4) = "Missing"
End If
difference2 = DateDiff("d", dateB, dateC) 'date today minus date modified
If Not dateB = "" Then
If difference2 > 1 Then
arrList(i + 1, 5) = difference2 & " days"
Else
arrList(i + 1, 5) = difference2 & " day"
End If
Else
arrList(i + 1, 5) = "Missing"
End If
Next
Next
With Me.ListBox1
.Clear
.ColumnCount = UBound(arrData, 2)
.list = arrList
End With
End Sub
Erro de incompatibilidade de tipo
Desejado:
Filtrar as entradas do dicionário