LinkBack Thread Tools Search this Thread Display Modes
Prev Previous Post   Next Post Next
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 94
Default VBA Code for converting Type-E UPC to Type-A (barcodes)

I need some expert help with a VBA code. In excel I would like to have the
user input a TYPE-E UPC into B1 and after clicking a CmdBttn, have the
following code input the result of a Type-A UPC into B5 & the skip digit into
B7.

Function UPCE2A(UPCE As String) As String

' check the validity of the input data
If Not IsNumeric(UPCE) Then
MsgBox ("UPC Codes must contain Numeric Data Only!")
Exit Sub
End If

Select Case Len(UPCE)
Case 6 ' do nothing everything is OK
UPCEString$ = UPCE
Case 7
UPCEString$ = Left$(UPCE, 6)
' truncate last digit - assume that it is the UPCE check digit
Case 8
UPCEString$ = Mid$(UPCE, 2, 6)
' truncate first and last digit
' assume that the first digit is the number system digit
' and the last digit is the UPCE check digit
Case Else
MsgBox "wrong size UPCE message"
Exit Sub
End Select

' break up the string into its 6 individual digits
Digit1$ = Mid$(UPCEString$, 1, 1)
Digit2$ = Mid$(UPCEString$, 2, 1)
Digit3$ = Mid$(UPCEString$, 3, 1)
Digit4$ = Mid$(UPCEString$, 4, 1)
Digit5$ = Mid$(UPCEString$, 5, 1)
Digit6$ = Mid$(UPCEString$, 6, 1)

Select Case Digit6$ ' expand the 6 digit UPCE number to a 12 digit UPCA
number
Case "0", "1", "2"
ManufacturerNumber$ = Digit1$ + Digit2$ + Digit6$ + "00"
ItemNumber$ = "00" + Digit3$ + Digit4$ + Digit5$
Case "3"
ManufacturerNumber$ = Digit1$ + Digit2$ + Digit3$ + "00"
ItemNumber$ = "000" + Digit4$ + Digit5$ ' original code
was in error
Case "4"
ManufacturerNumber$ = Digit1$ + Digit2$ + Digit3$ + Digit4$ + "0"
ItemNumber$ = "0000" + Digit5$ ' original code was in
error
Case Else
ManufacturerNumber$ = Digit1$ + Digit2$ + Digit3$ + Digit4$ + Digit5$
ItemNumber$ = "0000" + Digit6$
End Select

' put the number system digit "0" together with the manufacturer code and
Item number
Msg$ = "0" + ManufacturerNumber$ + ItemNumber$

' calculate the check digit - note UPCE and UPCA check digits are the same
Check% = 0 ' initialize the check digit value
For X% = 1 To 11
Test$ = Mid$(Msg$, X%, 1)
Select Case X%
Case 1, 3, 5, 7, 9, 11
Check% = Check% + Val(Test$) * 7 ' odd position digits
multiplied by 7
Case 2, 4, 6, 8, 10
Check% = Check% + Val(Test$) * 9 ' even position digits
multiplied by 9
End Select
Next

Check% = (Check% Mod 10) + 48 ' convert value to ASCII character value
CheckChar$ = Chr$(Check%) ' check character

UPCE2A = Msg$ + CheckChar$ ' put the pieces together and return
End Function

VBA Source: Differences between Type A and Type E UPCs at
http://www.taltech.com/TALtech_web/r...symbol.htm#UPC

--
Thanks, Kevin
 
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
VBA Import Convert Data Type from Type 1 to Type 2 u473 Excel Programming 3 October 21st 08 08:22 PM
Type Mismatch: array or user defined type expected ExcelMonkey Excel Programming 4 July 6th 06 03:40 PM
Type mismatch using rnge as Range with Type 8 Input Box STEVE BELL Excel Programming 11 December 3rd 05 05:02 AM
Help: Compile error: type mismatch: array or user defined type expected lvcha.gouqizi Excel Programming 1 October 31st 05 08:20 PM
Converting text data type to numeric Marilyn Excel Programming 0 October 14th 04 04:27 PM


All times are GMT +1. The time now is 12:33 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"