Nie ma sensu pisać kod warunku, w którym będzie pusta linia ("nic nie rób"), wtedy można np.: "odwrócić" warunek.
Ja w przykładzie zastosowałem Not.
For Each ws In ActiveWorkbook.Worksheets
ws.Activate
ActiveSheet.UsedRange.Select
For Each komorka In Selection
wartosckomorki = komorka.Value
If Not IsError(wartosckomorki) Then
If wartosckomorki = szukanawartosc Then
IleWystapienwPliku = IleWystapienwPliku + 1
End If
End If
Next komorka
Next ws
Zapis Not IsError - w "uproszczeniu" oznacza, że wartość False z wrócona z funkcji IsError to w kodzie jest Nasze True.
Można takiego "łamańca" zrobić, ale pierwszy zapis jest bardziej "czytelny".
For Each ws In ActiveWorkbook.Worksheets
ws.Activate
ActiveSheet.UsedRange.Select
For Each komorka In Selection
wartosckomorki = komorka.Value
If Not IsError(wartosckomorki) And wartosckomorki = szukanawartosc Then
IleWystapienwPliku = IleWystapienwPliku + 1
End If
Next komorka
Next ws
można i tak
For Each ws In ActiveWorkbook.Worksheets
ws.Activate
ActiveSheet.UsedRange.Select
For Each komorka In Selection
wartosckomorki = komorka.Value
If Not IsError(wartosckomorki)
And wartosckomorki = szukanawartosc Then
IleWystapienwPliku = IleWystapienwPliku + 1
End If
Next komorka
Next ws
Ponieważ masz
Dim szukanawartosc As Variant
Dim wartosckomorki As Variant
Możesz spróbować użyć CVar, czyli zostaje tak jak miałeś na początku, z jedną zmianą
For Each ws In ActiveWorkbook.Worksheets
ws.Activate
ActiveSheet.UsedRange.Select
For Each komorka In Selection
wartosckomorki = CVar(komorka.Value) ' Zmiana
If wartosckomorki = szukanawartosc Then
IleWystapienwPliku = IleWystapienwPliku + 1
End If
Next komorka
Next ws
drugi wariant
Sub ilewystapienwpliku2()
Dim ws As Worksheet
Dim komorka As Range
Dim szukanawartosc As Variant
' Dim wartosckomorki As Variant ' Do usunięcia
Dim IleWystapienwPliku As Integer
szukanawartosc = InputBox("Wprowadz szukana wartosc: ")
For Each ws In ActiveWorkbook.Worksheets
ws.Activate
ActiveSheet.UsedRange.Select
For Each komorka In Selection
' wartosckomorki = komorka.Value ' Do usunięcia
If CVar(komorka.Value) = szukanawartosc Then
IleWystapienwPliku = IleWystapienwPliku + 1
End If
Next komorka
Next ws
MsgBox IleWystapienwPliku
End Sub