Jeg har lavet følgende script: For a = 5 To 123 If Cells(a, 16) > Cells(a, 18) Then Cells(a, 19) = "0" Else Cells(a, 19) = Cells(a, 19) + 1 End If ' ' Hvis kolonne 26 (25) er 1 (rengøres), sættes aktivitet lig med null ' If Cells(a, 26) = 1 Then Cells(a, 19) = "0" End If Next a
Nu er problemet, at nogle af de celle som jeg beregner på til tide indeholder værdien #VALUE!
Fejlen opstår pga. der er nogle bagvedliggende data, som til tider kan have et forkert indhold. Når en celle indeholder #VALUE stopper scriptet uhensigtsmæssigt.
Jeg vil gerne have fundet en løsning, så scriptet tager højde for at en celle kan have en forkert værdi, så skal den bare sætte værdien a = 0
Det ser du, når du kører din kode crasher. Der kommer en dialog boks op der f.eks. siger "Run-time error '13': Type Mismatch. Fejlmummeret er så 13.
IsNumeric vil nok kunne bruges, men du sætter a = "0", hvilket indikerer, at dine tal står som string typer. Det gør så, at IsNumeric vil være ulogisk.
If IsNumeric(Cells(a, 16)) = True And IsNumeric(Cells(a, 18)) = True Then If Cells(a, 16) > Cells(a, 18) Then Cells(a, 19) = "0" Else Cells(a, 19) = Cells(a, 19) + 1 End If Else Cells(a, 19) = "Hvad det nu skal være" End If
For a = 5 To 123 If IsNumeric(Cells(a, 16)) = True And IsNumeric(Cells(a, 18)) = True Then If Cells(a, 16) > Cells(a, 18) Then Cells(a, 19) = 0 Else Cells(a, 19) = Cells(a, 19) + 1 End If Else Cells(a, 19) = 0 End If ' ' Hvis kolonne 26 (25) er 1 (rengøres), sættes aktivitet lig med null ' If Cells(a, 26) = 1 Then Cells(a, 19) = 0 End If Next a
Men forstår ikke helt hvorfor du vil have a til at være 0? så vil den da bare køre i ring? :-)
Når jeg implementerer det du skriver, kommer den med en compile error: "Next without For". Det er på den sidste "Next a" fejlen kommer.
Det du skriver med 0 - hvad tænker du lige på? Mit udgagspunkt er rigtigt (testet) og giver det korrekte resultat. Det som det skal bruges til, er at se på, om der har været aktivitet i et rum ved hjælp af en rumføler. Hvis der har været aktivitet skal der lægges 1 til.
Sub optaeldage() ' ' Tager kolonne U og lægger 1 til (U = U + T) ' Sheets("Punkter").Select Range("A1").Select
For a = 5 To 123
' If IsNumeric(Cells(a, 16)) = True Then ' If Cells(a, 16) > Cells(a, 18) Then ' Cells(a, 19) = Cells(a, 19) + 1 ' Else ' Cells(a, 19) = "0" ' End If ' Else ' Cells(a, 19) = "0"
If IsNumeric(Cells(a, 16)) = True And IsNumeric(Cells(a, 18)) = True Then
If Cells(a, 16) > Cells(a, 18) Then Cells(a, 19) = 0 Else Cells(a, 19) = Cells(a, 19) + 1 End If Else Cells(a, 19) = 0 End If '<--------- ændret den blev aldrig lukket ' ' Hvis kolonne 26 (25) er 1 (rengøres), sættes aktivitet lig med null ' If Cells(a, 26) = 1 Then Cells(a, 19) = "0" End If Next a End Sub
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.