webForumDet fria alternativet

Excel - SelectionChange - fel vid "#Saknas!"

Kontorsprogram

5 svar · 1 167 visningar · startad av solbulle

Medlem sedan mars 20015 287 inlägg
Frågan#1

Ok, nytt problem...

Har ett ark där jag i en cell fyller i ett artikelnummer o mha "LETARAD"

I en annan cell skrivs då artikelnamnet ut.

=OM(A12<>0;OM(ÄRTEXT(LETARAD(A12;PRISER!$B$8:$C$212;2;FALSKT));LETARAD(A12;PRISER!$B$8:$C$212;2;FALSKT);LETARAD(RENSA(A12);PRISER!$B$8:$C$212;2;FALSKT));"")

Men om artikelnummret saknas/är felaktigt får jag upp: #Saknas!
Det gör mig inget iofs MEN... om jag sen markerar denns cell där det står #Saknas! körs min VBA-kod och jag får ett felmeddelande som lyder:

Körfel nr 13
Inkompatibla typer

Detta pekar på en sub:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

[b]If ActiveCell = Range("i3") Then[/b]

'osv

Alltså pga, vad jag förstår, just för att det är ett knasvärde i den cellen. (Alltså den som är aktiv just för stunden.)
Vet att jag råkat ut för liknande grejer tidigare där just dylika "värden" ställt till det för mig, men det hjälper mig inte nu.

Så frågan lyder, kan jag få bort felmeddelandet från början, eller kan jag åtgärda min SelectionChange?

Medlem sedan mars 20015 287 inlägg
#2

Hm...

    On Error Resume Next
    
If ActiveCell = Range("i3") Then
    If Err.Number = 13 Then
        Err.Clear
    End If
Medlem sedan mars 20015 287 inlägg
#3

Ska man kanske peta in ett:

    On Error GoTo 0

där någonstans sen för att "sätta på" felchecken igen?

Eller är detta totalfusk från start kanske? :)

Medlem sedan mars 20015 287 inlägg
#4

Så här blev det, inte helt optimalt eftersom man får bara felmeddelandet om man markerar raden, vilket iofs är väldigt troligt.

    On Error Resume Next
    
If ActiveCell = Range("i3") Then
    If Err.Number = 13 Then
        Err.Clear
        artnr = Range("A" & Target.Row).Value
        Range("A" & Target.Row).Value = ""
        msg = "Artikel med art.nr " & artnr & " saknas!" & vbCrLf
        msg = msg & "Kontrollera artikelnummret samt att listan är uppdaterad."
        MsgBox msg, vbExclamation, "Artikelnummerfel."
    End If
    
    On Error GoTo 0
Medlem sedan juni 200290 inlägg
#5

Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Set Target = Me.Range("I3")

If Not Intersect(ActiveCell, Target) Is Nothing And Val(Target.Value) Then
MsgBox "Koden kan köras!"
End If

End Sub

Medlem sedan mars 20015 287 inlägg
#6

Jo, det där fungerade givetvis bra. Tackar.

261 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)