Tentei encontrar a resposta antes de escrever minha pergunta, mas sem sucesso.
Preciso verificar se a célula, digamos C1, está vazia (sem valores) em todas as planilhas de algum arquivo Excel e quero ver uma caixa de mensagem com nomes de planilhas onde C1 não esteja vazia.
O motivo é que tenho um arquivo com muitas planilhas e agora preciso adicionar alguns links, mas nem todas as listas têm o mesmo "formato" e também há algumas listas das quais não preciso, então preciso verificar essas duas coisas primeiro.
Até agora eu tenho esse código, mas algo está errado, porque sempre vejo uma caixa de mensagem com o texto: A célula C1 está vazia em todas as planilhas , mesmo se eu tiver alguns valores em C1 (eu os adiciono em 3 planilhas, por causa do teste desse código).
Sub CheckCellC1()
Dim ws As Worksheet
Dim nonEmptyCell As String
nonEmptyCell = ""
' Browse all sheets in the current workbook
For Each ws In ThisWorkbook.Worksheets
' Check if cell C1 is empty
If ws.Range("C1").Value <> "" Then
nonEmptyCell = nonEmptyCell & ws.Name
End If
Next ws
' Result
If nonEmptyCell = "" Then
MsgBox "Cell C1 is empty in all sheets."
Else
MsgBox "Cell C1 isn't empty in those sheets:" & nonEmptyCell
End If
End Sub
O que estou perdendo?
Agradeço desde já sua ajuda.
Atualização: executei meu código a partir de um arquivo PERSONAL.xlsb e durante o "teste" abri apenas um arquivo Excel.
O único problema real com meu código era usar ThisWorkbook
em vez de ActiveWorkbook
. Adicionar & vbLf
no final da linha nonEmptySheets = nonEmptySheets & ws.Name & vbLf
ajuda muito com a entrada da caixa de mensagem, está mais fácil de ler agora.
Sou iniciante em VBA e sempre cometo erros como esse (tenho um pouco de dificuldade para entender a diferença entre "lugares" onde o código está e como isso pode impactar o código em si, mas esse é outro assunto), então obrigado a todos por me ajudarem com isso.