webForumDet fria alternativet

Excel - SelectionChange - fel vid "#Saknas!"

5 svar · 1 165 visningar · startad av solbulle

solbulleMedlem sedan mars 20015 287 inlägg
#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?

solbulleMedlem 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
solbulleMedlem 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? :)

solbulleMedlem 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
XL-DennisMedlem 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

solbulleMedlem sedan mars 20015 287 inlägg
#6

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

133 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)