Uma família de softwares de planilhas da Microsoft com ferramentas para analisar, criar gráficos e comunicar dados.
Tente utilizar o código abaixo:
Private Sub ContabilizaStatus()
Dim FinalRow As Long
Dim A As Long
Dim B As Long
Dim C As Long
Dim D As Long
Dim wsDados As Worksheet
Dim wsBase As Worksheet
Dim i As Integer
A = 0
B = 0
C = 0
D = 0
With wsDados
FinalRow = Cells(Rows.Count, 7).End(xlUp).Row
For i = 2 To FinalRow
Select Case .Cells(i, 7)
Case "Condição 01"
A = A + 1
Case "Condição 02"
B = B + 1
Case "Condição 03"
C = C + 1
Case "Condição 04"
D = D + 1
End Select
Next i
End With
With wsBase
.Cells(13, 9) = A
.Cells(14, 9) = B
.Cells(15, 9) = C
.Cells(16, 9) = D
End With
End Sub
Dica:
Dim FinalRow, A, B, C, D As Long
não declara as variáveis A, B, C e D como Long, mas apenas FinalRow. Nesse caso, A, B, C e D foram declaradas como Variant. Se quiser declarar todas como Long, use:
Dim FinalRow As Long, A As Long, B As Long, C As Long, D As Long
ou:
Dim FinalRow As Long
Dim A As Long
Dim B As Long
Dim C As Long
Dim D As Long
Dica:
Use a palavra chave Option Explicit em seu código: http://www.ambienteoffice.com.br/officevba/declaracao_de_variavel/
Dica:
With wsDados
FinalRow = Cells(Rows.Count, 7).End(xlUp).Row
o correto é você qualificar todo objeto pertencente à wsDados, inclusive o objeto Cells e Rows:
With wsDados
FinalRow = .Cells(.Rows.Count, 7).End(xlUp).Row
Aqui também:
Select Case Cells(i, 7).Value
trocar por:
Select Case .Cells(i, 7).Value
Dica:
.Cells(13, 9).Value = A
é o mesmo que
.Cells(13, 9) = A