---
title: "Excel: Datavalidering"
type: "forum-thread"
url: "https://www.webforum.nu/amne/kontorsprogram/59375-excel-datavalidering"
topic: "Kontorsprogram"
topic_url: "https://www.webforum.nu/amne/kontorsprogram"
author: "Marcus E"
published: "2002-11-17T23:15:10.000Z"
updated: "2002-11-22T15:41:01.000Z"
replies: 4
views: 421
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/kontorsprogram/59375-excel-datavalidering"
---

# Excel: Datavalidering

## #1 — Marcus E, 2002-11-17T23:15Z

Hej!
Jag har en lista på böcker i Excel med en kolumn där man ska skriva in ISBN-nummer. Kan man på något sätt kontrollera så att de nummer som skrivs in är korrekta?

Jag tänkte att man kunde använda custom data validation (Data-\>Validation, Allow: Custom). Frågan är vad jag ska skriva som formel. Kan jag anropa en VBA-funktion som kontrollerar att den senast ändrade cellen är ett korrekt ISBN-nummer?

Tack på förhand.

Permalänk: https://www.webforum.nu/p/59375

## #2 — Danvik, 2002-11-18T08:52Z

Ifall du går till föjande webbplats: <http://www.xldennis.com/> och skriver ISBN i den avancerade sökfunktionen hittar du något som kanske kan vara dig till hjälp.
Lycka till!

Permalänk: https://www.webforum.nu/p/859747

## #3 — Marcus E, 2002-11-18T19:51Z

Tack för svaret.
Det jag var ute efter var att kontrollera om numrena är korrekta och inte att de visas på ett korrekt sätt. Den sista siffran i ISBN-numret är kontrollsiffra och det är den som ska kontrolleras. Jag har redan skrivit en VBA-funktion. Frågan är hur jag kopplar den till datavalidering.

Permalänk: https://www.webforum.nu/p/860053

## #4 — clarkbones, 2002-11-21T14:30Z

Du har ju Workbook_SheetChange event som möjliggör att du kan köra din funktion så fort ett visst område av celler ändras...

```
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Excel.Range)
if activecell.col=1 then ' Här antar vi att man matar in ISBN i Kolumn A

ValidationFunction ' Din funktion (Använd activecell's funktioner  för att läsa av vilken cell man arbetar med)
End if

End Sub
```

Permalänk: https://www.webforum.nu/p/861821

## #5 — Marcus E, 2002-11-22T15:41Z

Tack, jag kunde lösa det med hjälp av SheetChange. Fast ActiveCell var inte cellen som ändrats utan Target.

Så här blev min kod:

```
Function ValidISBN(isbn As String) As Boolean
    Dim i As Long, add As Long, sum As Long
    Dim no As Long, summod As Long
    For i = 1 To Len(isbn) - 1
        Dim ch As Byte
        ch = Asc(Mid(isbn, i, 1))
        If ch >= Asc("0") And ch <= Asc("9") Then
            add = Chr(ch) * (10 - no)
            sum = sum + add
            no = no + 1
        ElseIf ch <> Asc("-") Then
            ValidISBN = False
            Exit Function
        End If
    Next i
    
    Dim check1 As Byte, check2 As Byte
    
    summod = Int(sum / 11)
    If summod * 11 <> sum Then summod = summod + 1
    summod = summod * 11
    
    summod = summod - sum
    If summod = 10 Then
        check1 = Asc("X")
    Else
        check1 = Asc(summod)
    End If
    
    check2 = Asc(Mid(isbn, Len(isbn), 1))
    If check1 = check2 Then
        ValidISBN = True
    Else
        ValidISBN = False
    End If
End Function

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 4 Then
        If Target.Text <> "" Then
            If Not ValidISBN(Target.Text) Then
                MsgBox Target.Text & " är inte ett giltigt ISBN-nummer"
            End If
        End If
    End If
End Sub
```

Den är kanske inte så snygg, men den fungerar. :)

Permalänk: https://www.webforum.nu/p/862438

---

Tråden på webben: https://www.webforum.nu/amne/kontorsprogram/59375-excel-datavalidering
