Príklady použitia funkcií VBA. Vstavané funkcie Oracle Vba excel funkcie pre prácu s reťazcami

  • A.S.C. () - táto funkcia vám umožňuje vrátiť číselný kód pre odovzdaný znak. Napríklad ASC("D") vráti 68. Táto funkcia je užitočná na určenie nasledujúceho alebo predchádzajúceho písmena. Zvyčajne sa používa v spojení s funkciou Chr(), ktorý vykoná inverznú operáciu - vráti znak podľa jeho prenášaného číselného kódu Varianty tejto funkcie sú AscB() A AscW():
    • AscB () - vráti iba prvý bajt číselného kódu znaku.
    • AscW () - vráti kód pre znak v kódovaní Unicode
  • Chr () - vráti znak podľa jeho číselného kódu. Dá sa použiť v spojení s funkciou Asc(), ale najčastejšie sa používa, keď potrebujete vytlačiť servisný znak (napríklad úvodzovky - "), pretože Do kódu VBA nemôžete len zadávať úvodzovky (treba dať dvojnásobok). Toto je funkcia, ktorú bežne používam.

    Dim sWord As String sWord = Chr(34) & "Slovo v úvodzovkách" & Chr(34)

    Pre túto funkciu existujú možnosti - ChrB() A ChrW(). Pracujte podobne ako rovnaké možnosti pre funkciu Asc().

  • InStr () A InStrRev () - jedna z najpopulárnejších funkcií. Umožňuje zistiť znak alebo postupnosť znakov v tele reťazcovej premennej a vrátiť ich pozíciu. Ak sa sekvencia nenájde, vráti sa 0.

    Dim sStr As String sStr = "w" If InStr(1, "Ahoj svet!", sStr, vbTextCompare) > 0 Potom MsgBox "Hľadané slovo je prítomné!" Else MsgBox "Hľadané slovo chýba!" Koniec Ak

    Rozdiel medzi funkciami je v tom, že InStr() hľadá zadané slovo od začiatku riadku a InStrRev() od konca riadku

  • Vľavo () , Správny () , Stred () - možnosť prevziať počet znakov, ktoré určíte, z existujúcej reťazcovej premennej vľavo, vpravo alebo uprostred.
    Dim sStr As String sStr = "Ahoj, svet!" MsgBox Mid(sStr, 1, 5)

    Dim sStr As String sStr = "Ahoj, svet!" MsgBox Mid(sStr, 1, 5)

  • Len () - schopnosť získať počet znakov v riadku. Často sa používa so slučkami, operáciami nahradenia atď.
  • LCase () A UCase () - previesť reťazec na malé a veľké písmená. Často sa používa na prípravu hodnoty na porovnanie, keď veľkosť písmen nie je pri porovnávaní dôležitá (priezvisko, názvy firiem, miest a pod.).
  • LSet () A RSet () - schopnosť naplniť jednu premennú symbolmi inej bez zmeny jej dĺžky (vľavo a vpravo). Nadbytočné znaky sú orezané a chýbajúce znaky sú nahradené medzerami.
  • LTrim () , RTrim () , Orezať () - schopnosť odstrániť medzery vľavo, vpravo alebo vľavo a vpravo.
  • Vymeňte () - schopnosť nahradiť jednu sekvenciu znakov v reťazci inou.
    Dim sStr As String sStr = "Ahoj, svet!" MsgBox Nahradiť (sStr, "Ahoj" , "Bay" )

    Dim sStr As String sStr = "Ahoj, svet!" MsgBox Replace(sStr, "Ahoj", "Bay")

  • Priestor () - získajte reťazec z počtu medzier, ktoré určíte;
    Ďalšou podobnou funkciou je Spc () , ktorý sa používa na formátovanie výstupu konzoly. Vynásobí medzery na základe šírky príkazového riadku.
  • StrComp () - schopnosť porovnávať dve struny.
  • StrConv () - schopnosť konvertovať reťazec (do Unicode a späť, na veľké a malé písmená, veľké prvé písmeno slov atď.):
    Dim sStr As String sStr = "Ahoj, svet!" MsgBox StrConv("Ahoj, svet!" , vbUpperCase)

    Dim sStr As String sStr = "Ahoj, svet!" MsgBox StrConv("Ahoj, svet!", vbUpperCase)

    Ako druhý parameter parametra možno použiť konštanty:

    • vbUpperCase: Skonvertuje všetky textové znaky na VEĽKÉ PÍSMENO
    • vbLowerCase: Skonvertuje všetky textové znaky na malé písmená
    • vbProperCase: Skonvertuje prvý znak každého slova na veľké písmená
    • *vbWide: Konvertuje reťazcové znaky z jednobajtových na dvojbajtové
    • *vbNarrow: Konvertuje reťazcové znaky z dvojbajtových na jednobajtové
    • **vbKatakana: Konvertuje znaky Hiragana na znaky Katakana
    • **vbHiragana: Prevedie znaky Katakana na znaky Hiragana
    • ***vbUnicode: Skonvertuje reťazec na Unicode pomocou predvolenej kódovej stránky systému
    • ***vbFromUnicode: Skonvertuje reťazec Unicode na predvolenú kódovú stránku systému
    • * platí pre lokalizáciu Ďalekého východu
      ** Platí len pre Japonsko
      *** nie je podporované v operačných systémoch Macintosh

  • StrReverse () - „obrátiť“ reťazec umiestnením jeho znakov v opačnom poradí. Funkcia funguje len od Excelu 2000 a vyššie. Príklad použitia funkcie, ako aj iných spôsobov otáčania slova, nájdete v tomto článku: Ako otočiť slovo?
  • Tab () je ďalšia funkcia, ktorá sa používa na formátovanie výstupu konzoly. Reprodukuje znaky tabulátora v zadanom čísle. Ak nie je zadané žiadne množstvo, jednoducho vložíte znak tabulátora. Konštantu môžete použiť aj na vloženie znaku tabulátora do hodnoty reťazca vbTab.
  • Reťazec () - umožňuje získať reťazec zadaného počtu znakov (ktoré opäť špecifikujete vy). Zvyčajne sa používa na formátovanie výstupu v spojení s funkciou Len().

(http://www.cyberforum.ru/vba/thread638743.html)

možnosť 1

strW= (="KOROTEEV DMITRY VLADIMIROVICH") strB=Nahradiť(Nahradiť(strW, Chr(61), ""), Chr(34), "")

Možnosť

Môžete tiež použiť bajtové pole:

Sub n() Dim Mass() As Byte, n As Long, Zam As String, TXT As String TXT = "="" DMITRY VLADIMIROVICH KOROTEEV" Mass = StrConv(TXT, vbFromUnicode) For n = 0 To UBound(Mass) If hmotnosť (n)<>34 a hmotnosť (n)<>61 Then Zam = Zam + Chr$(Mass(n)) Next MsgBox Zam End Sub

Možnosť

Alebo filtrovanie so stredom:

Sub nn() Dim n As Long, TXT As String, L As String, Zam As String TXT = "="" DMITRY VLADIMIROVICH KOROTEEV" For n = 1 To Len(TXT) L = Mid$(TXT, n, 1) Ak L<>"""" A L<>"=" Potom Zam = Zam + L Ďalší MsgBox Zam End Sub

Riadok 6 možno nahradiť husky:
Kód Visual Basic
1
Ak L ako “[!””=]” Potom Zam = Zam + L

Možnosť

Tiež prostredníctvom vyhľadávania pozícií a rekurzie:

Sub test() Dim n As Long, txt As String txt = "=""DMITRY VLADIMIROVICH KOROTEEV" txt = Change(txt, "=") txt = Change(txt, """") MsgBox txt End Sub Function Change( txt Ako reťazec, Čo ako reťazec, voliteľná Pos = 1) Dim n As Long If Pos<>0 Potom n = InStr(Poz, txt, Čo) Zmena = Stred$(txt, Poz, IIf(n - Poz.< 0, Len(txt), n - Pos)) + Change(txt, What, IIf(n = 0, 0, n + 1)) End If End Function

Môžete použiť aj regulárne výrazy, ale ja ich nepoznám.

Možnosť

Prostredníctvom vyhľadávania a rekurzie sprava doľava:

Kód Visual Basic
1 2 3 4 5 6 7 8 Zmena funkcie (txt ako reťazec, čo ako reťazec, voliteľná poloha ako dlhá) Dim n as long If Pos = 0 Then Pos = Len(txt) If Pos<>-1 Potom n = InStrRev(txt, Čo, Pos) Zmena = Zmena(txt, Čo, IIf(n = 1, -1, n - 1)) + Mid$(txt, n + 1, Pos - n) Koniec Ak End Function

Možnosť

A tiež existuje Rozdeliť A Pripojte sa

Strb = Join(Split(Split(Split(StrW, "="), ""), """"), "")

Mimo témy: Ale to je pre sadistov

Veľké a malé písmená

S ActiveDocument.Range "uppercase.Text = Ucase(.Text) "lowercase.Text = Lcase(.Text) End With

alebo StrConv() - previesť reťazec (na Unicode a späť, na veľké a malé písmená, veľké prvé písmeno slov atď.) - pozri nižšie

Reťazcové operácie

Pre dáta typu String existuje len jedna operácia - zreťazenie (zjednotenie). Napríklad výsledkom operácie zreťazenia troch hodnôt reťazca „Peter“ & » » & „Ivanovich“ bude reťazec „Peter Ivanovič“. Na operáciu zreťazenia je možné použiť aj iný operátor, napríklad: „desať“ + „tisíc“. Rozdiel medzi týmito výrazmi je v tom, že v prvom prípade môžu byť operandy hodnoty akéhokoľvek typu (jednoducho sa skonvertujú na reťazce) a v druhom prípade musia byť oba operandy typu String. Existuje veľké množstvo funkcií na prácu s reťazcami (tabuľka. Funkcie na prácu s reťazcami).

Tabuľka „Funkcie pre prácu s reťazcami“

Funkcia Popis Príklad
Len(str) Určuje dĺžku reťazca Z a=len(“Znaky”) vyplýva a=9
Vľavo (<строка>, <длина>) Výňatky z argumentácie<строка>zadaný počet znakov vľavo Left("1234string", 4) ="1234″
Správny(<строка>, <длина>) Výňatky z argumentácie<строка>zadaný počet znakov vpravo Right(" 1234string", 6) ="reťazec"
Stred(<строка>, <старт> [, <длина>]) Výňatky z argumentácie<строка>podreťazec so zadaným počtom znakov, začínajúc od pozície<старт> Mid("12345678″, 4.3) ="456"
Stred(<строка>, <старт>) Extrahuje sa podreťazec z pozície<старт>na koniec riadku Mid("12345678″, 4) ="45678"
LTrim(<строка>) Odstráni medzery na začiatku riadku LTrim("print") ="print"
RTrim (<строка>) Odstráni medzery na konci reťazca RTrim("print ") = "print"
Orezať (<строка>) Odstraňuje medzery na začiatku a na konci reťazca Trim("print") ="print"
InStr([<старт>, ] < строка1>, <строка2> [, <сравнение>]) Hľadá podreťazec v reťazci. Vráti polohu prvého výskytu reťazca<строка2>linkovať<строка1>, <старт>— pozícia, z ktorej vyhľadávanie začína. Ak je tento argument vynechaný, vyhľadávanie začne od začiatku reťazca Instr("C:Temp test.mdb", "Test")=9 Ak hľadaný reťazec nie je v zadanom reťazci, funkcia vráti 0
InStrRev([<старт>, ] <строка1>, <строка2> [, <сравнение>]) Vyhľadá podreťazec v reťazci, ale spustí vyhľadávanie na konci reťazca a vráti pozíciu posledného výskytu podreťazca. Voliteľný argument<сравнение>definuje typ porovnania medzi dvoma reťazcami
Nahradiť (<строка>, <строкаПоиск>, <строкаЗамена>) Umožňuje nahradiť jeden podreťazec v reťazci iným. Táto funkcia hľadá všetky výskyty argumentu<строкаПоиск>v hádke<строка>a nahrádza ich<строкаЗамена>

Na porovnanie hodnôt reťazcov môžete použiť bežné numerické porovnávacie operátory, pretože pri porovnávaní znakov sa porovnávajú ich binárne kódy. Operátor Like sa používa aj na porovnávanie hodnôt reťazcov, čo vám umožňuje zistiť nepresnú zhodu, napríklad výraz „Input“ Like „Input*“ sa vyhodnotí ako True, pretože porovnávaný reťazec začína slovom „Input“. Znak hviezdička (*) v reťazci nahrádza ľubovoľný počet znakov. Ďalšie znaky, ktoré sú spracované operátorom Like v porovnávanom reťazci:

  • ? – ľubovoľný znak (jeden);
  • # – jedna číslica (0–9);
  • [<список>] – znak, ktorý sa zhoduje s jedným zo znakov v zozname;
  • [!<список>] – znak, ktorý sa nezhoduje so žiadnym znakom v zozname.
  • A.S.C.() - táto funkcia vám umožňuje vrátiť číselný kód pre odovzdaný znak. Napríklad ASC("D") vráti 68. Táto funkcia je užitočná na určenie nasledujúceho alebo predchádzajúceho písmena. Zvyčajne sa používa v spojení s funkciou Chr(), ktorý vykoná inverznú operáciu - vráti znak podľa jeho prenášaného číselného kódu Varianty tejto funkcie sú AscB() A AscW():
    • AscB() - vráti iba prvý bajt číselného kódu znaku.
    • AscW() - vráti kód pre znak v kódovaní Unicode
  • Chr() - vráti znak podľa jeho číselného kódu. Dá sa použiť v spojení s funkciou Asc(), ale najčastejšie sa používa, keď potrebujete vytlačiť servisný znak (napríklad úvodzovky - "), pretože Do kódu VBA nemôžete len zadávať úvodzovky (treba dať dvojnásobok). Toto je funkcia, ktorú bežne používam.

    Dim sWord As String sWord = Chr(34) & "Slovo v úvodzovkách" & Chr(34)

    Pre túto funkciu existujú možnosti - ChrB() A ChrW(). Pracujte podobne ako rovnaké možnosti pre funkciu Asc().

  • InStr() A InStrRev() - jedna z najpopulárnejších funkcií. Umožňuje zistiť znak alebo postupnosť znakov v tele reťazcovej premennej a vrátiť ich pozíciu. Ak sa sekvencia nenájde, vráti sa 0.

    Dim sStr As String sStr = "w" If InStr(1, "Ahoj svet!", sStr, vbTextCompare) > 0 Potom MsgBox "Hľadané slovo je prítomné!" Else MsgBox "Hľadané slovo chýba!" Koniec Ak

    Rozdiel medzi funkciami je v tom, že InStr() hľadá zadané slovo od začiatku riadku a InStrRev() od konca riadku

  • Vľavo() , Správny() , Stred() - možnosť prevziať počet znakov, ktoré určíte, z existujúcej reťazcovej premennej vľavo, vpravo alebo uprostred.

    Dim sStr As String sStr = "Ahoj, svet!" MsgBox Mid(sStr, 1, 5)

  • Len() - schopnosť získať počet znakov v riadku. Často sa používa so slučkami, operáciami nahradenia atď.
  • LCase() A UCase() - previesť reťazec na malé a veľké písmená. Často sa používa na prípravu hodnoty na porovnanie, keď veľkosť písmen nie je pri porovnávaní dôležitá (priezvisko, názvy firiem, miest a pod.).
  • LSet() A RSet() - schopnosť naplniť jednu premennú symbolmi inej bez zmeny jej dĺžky (vľavo a vpravo). Nadbytočné znaky sú orezané a chýbajúce znaky sú nahradené medzerami.
  • LTrim() , RTrim() , Orezať() - schopnosť odstrániť medzery vľavo, vpravo alebo vľavo a vpravo.
  • Vymeňte() - schopnosť nahradiť jednu sekvenciu znakov v reťazci inou.

    Dim sStr As String sStr = "Ahoj, svet!" MsgBox Replace(sStr, "Ahoj", "Bay")

  • Priestor() - získajte reťazec z počtu medzier, ktoré určíte;
    Ďalšou podobnou funkciou je Spc() , ktorý sa používa na formátovanie výstupu konzoly. Vynásobí medzery na základe šírky príkazového riadku.
  • StrComp() - schopnosť porovnávať dve struny.
  • StrConv() - schopnosť konvertovať reťazec (do Unicode a späť, na veľké a malé písmená, veľké prvé písmeno slov atď.):

    Dim sStr As String sStr = "Ahoj, svet!" MsgBox StrConv("Ahoj, svet!", vbUpperCase)

    Ako druhý parameter parametra možno použiť konštanty:

      • vbUpperCase: Skonvertuje všetky textové znaky na VEĽKÉ PÍSMENO
      • vbLowerCase: Skonvertuje všetky textové znaky na malé písmená
      • vbProperCase: Skonvertuje prvý znak každého slova na veľké písmená
      • *vbWide: Konvertuje reťazcové znaky z jednobajtových na dvojbajtové
      • *vbNarrow: Konvertuje reťazcové znaky z dvojbajtových na jednobajtové
      • **vbKatakana: Konvertuje znaky Hiragana na znaky Katakana
      • **vbHiragana: Prevedie znaky Katakana na znaky Hiragana
      • ***vbUnicode: Skonvertuje reťazec na Unicode pomocou predvolenej kódovej stránky systému
      • ***vbFromUnicode: Skonvertuje reťazec Unicode na predvolenú kódovú stránku systému

    * platí pre lokality na Ďalekom východe
    ** Platí len pre Japonsko
    *** nie je podporované v operačných systémoch Macintosh

  • StrReverse() - „obrátiť“ reťazec umiestnením jeho znakov v opačnom poradí. Funkcia funguje len od Excelu 2000 a vyššie. Príklad použitia funkcie, ako aj iných spôsobov otáčania slova, nájdete v tomto článku: Ako otočiť slovo?
  • Tab() je ďalšia funkcia, ktorá sa používa na formátovanie výstupu konzoly. Reprodukuje znaky tabulátora v zadanom čísle. Ak nie je zadané žiadne množstvo, jednoducho vložíte znak tabulátora. Konštantu môžete použiť aj na vloženie znaku tabulátora do hodnoty reťazca vbTab.
  • Reťazec() - umožňuje získať reťazec zadaného počtu znakov (ktoré opäť špecifikujete vy). Zvyčajne sa používa na formátovanie výstupu v spojení s funkciou Len().

Nasledujúce tri funkcie vám umožňujú pracovať s poľom reťazcov

Rozdeliť (<строка> [, <разделитель>]) – konvertuje reťazec na pole podreťazcov. V predvolenom nastavení sa ako oddeľovač používa medzera. Túto funkciu je vhodné použiť na rozdelenie vety na slová. V tejto funkcii však môžete zadať akýkoľvek iný oddeľovač. Napríklad Split(3, "Toto je testovacia veta") vráti pole troch reťazcových hodnôt: "Toto", "test", "veta". Pripojiť sa (<массивСтрок> [, <разделитель>]) – skonvertuje pole reťazcov na jeden reťazec so zadaným oddeľovačom. Filter(<массивСтрок>, <строкаПоиск>[, <включение>] [, <сравнение>]) – prehľadá pole hodnôt reťazcov a hľadá všetky podreťazce, ktoré zodpovedajú danému reťazcu. Táto funkcia má štyri argumenty:<строкаПоиск>– vyhľadávací reťazec;<включение>– parameter (boolovská hodnota), ktorý určuje, či vrátené riadky budú obsahovať hľadaný podreťazec alebo naopak, vrátia sa len tie riadky poľa, ktoré neobsahujú hľadaný reťazec ako podreťazec;<сравнение>– parameter definujúci metódu porovnávania reťazcov. Tri ďalšie funkcie poskytujú konverziu reťazca: LCase(<строка>) – prevedie všetky znaky v reťazci na malé písmená, napríklad funkcia LCase("MAIL") vráti reťazec "mail"; UCase(<строка>) – prevedie všetky znaky v reťazci na veľké písmená; StrConv(<строка>, <преобразование>) – vykonáva niekoľko typov transformácií reťazcov v závislosti od druhého parametra. Tento parameter je popísaný vstavanými konštantami, napríklad funkcia StrConv("Russia", VbProperCase) vracia hodnotu "Russia".

A posledné dve funkcie generujú reťazce znakov

Medzerník(<число>) – vytvorí reťazec pozostávajúci zo zadaného počtu medzier; String(<число>, <символ>) – vytvorí reťazec pozostávajúci z počtu znakov uvedených v prvom argumente. Samotný symbol je špecifikovaný v druhom argumente.

Príklad

Vytvorte program, ktorý pracuje s reťazcovými premennými. Na tento účel vytvorte formulár, ktorého štítky obsahujú nasledujúce správy: 1 štítok: uvádza sa dĺžka reťazca zadaného v prvom textovom poli (1 riadok); 2 štítok: prevedie všetky znaky tretieho textového poľa (3. riadok) na veľké písmená; 3. štítok: zobrazuje obsah prvého a druhého textového poľa (riadok 1 a 2) spolu.

Technológia vykonávania

  • Otvorte Word, uložte dokument a prejdite do editora VBA.
  • Vytvorte tvar podobný obrázku nižšie.
  • Napíšte obsluhu udalosti pre tlačidlo OK.
  • Zostavte program.
  • Spustite formulár.

Private Sub CommandButton1_Click() Dim a Ako Reťazec Dim b Ako Reťazec Dim c Ako Reťazec Dim k Ako Reťazec Dim d Ako Reťazec Dim n As Integer a=TextBox1.Text n=Len(a) Label7.Caption=“dĺžka prvého riadok je” & n & "znaky" c=TextBox3.Text k=Ucase(с) Label8.Caption=k b=TextBox2.Text d=a + " " + b Label9.Caption=d End Sub

Úloha

Je potrebné, aby sa v Exceli v bunke A1 vykonalo vyhľadávanie slov napísaných oddelenými čiarkami v stĺpci A2 a výsledok a nájdené slová s počtom ich opakovaní (ak je to možné) v hľadanom texte boli zapísané v ďalšia, tretia, bunka. (ešte lepšie by bolo, keby boli nejakým spôsobom zvýraznené (alebo podčiarknuté) v prvej bunke... aby boli okamžite viditeľné. Takto vložíte slová do poľa:

Kód Visual Basic
1 2 3 4 5 6 Dim m() As String If InStr(1, Cells(1, 2).Value, ","") > 0 Potom m = Split(Replace(Cells(1, 2).Value, " ", ""), " "") Else ReDim m(0): m(0) = Trim(Cells(1, 2).Value) End If

A potom v slučke hľadáte všetky slová (opäť v slučke, vnorené) Pridané po 23 minútach

Kód Visual Basic
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 Možnosť Porovnať text Možnosť Explicitné Sub QWERT() Dim R, N, K Dim m() As String If InStr(1, Cells(1, 2).Value, ",") > 0 Then m = Split(Replace(Cells() 1, 2).Hodnota, " ", ""), ",") Else ReDim m(0): m(0) = Trim(Cells(1, 2).Value) End If For R = 0 To UBound( m) N = 1 Ak InStr(1, Cells(1, 1).Hodnota, m(R)) > 0 Potom K = InStr(N, Cells(1, 1).Hodnota, m(R)) Do COLOR K , Dĺžka(m(R)) N = K + Dĺžka(m(R)) K = InStr(N, bunky(1, 1).Hodnota, m(R)) Slučka Kým K > 0 Koniec Ak Ďalší R Koniec Sub Sub COLOR(ST, LN) S bunkami(1; 1).Znaky(Začiatok:=ST, Dĺžka:=LN).Font .Farba = RGB(0, 0, 255) .Tučné = True End With End Sub

Pridané po 15 minútach A takto bude hľadať na začiatku slova a vybrať celé slovo

Kód Visual Basic
1 2 3 4 5 6 7 8 9 10 11 Sub COLOR(ST, LN) LN = LN - 1 Do LN = LN + 1 slučka Zatiaľ čo VBA.Mid(Cells(1, 1).Hodnota, ST + LN, 1)<>" " S bunkami(1; 1).Znaky(Začiatok:=ST, Dĺžka:=LN).Font .Farba = RGB(0, 0, 255) .Tučné = True End With End Sub

Môžete vyhľadávať nie od začiatku slova, ale podľa časti slova. — pridať ďalší cyklus Do-Loop. Posuňte iba začiatok (ST) doľava na medzeru (http://www.cyberforum.ru/vba/thread567588.html)

Ako: Porovnať reťazec so vzorom (Visual Basic)

Kontrola súladu reťazcov do šablóny String Data Type (Visual Basic) - Like operátor (Visual Basic) . ľavý operand operátora Like je reťazcový výraz a pravý operand je reťazec šablóny Like vracia boolovskú hodnotu

Kontrola postavy

? - ľubovoľný symbol

  • myString pozostáva zo znaku W, za ktorým nasledujú ľubovoľné 2 znaky

    Dim smatch As Boolean = myString Ako "W?"

Akýkoľvek znak zo zoznamu a rozsahu

Akýkoľvek znak a potom jeden zo znakov A, C alebo E

    Dim smatch As Boolean = myString Like "?" rozlišovať malé a veľké písmená

  • myString = počet znakov a potom jeden znak z rozsahu: i, j, k, l, m alebo n:

    Dim smatch As Boolean = myString Like "num" rozlišovať malé a veľké písmená

Like funguje s reťazcom poľa reťazcov s nulovou dĺžkou (""). umožňuje skontrolovať, či je reťazec prázdny

Znak zo zoznamu alebo žiadny znak

  1. Operátor Like sa používa dvakrát a výsledky sa kombinujú pomocou operátora Or (Visual Basic) alebo OrElse Operator (Visual Basic).
  2. Do prvej šablóny výpisu vložte zoznam znakov v hranatých zátvorkách ().
  3. V druhej šablóne výpisu neumiestňujte nič na miesto šeku Príklad: kontrola sedemmiestneho telefónneho čísla phoneNum, ktoré musí obsahovať presne tri číslice, za ktorými nasleduje medzera, spojovník, bodka alebo žiadny znak a potom štyri cifry. (prvé tri číslice nesmú byť oddelené od posledných štyroch - „bez znaku“) Null , vyskytla sa chyba. Ak je daný argument typ_porovnania , argument počiatočná_pozícia Je povinné. riadok 1 Požadovaný. Reťazový výraz, ktorý sa hľadá. riadok_2 Požadovaný. Reťazcový výraz, ktorý hľadáte. typ_porovnania Voliteľné. Definuje typ porovnania reťazcov. Ak je hodnota argumentu typ_porovnania je Null, vyskytne sa chyba. Ak argument typ_porovnania vynechaný, typ porovnania je určený parametrom Význam Sthrôza. Zadajte platný parameter LCID (LocaleID), aby ste použili pravidlá porovnávania špecifikované v nastaveniach jazyka.

    možnosti

    Argument typ_porovnania používa nasledujúce parametre:

    Návratové hodnoty

    Poznámky

    Funkcia InStrB používa sa s bajtovými údajmi obsiahnutými v reťazci. Funkcia InStrB vráti pozíciu bajtu, nie pozíciu znaku, prvého výskytu jedného reťazca v druhom.

    Príklady

    Použitie funkcie InStr vo výraze Zakaždým, keď použijete výrazy, môžete použiť funkciu InStr. Napríklad, ak chcete určiť polohu prvého bodu ( . ) v poli, ktoré obsahuje IP adresu (s názvom „IPAddress“), môžete použiť funkciu InStr nájsť to:

    InStr(1,,"")

    Funkcia InStr pozrie sa na každú hodnotu v poli "IPAddress" a vráti pozíciu prvého bodu. Ak teda hodnota prvého oktetu IP adresy je 10. , funkcia vráti hodnotu 3.

    Môžete použiť ďalšie funkcie, ktoré využívajú výsledok funkcie InStr, ak chcete extrahovať hodnotu oktetu IP adresy, ktorá predchádza prvej bodke, napríklad:

    Left(,(InStr(1,,."")-1))

    V tomto príklade funkcia InStr(1,,"") vráti polohu prvého bodu. V dôsledku odčítania 1 sa určí počet znakov pred prvým bodom, v tomto prípade - 2. Potom funkcia Vľavo extrahuje tieto znaky z ľavej strany poľa „IPAddress“ a vráti hodnotu 10.

    Pomocou funkcie InStr v kóde Visual Basic for Applications (VBA).

    POZNÁMKA. Nasledujúce príklady ilustrujú použitie modulu Visual Basic for Applications (VBA). Ak chcete získať ďalšie informácie o práci s VBA, vyberte Referencia vývojára v rozbaľovacom zozname vedľa tlačidla Vyhľadávanie a potom do vyhľadávacieho poľa zadajte jedno alebo viac kľúčových slov.

    V tomto príklade funkcia InStr používa sa na získanie polohy prvého výskytu jedného reťazca v druhom reťazci.

    Dim SearchString, SearchChar, MyPos SearchString ="XXpXXpXXPXXP" " Reťazec na vyhľadávanie. SearchChar = "P" " Hľadať "P". " Textové porovnanie začínajúce na pozícii 4. Vráti 6. MyPos = Instr( 4, SearchString , HľadaťChar , 1) " Binárne porovnanie začínajúce na pozícii 1. Vráti 9. MyPos = Instr( 1, SearchString , HľadaťChar , 0) " Porovnanie je predvolene binárne " (posledný argument je vynechaný). MyPos = Instr( SearchString , HľadaťChar ) " Vráti 9. MyPos = Instr( 1, SearchString , "W" ) "Vracia 0.

Riadky v programe často obsahujú zbytočné medzery na konci alebo začiatku riadku, ktoré je potrebné odstrániť, pretože cudzie medzery na začiatku alebo na konci v riadku môžu spôsobiť problémy s programom.

VBA má tri funkcie navrhnuté na odstránenie medzier na začiatku a na konci z reťazca: LTrim, RTrim, Trim. Majte na pamäti, že tieto funkcie v skutočnosti neupravujú pôvodný reťazec, ale skôr vracajú kópiu reťazca s odstránenými nadbytočnými medzerami.

Určenie dĺžky reťazca

Pri formátovaní správ pre používateľa alebo pri formátovaní údajov reťazca zadaných procedúrou do pracovného hárka programu Excel alebo dokumentu programu Word zvyčajne potrebujete poznať dĺžku reťazca. VBA používa funkciu na tieto účely Len. V zozname nižšie sú medzi zátvorkami a slovom dve medzery.



Pri šnúrkach s pevnou dĺžkou by ste mali byť opatrní. Pretože reťazec s pevnou dĺžkou má vždy rovnakú dĺžku, funkcia Len vždy vráti deklarovanú dĺžku reťazca bez ohľadu na skutočnú dĺžku reťazca. Ak napríklad reťazcová premenná s pevnou dĺžkou StrokeName, ktorá má 15 znakov, v skutočnosti obsahuje slovo „slnko“, potom funkcia Len(názov ťahu) vráti výsledok 15. V tomto prípade, aby ste zistili skutočnú dĺžku reťazca (v našom prípade - 6), musíte použiť nasledujúcu kombináciu funkcií: Len(Orezať(Názov ťahu)).

Porovnávanie a vyhľadávanie reťazcov

VBA má dve funkcie, ktoré vám pomôžu porovnávať reťazce: StrComp, InStr.

Funkcia StrComp

Syntax


StrComp(Reťazec1, Reťazec2[, Porovnať])


Reťazec1, Reťazec2 – ľubovoľné dva reťazcové výrazy, ktoré je potrebné porovnať.

Po spustení StrComp sa vráti jedna z nasledujúcich hodnôt:

  • -1, ak je Reťazec1 menší ako Reťazec2;
  • 0, ak sú reťazec1 a reťazec2 rovnaké;
  • 1, ak je Reťazec1 väčší ako Reťazec2.


Vyššie uvedený zoznam porovnáva dva reťazce v textovom režime: "Predvolený reťazec" a "Predvolený reťazec". Výsledok porovnania = 1, t.j. "Predvolený reťazec" je väčší ako "Predvolený reťazec".

Experimentujte s rôznymi reťazcami, aby ste lepšie pochopili, ako funkcia StrComp funguje.

Funkcia InStr

Funkcia InStr vám umožňuje určiť, či jeden reťazec obsahuje iný reťazec.

Syntax


StrComp(Reťazec1, Reťazec2[, Porovnať])


Reťazec1, Reťazec2 – všetky platné reťazcové výrazy. Funkcia kontroluje, či je reťazec1 obsiahnutý v reťazci2.

Porovnať je voliteľný argument, ktorým môže byť ktorákoľvek z nasledujúcich preddefinovaných konštánt (ak sa vynechá, použije sa aktuálne nastavenie porovnania možností):

  • vbBinaryCompare - binárne porovnanie dvoch reťazcov;
  • vbTextCompare - textové porovnanie dvoch reťazcov;
  • vbDatabaseCompare - používa sa iba v programe Microsoft Access.

Štart - voliteľný argument, je číselný výraz a určuje pozíciu znaku v reťazci1, od ktorej má kontrola začať.


InStr vracia číslo označujúce pozíciu znaku v reťazci String1, kde bol reťazec2 nájdený. Ak InStr nenájde reťazec 2 v reťazci 1, vráti sa 0. Ak má reťazec 1 (alebo reťazec 2) hodnotu Null, funkcia tiež vráti hodnotu Null.



Rozdelenie čiary

Niekedy je potrebné rozdeliť reťazec na jednotlivé časti. Vo VBA riešia tento problém tri funkcie: Ľavá, pravá, stredná.

Funkcia vľavo

Syntax


Vľavo (reťazec, dĺžka)


Funkcia vráti kópiu reťazca, počnúc prvým znakom a vrátane počtu znakov špecifikovaných dĺžkou. Ak je dĺžka číslo väčšie ako skutočná dĺžka reťazca, vráti sa celý výraz reťazca.

Správna funkcia

Syntax


Vpravo (reťazec, dĺžka)


Reťazec je akýkoľvek platný reťazcový výraz.

Dĺžka - ľubovoľná číselná hodnota.


Funkcia vráti kópiu reťazca, počnúc posledným znakom a zahŕňa sprava doľava počet znakov určený dĺžkou. Ak je dĺžka číslo väčšie ako skutočná dĺžka reťazca, vráti sa celý výraz reťazca. Funkcia Right vždy kopíruje znaky z konca reťazca na začiatok.

Stredná funkcia

Syntax


Stred (reťazec, začiatok, [, dĺžka])


Reťazec je akýkoľvek platný reťazcový výraz.

Dĺžka, Začiatok - ľubovoľné číselné hodnoty.


Funkcia Mid vracia kópiu reťazca, ktorý začína na pozícii znaku v reťazci určenom argumentom Štart. Voliteľný argument Dĺžka určuje počet znakov, ktoré sa majú skopírovať z reťazca String do Mid. Ak Štart obsahuje väčšie číslo, než je skutočná dĺžka reťazca, vráti sa prázdny reťazec.



Znaky, ktoré nemožno zadať z klávesnice

Často sa stáva, že potrebujete zadať znak, pre ktorý na klávesnici nie je žiadny kľúč (napríklad symbol autorských práv). Iná situácia je, keď potrebujete do reťazca zahrnúť znak služby VBA (najčastejším prípadom je zahrnutie dvojitých úvodzoviek).

Ak chcete do reťazca zahrnúť znaky, ktoré sa nedajú zadať z klávesnice alebo ktoré majú pre VBA špeciálny význam, použite funkciu Chr.

Syntax


Chr (kód znaku)


Charcode – akýkoľvek číselný výraz, ktorý je platným kódom pre znakovú sadu používanú počítačom. Musí byť celé číslo od 0 do 255.

Funkcia Chr berie ako argument jednoznakový kód a vracia reťazec obsahujúci znak zodpovedajúci tomuto kódu. Táto funkcia sa používa vo vyššie uvedených zoznamoch na napájanie riadku pri zobrazení správy na obrazovke Chr (13).


Pretože znaky používané na začatie nového riadku sú také dôležité pri formátovaní správ a iných údajov o reťazcoch, s ktorými manipulujú rutiny VBA, existuje niekoľko preddefinovaných konštánt pre tieto znaky, aby ste sa vyhli potrebe používať funkciu Chr:

  • vbCr je znak návratu vozíka. Ekvivalent Chr(13)
  • vbLf - posunutie znaku o jeden riadok. Ekvivalent Chr(10)
  • vbCrLf - návrat vozíka + posun znaku o jeden riadok. Ekvivalent Chr(13)+ Chr(10)
  • vbTab - znak tabulátora. Chr(9) ekvivalent

Ak chcete zobraziť zoznam kód-symbol musíte otvoriť systém pomoci VBA a na požiadanie "sady znakov" Zobrazí sa príslušná tabuľka.



Formátovanie hodnôt údajov

Veľmi často nám z jedného alebo druhého dôvodu formát údajov na výstupe programu úplne nevyhovuje. Tento problém je vyriešený funkciou Formátovať.

Funkcia Formát VBA je identická s funkciou Formát v Exceli a používa rovnaké zástupné symboly formátovania údajov.

Syntax


Formát (výraz [, formát[, prvý deň týždňa [, prvý týždeň roka]]])


Výraz – akýkoľvek platný výraz (povinný argument).

Formát je platný výraz pomenovaného alebo používateľom definovaného formátu.

Firstdayofweek je konštanta, ktorá určuje prvý deň v týždni.

Firstweekofyear – konštanta, ktorá definuje prvý týždeň v roku.


Ak chcete použiť funkciu Formát, musíte buď nastaviť preddefinovaný formát, alebo vytvoriť obrázok špecifického formátu pomocou zástupných znakov.


Pomenované formáty na použitie s funkciou Formát

Pomenovaný formát Akcia
Všeobecný dátum Formátuje informácie o dátume a čase na poradové číslo dátumu pomocou nastavení formátu dátumu a času pre tento počítač.
Dlhé rande Naformátuje iba časť dátumu na sekvenčný dátum pomocou nastavení formátu dlhého dátumu v počítači.
Stredný dátum Formátuje iba časť dátumu ako sekvenčný dátum pomocou nastavení stredného formátu dátumu v počítači.
Krátke rande Naformátuje iba časť obsahujúcu dátum na sekvenčný dátum pomocou nastavení počítača pre formát krátkeho dátumu.
Dlho Naformátuje iba časovú časť na sekvenčný dátum pomocou nastavení dlhodobého formátu počítača.
Stredný čas Naformátuje iba časovú časť na sekvenčný dátum pomocou nastavení stredného formátu času počítača.
Krátka doba Naformátuje iba časovú časť na sekvenčný dátum pomocou nastavení počítača pre Formát krátkeho času.
Všeobecné číslo Formátuje číslo do reťazca bez špeciálnych znakov.
mena Formátuje číslo so symbolom meny, oddeľovačom tisícov a iba na dve desatinné miesta.
Opravené Naformátuje číslo tak, aby vždy bola aspoň jedna číslica pred desatinnou čiarkou a aspoň dve číslice za ňou.
Štandardné Naformátuje číslo s oddeľovačom tisícok tak, aby pred oddeľovačom desatinných miest bola aspoň jedna číslica a za ním aspoň dve číslice.
Percento Formátuje číslo ako percento vynásobením číslom 100 a pridaním symbolu percenta.
Vedecký Formátuje číslo do bežného exponenciálneho formátu.
Áno nie Reťazec "Áno" sa vráti, ak je naformátované číslo iné ako nula, inak - "Nie".
Pravda lož Reťazec "True" sa vráti, ak je naformátované číslo iné ako nula, inak - "False".
Zap./Vyp Reťazec "On" sa vráti, ak je naformátované číslo iné ako nula, inak - "Off".

Zástupné symboly na vytváranie vlastných formátov

Zástupný znak Akcia (ako príklad použite číslo 1234.45)
0 Číselný znak, ktorý zobrazuje číslicu, ak je na danej pozícii, alebo 0, ak nie je. Symbol 0 môžete použiť na zobrazenie počiatočných núl pre celé čísla a koncových núl pre desatinné miesta: 00000,000 zobrazí 01234,450
# Číselný symbol zobrazuje číslicu, ak je na tejto pozícii jedna, inak nezobrazuje nič. Výplňový znak # je ekvivalentný 0, okrem toho, že úvodné a koncové nuly sa nezobrazujú: #####.### zobrazuje 1234,45
$ Zobrazuje znak dolára: $###,###.00 zobrazuje 1 234,45 $
. Desatinný zástupný znak, zobrazuje desatinnú čiarku na určenej pozícii v reťazci zástupných znakov 0: #.##.## zobrazuje 1234,45
% Symbol percenta, vynásobí hodnotu 100 a pridá znak percenta na pozíciu označenú zástupnými symbolmi 0:#.#0,00% zobrazí číslo 0,12345 ako 12,35 % (dochádza k zaokrúhleniu)
, Oddeľovač tisícok, pridáva čiarky ako oddeľovače tisícov v reťazcoch 0 a #: ###,###,###.00 zobrazuje 1 234,45
E-e- Zobrazuje hodnotu v exponenciálnom formáte s exponentom iba pre záporné hodnoty: #.####E-00 zobrazuje 1.23445E03
E+ e+ Zobrazuje hodnotu v exponenciálnom formáte s exponentom pre záporné aj kladné hodnoty: #.####E+00 zobrazí 1.23445E+03
/ Oddeľuje deň, mesiac a rok pre formátovanie hodnôt dátumu.
m Určuje spôsob zobrazenia mesiacov v dátumoch: m zobrazuje 1, mm - 01, mmm - január, mmmm - január
d Určuje spôsob zobrazenia dní v dátumoch: d zobrazuje 1, dd - 01, ddd - Ne, dddd - nedeľa
r Zobrazuje deň v roku ako číslo od 1 do 366
yy Určuje spôsob zobrazenia rokov v dátumoch: yy – 66, yyyy – 1966
q Zobrazuje štvrť roka ako číslo od 1 do 4
w Zobrazuje deň v týždni ako číslo (1 - nedeľa)
ww Zobrazuje týždeň v roku ako číslo od 1 do 54
: Oddeľuje hodiny, minúty a sekundy v hodnotách formátu času: hh:mm:ss - 01:01:01, h:m:s - 1:1:1
h Určuje spôsob zobrazenia hodín: hh - 01, h - 1
m Určuje spôsob zobrazenia minút: mm - 01, m - 1
s Určuje spôsob zobrazenia sekúnd: ss - 01, s - 1
DOPOLUDNIA POPOLUDNÍ Zobrazuje čas v 12-hodinovom formáte s pridanými AM alebo PM
@ Zástupný znak znaku, ktorý zobrazuje medzeru, ak sa vo formátovanom reťazci nenachádza žiadny zodpovedajúci znak.
Zobrazuje všetky znaky veľkými písmenami.
> Zobrazuje všetky znaky malými písmenami.
Chr

Funkcia Chr

Chr(Kód znaku)
Chr$ (Kód znaku)
ChrB(Kód znaku)
ChrW(Kód znaku)

Funkcia Chr(Ch aracte r) vám umožňuje získať znak podľa hodnoty jeho číselného kódu ANSI alebo Unicode

Návratová hodnota

Funkcie Chr, ChrB, ChrW vráti hodnotu podtypu String typu Variant obsahujúcu znak zodpovedajúci zadanému kódu znaku ANSI alebo Unicode. Funkcie Chr$, ChrB$, ChrW$ podľa toho vráti hodnotu typu String

Poznámka

Chr A Chr$ vrátiť znak podľa jeho kódovania ANSI
ChrB A ChrB$ vrátiť jednobajtový riadok
ChrW vráti znak Unicode, avšak v systémoch bez Unicode je jeho správanie podobné Chr
Použiť v parametri CharCode hodnoty väčšie ako 255 generujú chyby spustenia 5: Neplatné volanie procedúry alebo argument alebo 6: Pretečenie

možnosti CharCode Požadovaný argument je dlhá hodnota, ktorá špecifikuje znak. Zvyčajne funkcia Chr používa sa pri vkladaní netlačiteľných znakov do textových reťazcov (carriage return, line feed, tabulator atď.). Kódy 0-31 zodpovedajú štandardným riadiacim znakom ASCII. Napríklad, Chr(10) vráti znak nového riadku Príklad Dim retval retval = Chr(65) Debug.Print retval " vráti A Kategória

V časti o otázke Ľudia, prosím, podrobne vysvetlite, čo znamená funkcia ord(x) a jej inverzný chr(x) v jazyku Pascal? daný autorom Nick Brown najlepšia odpoveď je Existuje špeciálna tabuľka znakov (rozšírený kód ASCII, keď každý znak má číselnú hodnotu, celkovo je v tabuľke 255 hodnôt, to znamená, že každému znaku je priradené číslo,
chr(0..254) prevedie číslo (jeden bajt) na znak, ktorému toto číslo patrí, napríklad chr(71) výsledkom bude písmeno „G“, aj stláčanie kláves na klávesnici vytvára vlastný kód, toto je presne ten kód, keď sa umiestni do tohto operátora a dá výsledok, ktorý kláves je stlačený, toto som napríklad ja. Ale operátor ORD(x) robí tento proces v opačnom poradí.
Nastavíme znak hodnoty a dostaneme číslo od 0 do 254 (jeden bajt)
napríklad ORD("G") nám dá výsledok 71 (v desiatkovom formáte)
To je všetko, čo sa zdá!!!

Odpoveď od Katyonachik[nováčik]
Je to jednoduché, naozaj)
Ord ("X") - vráti kód znaku X z tabuľky ASKII.
Výsledkom inverznej funkcie bude symbol, ktorý zodpovedá zadanému kódu (z ktorého je funkcia prevzatá) z rovnakej ASCII tabuľky.


Odpoveď od Juri[guru]
Toto nie sú recipročné funkcie!
Funkcia Ord vracia ordinálnu hodnotu vymenovaného typu.
Počítanie začína od nuly.
Pre typ bajtu funkcia vráti skutočnú hodnotu - poradové číslo sa zhoduje s hodnotou.
Pre typ char funkcia vráti poradové číslo znaku, ktoré (číslo je náhodné) sa zhoduje s ASCII kódom.
Funkcia chr vráti znak s daným ASCII kódom.
Záver: Jednoducho, čo sa týka symbolických hodnôt, skutočne fungujú ako inverzné...
Preto môžeme povedať, že funkcia ord je inverznou funkciou chr, ale nie naopak – funkcia chr nie je inverznou funkciou ord, keďže rozsah funkcie ord nie je obmedzený len na prácu so symbolmi!