Avatar billede hjald8 Nybegynder
17. november 2007 - 10:49 Der er 4 kommentarer og
2 løsninger

If-sætning i forhold til denne value: #VÆRDI!

Jeg skal lave et gennemløb af nogle ark for at finde og rette fejl.

Jeg kan i de fleste situationer klare mig fint med nogle IF-sætninger. som fx.
IF Sheets("Ark1").Range("A1").Value <> 0 then ........

Men hvordan spørger jeg på om en celle har denne 'værdi': #VÆRDI!
For den sags skyld også 'værdien': #REFERENCE
Avatar billede excelent Ekspert
17. november 2007 - 11:26 #1
Sub xFind()
On Error Resume Next
For Each sh In ActiveWorkbook.Sheets
sh.Activate
Selection.SpecialCells(xlCellTypeFormulas, 16).Select
For Each c In Selection
If IsError(c.Value) Then adresse = adresse & vbLf & ActiveSheet.Name & c.Address
Next
Next
MsgBox ("") & adresse
End Sub
Avatar billede hjald8 Nybegynder
17. november 2007 - 14:04 #2
Tak Excelent. Den er super.

Jeg har ikke defineret det godt nok. Jeg ved godt, hvor fejlene kan opstå (ca. 8-9 steder), i de respektive 300 Excelfiler.

Tanken var at checke de celler, hvor jeg ved at der givetvis er fejl og samtidig rette dem. som fx:

Sub FindFejl2()
Sheets("Ark1").Select
If IsError(Range("H905").Value) Then
MsgBox "Der er fejl i celle"
Else
MsgBox "Der er ikke fejl"
End If
End Sub

Det var funktionen 'IsError(c.value)' som gav resultat. Sætningen 'SpecialCells(xlcelltypeFormulas,16) - hvad betyder det reelt?

Men jeg vil benytte dit kodeforslag til en afsluttende kontrol. For den kører jo rimelig stærkt når man begrænser søgningen til relevante ark/områder. Dvs den kan sikre at der ikke er nye (ukendte) fejl af denne type.

Så det er alletiders. Læg et svar.

Nb. Det lykkes ikke med ændring af decimal-angivelse i udvalgt område. se evt. http://www.eksperten.dk/spm/806109
Avatar billede hjald8 Nybegynder
17. november 2007 - 19:35 #3
Det lykkes mig ikke at undgå at få dialogboksen frem (altså når der ikke er fejl):

.....
On Error Resume Next
For Each sh In ActiveWorkbook.Sheets
sh.Activate
Selection.SpecialCells(xlCellTypeFormulas, 16).Select
For Each c In Selection
If IsError(c.Value) Then adresse = adresse & vbLf & ActiveSheet.Name & c.Address
Next
Next
MsgBox ("") & adresse
End Sub

Hvordan gør jeg det?
Avatar billede excelent Ekspert
17. november 2007 - 19:45 #4
SpecialCells(xlcelltypeFormulas,16) markerer alle celler med fejl
min kode gennemløber derefter disse markerede celler og kun dem
Men koden som sådan retter ikke evt. fejl, den finder dem kun.

du kan også markere fejlceller uden VBA sådan :
tast F5 og vælg Speciel
marker Formler og fjern flueben i alle undtagen ved Fejl
Ok
så markeres alle evt. fejlceller.
------------------
Undgå dialogbox ved at tilføje følgende i linien med MsgBox
if adresse<>"" then MsgBox ("") & adresse
------------------
m.h.t. decimalsepperator : ja det ser desværre ud til
at det kun virker på hele projektmappen og ikke et område.
har ikke kunnet finde en løsning til dette.
Avatar billede hjald8 Nybegynder
18. november 2007 - 12:25 #5
Tusind tak.

Undgå dialogboks - jeg havde mellemrum mellem "" - sådan kan det gå. Tak.

Decimalseperator. Løsningen blev at jeg lavede en omfattende kode for hver enkelt celle som skulle være med "." Først kopiering til tekst, så højre/venstre/midt-funktioner afhængig af længden i cellen osv. Det virker - blot lidt besværligt.

Læg et svar.
Avatar billede excelent Ekspert
18. november 2007 - 13:40 #6
ok
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester