با تشکر از "کارگاه" من اصلاحاتی در قسمت تبديل اعداد انجام دادم که کد اصلاح شده به اين صورت است:
Sub convert()
'Simple VEGAF/SAHER and compatibles Text Converter
'for ms excel
'Code and mapping by :
'Karagah (pt_karagah at yahoo dot com)
'Code Revision by:
'Sir Mojtaba (mahsuli at civil.sharif.edu)
'you may use it freely as long as this notice
'remains intact. ENjoy Oldies!
Dim map(255) As Integer
Dim myString As String
Dim myChar As String * 1
For i = 0 To 255
map(i) = i
Next
map(128) = 48: map(129) = 49: map(130) = 50: map(131) = 51:
map(132) = 52: map(133) = 53: map(134) = 54: map(135) = 55:
map(136) = 56: map(137) = 57: map(138) = 161: map(139) = 45:
map(140) = 191: map(141) = 194: map(142) = 198: map(143) = 193:
map(144) = 199: map(145) = 199: map(146) = 200: map(147) = 200:
map(148) = 129: map(149) = 129: map(150) = 202: map(151) = 202:
map(152) = 203: map(153) = 203: map(154) = 204: map(155) = 204:
map(156) = 141: map(157) = 141: map(158) = 205: map(159) = 205:
map(160) = 206: map(161) = 206: map(162) = 207: map(163) = 208:
map(164) = 209: map(165) = 210: map(166) = 142: map(167) = 211:
map(168) = 211: map(169) = 212: map(170) = 212: map(171) = 213:
map(172) = 213: map(173) = 214: map(174) = 214: map(175) = 216:
map(224) = 217: map(225) = 218: map(226) = 218: map(227) = 218:
map(228) = 218: map(229) = 219: map(230) = 219: map(231) = 219:
map(232) = 219: map(233) = 221: map(234) = 221: map(235) = 222:
map(236) = 222: map(237) = 223: map(238) = 223: map(239) = 144:
map(240) = 144: map(241) = 225: map(243) = 225: map(244) = 227:
map(245) = 227: map(246) = 228: map(247) = 228: map(248) = 230:
map(249) = 229: map(250) = 229: map(251) = 229: map(252) = 237:
map(253) = 237: map(254) = 237:
For Each c In Selection
If c.Value <> "" Then
myString = c.Value
temp = ""
endi = Len(myString)
h:
For i = endi To 1 Step -1
myChar = Chr(map(Asc(Mid(myString, i, 1))))
If (myChar = "0") Or (myChar = "1") Or (myChar = "2") Or (myChar = "3") Or (myChar = "4") Or (myChar = "5") Or (myChar = "6") Or (myChar = "7") Or (myChar = "8") Or (myChar = "9") Then
starti = i
flag = True
Do
i = i - 1
If i > 0 Then myChar = Chr(map(Asc(Mid(myString, i, 1))))
Loop Until (i < 1) Or ((myChar <> "0") And (myChar <> "1") And (myChar <> "2") And (myChar <> "3") And (myChar <> "4") And (myChar <> "5") And (myChar <> "6") And (myChar <> "7") And (myChar <> "8") And (myChar <> "9"))
endi = i + 1
Exit For
End If
temp = temp + myChar
Next
If flag Then
For i = endi To starti Step 1
myChar = Chr(map(Asc(Mid(myString, i, 1))))
temp = temp + myChar
Next
endi = endi - 1
flag = False
GoTo h:
End If
c.FormulaR1C1 = temp
End If
Next
End Sub