Ćirilični stringovi u VBA
Nivo:
NIVO 2 - Među ovim prilozima se nalaze preporuke koje se uglavnom odnose na bolje
snalaženje i efikasniji rad: dodatni trikovi koji će biti svakom od pomoći i koji upućuju na prag napredne upotrebe programa.
VBA odbija da radi direktno sa ćiriličnim stringovima.
Nema druge, nego da se formira jezgro "pseudo-slova" - promenljivih
kojima ćete moći da formirate string.
Nedavno sam bio u prilici da na svojoj koži osetim problem rada sa stringovima u Unicode
ćirilici u VBA (reč je o ispisu broja slovima u Excelu, pogledajte prilog ).
Prosto, nemoguće je da promenite tastaturu, a potom da ispišete ćirilični string, jer VBE to ne prihvata.
Nije bilo druge, nego da formiram tabelu promenljivih koje će interpretirati ćirilična slova.
Za tu svrhu, poslužio sam se "programerskim lopovlukom" i preuzeo tabelu kodova Unicode
ćiriličnih slova iz sistema makroa YUConv() kolege Dragana Vračara.
Rezultat je sledeća tabela:
' velika slova, azbučni raspored
'
v_a = ChrW(1040): v_b = ChrW(1041): v_v = ChrW(1042)
v_g = ChrW(1043): v_d = ChrW(1044): v_dj = ChrW(1026)
v_e = ChrW(1045): v_zz = ChrW(1046): v_z = ChrW(1047)
v_i = ChrW(1048): v_j = ChrW(1032): v_k = ChrW(1050)
v_l = ChrW(1051): v_lj = ChrW(1033): v_m = ChrW(1052)
v_n = ChrW(1053): v_nj = ChrW(1034): v_o = ChrW(1054)
v_p = ChrW(1055): v_r = ChrW(1056): v_s = ChrW(1057)
v_t = ChrW(1058): v_cc = ChrW(1035): v_u = ChrW(1059)
v_f = ChrW(1060): v_h = ChrW(1061): v_c = ChrW(1062)
v_ch = ChrW(1063): v_dz = ChrW(1039): v_sh = ChrW(1064)
' mala slova, azbučni raspored
'
m_a = ChrW(1072): m_b = ChrW(1073): m_v = ChrW(1074)
m_g = ChrW(1075): m_d = ChrW(1076): m_dj = ChrW(1106)
m_e = ChrW(1077): m_zz = ChrW(1078): m_z = ChrW(1079)
m_i = ChrW(1080): m_j = ChrW(1112): m_k = ChrW(1082)
m_l = ChrW(1083): m_lj = ChrW(1113): m_m = ChrW(1084)
m_n = ChrW(1085): m_nj = ChrW(1114): m_o = ChrW(1086)
m_p = ChrW(1087): m_r = ChrW(1088): m_s = ChrW(1089)
m_t = ChrW(1090): m_cc = ChrW(1115): m_u = ChrW(1091)
m_f = ChrW(1092): m_h = ChrW(1093): m_c = ChrW(1094)
m_ch = ChrW(1095): m_dz = ChrW(1119): m_sh = ChrW(1096)
Ovo jezgro je već primenjeno u makrou SlovimaC(broj) koji možete naći u Download zoni
Praktikuma . Ukratko, primena ovoga je jednostavna:
ako treba kroz VBA modul negde u dokumentu ispisati string Praktikum ćirilicom,
formirajte ga ovako:
txtPrakC = v_p & m_r & m_a & m_k & m_t &
m_i & m_k & m_u & m_m
Jeste, malo je rogobatno, ali je konzistentno - i teško da ima drugog izbora.
U Excelu ćete string iz VBA modula ispisati ovako:
Activesheet.Range("A1").Value = txtPrakC
a u Wordu:
Selection.TypeText Text:=txtPrakC
i tako dalje...
UPOZORENJE: možete skratiti stringove na dva (tri) znaka, ali
bolje nemojte: ako skinete donju crtu, "malo ćirilično e" će se pretvoriti u VBA
klauzulu Me koja se odnosi na aktuelni objekat modula.
|