Pessoal mais uma vez pedindo uma ajuda pros profissionais da planilha!
Acontece o seguinte, tenho uma coluna "B" que precisa ser preenchida até certo ponto, mas o ponto é variável e preciso checar se cada célula tem 4 itens, separados por ":"... Precisava que a planilha checasse se até onde foi preenchido tem os 4 campos e caso ache alguma preenchida com mais ou menos, desse mensagem de erro e abortar-se!
Estou usando isso pra comparar:
If Plan1.Range("B3") Like "[!:]*:*:*:*[!:]"
034310:0230:0102:84805:20
034000:0105:85015:22
034000:0105:85044:3
Juro que tentei bastante...Tentei fazer um loop com If dentro para travar o loop caso achasse uma célula com mais ou menos dados, fiz trocentos IF, só me resta pedir ajuda a vocês! Grato desde já!
https://www.todamateria.com.br/ponto-de-exclamacao-quando-usar/
Option Explicit Sub percorrerColuna() Dim i As Long Dim num As Integer Dim j As Integer For i = 1 To Plan1.UsedRange.Rows.Count num = 0 For j = 1 To Len(Plan1.Range("B" & i).Value) If Mid(Plan1.Range("B" & i).Value, j, 1) = ":" Then num = num + 1 End If Next j If num > 4 Or num < 4 Then MsgBox "Erro. Foram encontradas " & num & " ocorrências na linha " & i Exit Sub End If Next i End Sub
Outro código para a mesma tarefa:
Option Explicit Sub percorrerColuna() Dim DLin As Long DLin = Range("B1").End(xlDown).Row Dim i As Long Dim num As Integer Dim j As Integer For i = 1 To DLin num = 0 For j = 1 To Len(Plan1.Range("B" & i).Value) If Mid(Plan1.Range("B" & i).Value, j, 1) = ":" Then num = num + 1 End If Next j If num > 4 Or num < 4 Then MsgBox "Erro. Foram encontradas " & num & " ocorrências na linha " & i Exit Sub End If Next i End Sub
Obrigado! Só esqueci de um detalhe! Só queria ir até o B17, pq coloquei uns campos logo abaixo com outras info, e não queria arriscar checar elas...Poderia fazer essa gentileza? Acho que só falta isso!
Option Explicit Sub percorrerColuna() Dim i As Long Dim num As Integer Dim j As Integer Dim cl As Object Dim intervalo As Range Set intervalo = Plan1.Range("B1:B17") For Each cl In intervalo num = 0 For j = 1 To Len(Plan1.Range("B" & cl.Row).Value) If Mid(Plan1.Range("B" & cl.Row).Value, j, 1) = ":" Then num = num + 1 End If Next j If num > 4 Or num < 4 Then MsgBox "Erro. Foram encontradas " & num & " ocorrências na linha " & cl.Row Exit Sub End If Next cl End Sub Option Explicit Sub percorrerColuna2() Dim i As Long Dim num As Integer Dim j As Integer For i = 1 To 17 num = 0 For j = 1 To Len(Plan1.Range("B" & i).Value) If Mid(Plan1.Range("B" & i).Value, j, 1) = ":" Then num = num + 1 End If Next j If num > 4 Or num < 4 Then MsgBox "Erro. Foram encontradas " & num & " ocorrências na linha " & i Exit Sub End If Next i End Sub
Option Explicit Sub percorrerColuna() Dim i As Long Dim num As Integer Dim j As Integer Dim cl As Object Dim intervalo As Range Set intervalo = Plan1.Range("B3:B17") For Each cl In intervalo num = 0 For j = 1 To Len(Plan1.Range("B" & cl.Row).Value) If Mid(Plan1.Range("B" & cl.Row).Value, j, 1) = ":" Then num = num + 1 End If Next j If num > 3 Or num < 3 Then MsgBox "Erro. Foram encontradas " & num & " ocorrências na linha " & cl.Row Exit Sub End If
Tive que fazer algumas alterações, e ela me fala q a linha 5 esta com 0 ocorrências, provavelmente pq verificou...Como introduzo um WhileNotEmpty nessa situação?
Edit: consegui resolver assim: If (num > 3 Or num < 3) And Plan1.Range("B" & cl.Row).Value <> "" Then
Edit2: Agora o plano é fazer ele dizer a linha do erro! B3,B4 etc...
(MsgBox "Revise todas as informações do Cross e tente novamente! Existem campos dos saltos com informação extra ou faltando!" + vbCrLf + vbCrLf + "Verifique: B" & cl.Row, vbCritical, "ATENÇÃO:")