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
Med kunstig intelligens skaber HP’s nye OmniBook X 14 en unik og skræddersyet brugeroplevelse målrettet dem, der ønsker høj ydeevne og intelligente funktioner
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.