---
title: "Excel+VBA – Ověření EAN"
id: "137"
type: "post"
slug: "excelvba-overeni-ean"
published_at: "2015-06-10T04:21:03+00:00"
modified_at: "2023-08-13T15:30:56+00:00"
url: "https://www.kapler.cz/excelvba-overeni-ean/"
markdown_url: "https://www.kapler.cz/excelvba-overeni-ean.md"
excerpt: "Potřebujete zjistit, jestli EAN je validní 13místný kód – tedy že má daný řetězec 13 číslic, z toho ta poslední je správný kontrolní checksum? Tahle funkce vám to vyřeší (vrací TRUE/FALSE). Function checkEAN(ean) Dim s As String Dim cs As..."
taxonomy_category:
  - "Programování"
taxonomy_post_tag:
  - "Excel"
  - "funkce"
  - "VBA"
---

# Excel+VBA – Ověření EAN

Potřebujete zjistit, jestli EAN je validní 13místný kód – tedy že má daný řetězec 13 číslic, z toho ta poslední je správný kontrolní checksum? Tahle funkce vám to vyřeší (vrací TRUE/FALSE). Function checkEAN(ean) Dim s As String Dim cs As Integer Dim i As Integer Dim digit As Integer If (TypeName(ean) = „Range“) Then s…

Uveřejněno

10. 6. 2015

Rubrika

[Programování](https://www.kapler.cz/category/programovani/)

Autor

Tomáš Kapler

Značky:

[Excel](https://www.kapler.cz/tag/excel/)
, [funkce](https://www.kapler.cz/tag/funkce/)
, [VBA](https://www.kapler.cz/tag/vba/)

Potřebujete zjistit, jestli EAN je validní 13místný kód – tedy že má daný řetězec 13 číslic, z toho ta poslední je správný kontrolní checksum? Tahle funkce vám to vyřeší (vrací TRUE/FALSE).

```
Function checkEAN(ean)

Dim s As String
Dim cs As Integer
Dim i As Integer
Dim digit As Integer

If (TypeName(ean) = "Range") Then
 s = ean.Value
ElseIf (TypeName(ean) = "String" Or TypeName(ean) = "Integer") Then
 s = ean
End If
 
If (Len(s) <> 13) Then
checkEAN = False
Return
End If
 

cs = 0 'checksum
 
For i = 1 To 12
 digit = Mid(s, i, 1) - "0" 'get the next digit from bar code text
 If i Mod 2 = 0 Then
 cs = cs + digit * 3 'multiply each bar code digit by it's weight, 1 or 3
 Else
 cs = cs + digit * 1
 End If
Next i
 
cs = (10 - (cs Mod 10)) Mod 10 'which digit must be added to cs to make it divisible by 10

checkEAN = False
checkEAN = (Mid(s, 13, 1) = cs)

End Function
```
