Centar za edukaciju-BiH



#1 17.01.2021 16:20
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Postovi:4,812


Predmet:VBA zamjena slova
PreuzmiIzvorni kôd (Text):
  1. Dim i As Integer
  2.     Dim zadnjiRed As Single
  3.    
  4.    
  5.     zadnjiRed = 20
  6.    
  7.     AccChars = Array("ÄZ", "Äd", "Ć", "9Ç", "ć", "Ä‘", "9Ý")
  8.     RegChars = Array(" ", "", "", "Å¡", "", "", "Ž")
  9.     Dim rng As Range
  10.    
  11.     For Each cell In Range("H1:H" & zadnjiRed)
  12.         If cell <> "" Then
  13.             For i = 0 To UBound(AccChars)
  14.                 cell.Value = Replace(cell.Value, AccChars(i), RegChars(i))
  15.                
  16.             Next
  17.         End If
  18.     Next cell

meni ovo ne radi.
Dali se netko bavio problemom kada ucitamo file u excel pa moramo zamijeniti neke znakove u nasa slova?
zivot je moja domovina.
↑  ↓

#2 17.01.2021 21:17
Gjoreski Van mreze
Administrator
Registrovan od:02.02.2009
Postovi:1,854


Predmet:Re: VBA zamjena slova
eve ti edna moja funkcuja mozda ke ti pomognit

PreuzmiIzvorni kôd (Visual Basic):
  1. Public Function fnCZtoLAT(Naziv As String) As String
  2.     fnCZtoLAT = Naziv
  3.     fnCZtoLAT = Replace(fnCZtoLAT, "Ì", "E")
  4.     fnCZtoLAT = Replace(fnCZtoLAT, "Å ", "S")
  5.     fnCZtoLAT = Replace(fnCZtoLAT, "È", "C")
  6.     fnCZtoLAT = Replace(fnCZtoLAT, "Ø", "R")
  7.     fnCZtoLAT = Replace(fnCZtoLAT, "Ž", "Z")
  8.     fnCZtoLAT = Replace(fnCZtoLAT, "Ý", "Y")
  9.     fnCZtoLAT = Replace(fnCZtoLAT, "Á", "A")
  10.     fnCZtoLAT = Replace(fnCZtoLAT, "Í", "I")
  11.     fnCZtoLAT = Replace(fnCZtoLAT, "É", "E")
  12.     fnCZtoLAT = Replace(fnCZtoLAT, "Ú", "U")
  13.     fnCZtoLAT = Replace(fnCZtoLAT, "Ù", "U")
  14.     fnCZtoLAT = Replace(fnCZtoLAT, "ì", "e")
  15.     fnCZtoLAT = Replace(fnCZtoLAT, "Å¡", "s")
  16.     fnCZtoLAT = Replace(fnCZtoLAT, "è", "c")
  17.     fnCZtoLAT = Replace(fnCZtoLAT, "ø", "r")
  18.     fnCZtoLAT = Replace(fnCZtoLAT, "ž", "z")
  19.     fnCZtoLAT = Replace(fnCZtoLAT, "ý", "y")
  20.     fnCZtoLAT = Replace(fnCZtoLAT, "á", "a")
  21.     fnCZtoLAT = Replace(fnCZtoLAT, "í", "i")
  22.     fnCZtoLAT = Replace(fnCZtoLAT, "é", "e")
  23.     fnCZtoLAT = Replace(fnCZtoLAT, "ú", "u")
  24.     fnCZtoLAT = Replace(fnCZtoLAT, "ù", "u")
  25.     fnCZtoLAT = Replace(fnCZtoLAT, "æ", "c")
  26.     fnCZtoLAT = Replace(fnCZtoLAT, "ü", "u")
  27.  
  28. End Function
↑  ↓

#3 18.01.2021 12:00
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Postovi:4,812


Predmet:Re: VBA zamjena slova
Hvala Gjoreski, probat cu prilagoditi za svoje potrebe.
Problem je kod mene sto za 1 slovo daje 2 znaka :
primjer:

ÄŚ = Č

evo otkrio gdje je greska, znaci trebalo je provjeriti kolone 3,5,6.
Ja sam provjeravao kolone 5 i 6, a 3 sam zaboravio tako da mi se u 3 koloni javljali neprevedeni znakovi.
Cudno mi je bilo kada sam uneo naredbu

if Instr(naziv,"ÄŚ")>0 then stop

kod se nije zaustavio na tom mjestu tako da sam isao istrazivati i otkrio aljkavost u kodu.

upotrijebio sam Gjoreskovu funkciju koja odlicno obavlja posao.

PreuzmiIzvorni kôd (Text):
  1. Public Function fnCZtoLAT(Naziv As String) As String
  2.     fnCZtoLAT = Naziv
  3.    
  4.     fnCZtoLAT = Replace(fnCZtoLAT, "ÄZ", "C") '
  5.     fnCZtoLAT = Replace(fnCZtoLAT, "9 ", "S") 'Å 
  6.     fnCZtoLAT = Replace(fnCZtoLAT, "Ć", "C") '
  7.     fnCZtoLAT = Replace(fnCZtoLAT, "9Ç", "s") 'Å¡
  8.     fnCZtoLAT = Replace(fnCZtoLAT, "ć", "c") '
  9.     fnCZtoLAT = Replace(fnCZtoLAT, "Äd", "c") '
  10.     fnCZtoLAT = Replace(fnCZtoLAT, "Ä‘", "d") '
  11.     fnCZtoLAT = Replace(fnCZtoLAT, "9>", "z") 'ž
  12.     fnCZtoLAT = Replace(fnCZtoLAT, "9Ý", "Z") 'Ž
  13. End Function

pozivam ju na sljedeci nacin

nekiString=fnCZtoLat(nekiString)

kada nadete vremena mozete li mi reci kako upotrijebiti ovo:

FranceskoFoti je opisao kako prevesti znakove i rijesiti BOOM, usporeduje to sa Notepadom++
pa ako znate samo recite kako to upotrijebiti u VBA excelu

<franceskoFoti - Solving the Unicode, UTF8, UTF16 and Text Files conundrum in VBA>
zivot je moja domovina.
Ovaj post je ureden 1 puta. Posljednja izmjena 18.01.2021 12:37 od strane Avko. ↑  ↓

#4 19.01.2021 18:22
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,644


Predmet:Re: VBA zamjena slova
eevo moja funkcija.
u str1 upisite znake koje trazite u stringu a u str2 na istoj poziciji znak u koji se mijenja.
PreuzmiIzvorni kôd (Visual Basic):
  1. Public Function fnCZtoLAT(Naziv As String) As String
  2. '******************************************************
  3. 'Autor:zxz
  4. 'datum: 19.01.2021
  5. 'mijenja karaktere iz str1 u adekvatne po poziciji u str2
  6. 'u string kao ulazni parametar Naziv
  7. '********************************************************
  8. Const str1 = "IÅ EOŽÝÁÍÉÚUiÅ¡eožýáíéúua "
  9. Const str2 = "ESCRZYAIEUUescrzyaieuucu"
  10. Dim duz As Integer, i As Integer, poz As Integer, n As Integer
  11. Dim car1 As String * 1, car2 As String * 1, str As String
  12.  
  13. duz = Len(str1)
  14. str = Naziv
  15. n = 1
  16.   For i = 1 To duz
  17.   car1 = Mid(str1, i, 1)
  18.   car2 = Mid(str2, i, 1)
  19.   poz = InStr(n, str, car1)
  20.     If poz > 0 Then
  21.     str = Replace(str, car1, car2)
  22.     End If
  23.   Next i
  24.  fnCZtoLAT = str
  25. End Function

Podrska samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

Stranice (1):1


Sva vremena su GMT +01:00. Trenutno vrijeme: 8: 45 pm.