Exemple de utilizare a funcțiilor VBA. Funcții încorporate ale funcțiilor Excel Oracle Vba pentru lucrul cu șiruri

  • A.S.C. () - această funcție vă permite să returnați codul numeric pentru caracterul transmis. De exemplu, ASC ("D") va returna 68. Această funcție este utilă pentru a determina litera următoare sau anterioară. Este de obicei folosit împreună cu funcția Chr(), care efectuează operația inversă - returnează un caracter conform codului său numeric transmis.Variantele acestei funcții sunt AscB() Și AscW():
    • AscB () - returnează doar primul octet al codului numeric pentru caracter.
    • AscW () - returnează codul caracterului în codificare Unicode
  • Chr () - returnează un caracter prin codul său numeric. Poate fi folosit împreună cu funcția Asc(), dar cel mai adesea este folosit atunci când trebuie să imprimați un caracter de serviciu (de exemplu ghilimele - "), deoarece Nu puteți introduce doar ghilimele în codul VBA (trebuie sa pui dublu). Aceasta este funcția pe care o folosesc de obicei.

    Dim sWord As String sWord = Chr(34) & „Cuvânt între ghilimele” & Chr(34)

    Există opțiuni pentru această funcție - ChrB() Și ChrW(). Funcționează în mod similar cu aceleași opțiuni pentru funcție Asc().

  • InStr () Și InStrRev () - una dintre cele mai populare caracteristici. Vă permite să detectați un caracter sau o secvență de caractere în corpul unei variabile șir și să returnați poziția acestora. Dacă secvența nu este găsită, atunci este returnat 0.

    Dim sStr As String sStr = "w" If InStr(1, "Hello, World!", sStr, vbTextCompare) > 0 Then MsgBox "Cuvântul de căutare este prezent!" Else MsgBox „Lipsește cuvântul căutat!” Încheiați dacă

    Diferența dintre funcții este că InStr() caută cuvântul specificat de la începutul liniei și InStrRev() de la sfârșitul liniei

  • Stânga () , Dreapta () , la mijloc () - capacitatea de a lua numărul de caractere pe care îl specificați dintr-o variabilă șir existentă în stânga, în dreapta sau în mijloc, respectiv.
    Dim sStr As String sStr = "Bună, lume!" MsgBox Mid(sStr, 1, 5)

    Dim sStr As String sStr = "Bună, lume!" MsgBox Mid(sStr, 1, 5)

  • Len () - capacitatea de a obține numărul de caractere dintr-o linie. Folosit adesea cu bucle, operații de înlocuire etc.
  • LCase () Și UCase () - convertiți șirul în minuscule și, respectiv, majuscule. Adesea folosit pentru a pregăti o valoare pentru comparație atunci când cazul nu este important la comparare (nume de familie, nume de companii, orașe etc.).
  • LSet () Și Rsetați () - capacitatea de a umple o variabilă cu simboluri ale alteia fără a-i modifica lungimea (stânga și respectiv dreapta). Caracterele suplimentare sunt tăiate și spațiile sunt înlocuite cu caracterele lipsă.
  • LTrim () , RTrim () , Tunde () - capacitatea de a elimina spatii respectiv pe stanga, dreapta sau ambele stanga si dreapta.
  • A inlocui () - capacitatea de a înlocui o secvență de caractere dintr-un șir cu alta.
    Dim sStr As String sStr = "Bună, lume!" MsgBox Replace(sStr, „Bună ziua”, „Bay”)

    Dim sStr As String sStr = "Bună, lume!" MsgBox Replace(sStr, „Bună ziua”, „Bay”)

  • Spaţiu () - obțineți un șir din numărul de spații specificat;
    O altă funcție similară este SPC () , care este folosit pentru a formata ieșirea consolei. Înmulțește spațiile în funcție de lățimea liniei de comandă.
  • StrComp () - capacitatea de a compara două șiruri.
  • StrConv () - capacitatea de a converti un șir (la Unicode și înapoi, la majuscule și minuscule, scrieți cu majusculă prima literă a cuvintelor etc.):
    Dim sStr As String sStr = "Bună, lume!" MsgBox StrConv ("Bună ziua, lume!" , vbMajuscule)

    Dim sStr As String sStr = "Bună, lume!" MsgBox StrConv ("Bună ziua, lume!", vbMajuscule)

    Constantele pot fi utilizate ca al doilea parametru de parametru:

    • vbMajuscule: Convertește toate caracterele text în MAJUSCULE
    • vbLowerCase: Convertește toate caracterele textului în minuscule
    • vbProperCase: Convertește primul caracter al fiecărui cuvânt în majuscule
    • *vbWide: Convertește șirurile de caractere de la un octet la un octet dublu
    • *vbÎngust: Convertește caracterele șir de caractere de la un octet dublu la un octet
    • **vbKatakana: Convertește caracterele Hiragana în caractere Katakana
    • **vbHiragana: Convertește caracterele Katakana în caractere Hiragana
    • ***vbUnicode: Convertește un șir în Unicode utilizând pagina de coduri implicită a sistemului
    • ***vbFromUnicode: Convertește un șir Unicode în pagina de cod implicită a sistemului
    • * aplicabil pentru localizarea Orientului Îndepărtat
      ** Se aplică numai pentru Japonia
      *** nu este acceptat pe sistemele de operare Macintosh

  • StrReverse () - „inversa” un șir prin plasarea caracterelor acestuia în ordine inversă. Funcția funcționează numai de la Excel 2000 și o versiune ulterioară. Un exemplu de utilizare a funcției, precum și alte metode de transformare a unui cuvânt, poate fi găsit în acest articol: Cum să întorci un cuvânt?
  • Tab () este o altă funcție care este folosită pentru a formata ieșirea consolei. Reproduce caracterele tabulatoare în numărul pe care îl specificați. Dacă nu este specificată nicio cantitate, introduceți pur și simplu un caracter de tabulatură. De asemenea, puteți utiliza constanta pentru a insera un caracter tabulator într-o valoare șir vbTab.
  • Şir () - vă permite să obțineți un șir cu un număr specificat de caractere (care sunt din nou specificate de dvs.). Utilizat de obicei pentru a formata ieșirea împreună cu funcția Len().

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

Opțiunea 1

strW= (="KOROTEEV DMITRY VLADIMIROVICH") strB=Înlocuiește(Înlocuiește(strW, Chr(61), ""), Chr(34), "")

Opțiune

De asemenea, puteți utiliza o matrice de octeți:

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 Masa(n)<>34 Și Liturghia (n)<>61 Apoi Zam = Zam + Chr$(Mass(n)) Next MsgBox Zam End Sub

Opțiune

Sau filtrarea cu mijloc:

Sub nn() Dim n As Long, TXT As String, L As String, Zam As String TXT = "="" DMITRY VLADIMIROVICH KOROTEEV" Pentru n = 1 To Len(TXT) L = Mid$(TXT, n, 1) Daca L<>"""" Și eu<>"=" Apoi Zam = Zam + L Următorul MsgBox Zam End Sub

Linia 6 poate fi înlocuită cu husky:
Cod Visual Basic
1
Dacă L place „[!””=]”, atunci Zam = Zam + L

Opțiune

De asemenea, prin căutare de poziție și recursivitate:

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 Ca șir, Ce ca șir, Opțional Pos = 1) Dim n As Long If Pos<>0 Atunci n = InStr(Pos, txt, What) Change = Mid$(txt, Pos, IIf(n - Pos)< 0, Len(txt), n - Pos)) + Change(txt, What, IIf(n = 0, 0, n + 1)) End If End Function

Puteți folosi și expresii regulate, dar nu le cunosc.

Opțiune

Prin căutare și recursivitate de la dreapta la stânga:

Cod Visual Basic
1 2 3 4 5 6 7 8 Modificare funcție (txt ca șir, ce ca șir, opțional Pos ca lung) Dim n As Long Dacă Pos = 0 Apoi Pos = Len(txt) Dacă Pos<>-1 Atunci n = InStrRev(txt, What, Pos) Schimbare = Change(txt, What, IIf(n = 1, -1, n - 1)) + Mid$(txt, n + 1, Pos - n) End Dacă funcția de sfârșit

Opțiune

Și există și DespicăȘi A te alatura

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

Pe langa subiect: Dar asta este pentru sadici

Litere mari și mici

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

sau StrConv() - convertiți un șir (în Unicode și înapoi, în majuscule și minuscule, scrieți cu majuscule prima literă a cuvintelor etc.) - vedeți mai jos

Operații cu șiruri

Pentru datele de tip String, există o singură operație - concatenare (unire). De exemplu, rezultatul operației de concatenare a trei valori de șir „Peter” & » » & „Ivanovici” va fi șirul „Peter Ivanovich”. De asemenea, este posibil să utilizați un alt operator pentru operația de concatenare, de exemplu: „zece” + „mii”. Diferența dintre aceste expresii este că, în primul caz, operanzii pot fi valori de orice tip (vor fi pur și simplu convertiți în șiruri de caractere), iar în al doilea, ambii operanzi trebuie să fie de tip String. Există un număr mare de funcții pentru lucrul cu șiruri (tabel. Funcții pentru lucrul cu șiruri).

Tabelul „Funcții pentru lucrul cu șiruri”

Funcţie Descriere Exemplu
Len(str) Determină lungimea șirului Din a=len(„Caractere”) rezultă a=9
Stânga (<строка>, <длина>) Extrase din argument<строка>numărul specificat de caractere în stânga Left("1234string", 4) ="1234″
Dreapta(<строка>, <длина>) Extrase din argument<строка>numărul specificat de caractere la dreapta Dreapta(" 1234 șir", 6) = "șir"
mijlocul(<строка>, <старт> [, <длина>]) Extrase din argument<строка>subșir cu numărul specificat de caractere, începând de la poziție<старт> Mid("12345678″, 4,3) ="456"
mijlocul(<строка>, <старт>) Se extrage un subșir din poziție<старт>până la capătul liniei Mid("12345678″, 4) ="45678"
LTrim(<строка>) Elimină spațiile de la începutul unei linii LTrim("print") ="printare"
RTrim (<строка>) Elimină spațiile de la sfârșitul unui șir RTrim("printare") = "tiparire"
Tunde(<строка>) Elimină spațiile la începutul și la sfârșitul unui șir Trim("print") ="printare"
InStr([<старт>, ] < строка1>, <строка2> [, <сравнение>]) Caută un subșir într-un șir. Returnează poziția primei apariții a unui șir<строка2>a alinia<строка1>, <старт>— poziția din care începe căutarea. Dacă acest argument este omis, căutarea începe de la începutul șirului Instr("C:Temp test.mdb", "Test")=9 Dacă șirul de căutare nu se află în șirul specificat, funcția returnează 0
InStrRev([<старт>, ] <строка1>, <строка2> [, <сравнение>]) Caută un subșir într-un șir, dar începe căutarea la sfârșitul șirului și returnează poziția ultimei apariții a subșirului. Argument opțional<сравнение>definește tipul de comparație între două șiruri
A inlocui (<строка>, <строкаПоиск>, <строкаЗамена>) Vă permite să înlocuiți un subșir dintr-un șir cu altul. Această funcție caută toate aparițiile argumentului<строкаПоиск>în argumentare<строка>și le înlocuiește cu<строкаЗамена>

Pentru a compara valorile șirurilor, puteți utiliza operatori de comparație numerică obișnuită, deoarece atunci când comparați caractere, codurile lor binare sunt comparate. Operatorul Like este folosit și pentru a compara valorile șirurilor, ceea ce vă permite să detectați o potrivire imprecisă, de exemplu, expresia „Input” Like „Input*” va fi evaluată la True, deoarece șirul comparat începe cu cuvântul „Input”. Caracterul asterisc (*) dintr-un șir înlocuiește un număr arbitrar de caractere. Alte caractere care sunt procesate de operatorul Like în șirul comparat:

  • ? – orice personaj (unul);
  • # – o cifră (0–9);
  • [<список>] – un caracter care se potrivește cu unul dintre caracterele din listă;
  • [!<список>] – un caracter care nu se potrivește cu niciunul dintre caracterele din listă.
  • A.S.C.() - această funcție vă permite să returnați codul numeric pentru caracterul transmis. De exemplu, ASC ("D") va returna 68. Această funcție este utilă pentru a determina litera următoare sau anterioară. Este de obicei folosit împreună cu funcția Chr(), care efectuează operația inversă - returnează un caracter conform codului său numeric transmis.Variantele acestei funcții sunt AscB() Și AscW():
    • AscB() - returnează doar primul octet al codului numeric pentru caracter.
    • AscW() - returnează codul caracterului în codificare Unicode
  • Chr() - returnează un caracter prin codul său numeric. Poate fi folosit împreună cu funcția Asc(), dar cel mai adesea este folosit atunci când trebuie să imprimați un caracter de serviciu (de exemplu ghilimele - "), deoarece Nu puteți introduce doar ghilimele în codul VBA (trebuie sa pui dublu). Aceasta este funcția pe care o folosesc de obicei.

    Dim sWord As String sWord = Chr(34) & „Cuvânt între ghilimele” & Chr(34)

    Există opțiuni pentru această funcție - ChrB() Și ChrW(). Funcționează în mod similar cu aceleași opțiuni pentru funcție Asc().

  • InStr() Și InStrRev() - una dintre cele mai populare caracteristici. Vă permite să detectați un caracter sau o secvență de caractere în corpul unei variabile șir și să returnați poziția acestora. Dacă secvența nu este găsită, atunci este returnat 0.

    Dim sStr As String sStr = "w" If InStr(1, "Hello, World!", sStr, vbTextCompare) > 0 Then MsgBox "Cuvântul de căutare este prezent!" Else MsgBox „Lipsește cuvântul căutat!” Încheiați dacă

    Diferența dintre funcții este că InStr() caută cuvântul specificat de la începutul liniei și InStrRev() de la sfârșitul liniei

  • Stânga() , Dreapta() , la mijloc() - capacitatea de a lua numărul de caractere pe care îl specificați dintr-o variabilă șir existentă în stânga, în dreapta sau în mijloc, respectiv.

    Dim sStr As String sStr = "Bună, lume!" MsgBox Mid(sStr, 1, 5)

  • Len() - capacitatea de a obține numărul de caractere dintr-o linie. Folosit adesea cu bucle, operații de înlocuire etc.
  • LCase() Și UCase() - convertiți șirul în minuscule și, respectiv, majuscule. Adesea folosit pentru a pregăti o valoare pentru comparație atunci când cazul nu este important la comparare (nume de familie, nume de companii, orașe etc.).
  • LSet() Și Rsetați() - capacitatea de a umple o variabilă cu simboluri ale alteia fără a-i modifica lungimea (stânga și respectiv dreapta). Caracterele suplimentare sunt tăiate și spațiile sunt înlocuite cu caracterele lipsă.
  • LTrim() , RTrim() , Tunde() - capacitatea de a elimina spatii respectiv pe stanga, dreapta sau ambele stanga si dreapta.
  • A inlocui() - capacitatea de a înlocui o secvență de caractere dintr-un șir cu alta.

    Dim sStr As String sStr = "Bună, lume!" MsgBox Replace(sStr, „Bună ziua”, „Bay”)

  • Spaţiu() - obțineți un șir din numărul de spații specificat;
    O altă funcție similară este SPC() , care este folosit pentru a formata ieșirea consolei. Înmulțește spațiile în funcție de lățimea liniei de comandă.
  • StrComp() - capacitatea de a compara două șiruri.
  • StrConv() - capacitatea de a converti un șir (la Unicode și înapoi, la majuscule și minuscule, scrieți cu majusculă prima literă a cuvintelor etc.):

    Dim sStr As String sStr = "Bună, lume!" MsgBox StrConv ("Bună ziua, lume!", vbMajuscule)

    Constantele pot fi utilizate ca al doilea parametru de parametru:

      • vbMajuscule: Convertește toate caracterele text în MAJUSCULE
      • vbLowerCase: Convertește toate caracterele textului în minuscule
      • vbProperCase: Convertește primul caracter al fiecărui cuvânt în majuscule
      • *vbWide: Convertește șirurile de caractere de la un octet la un octet dublu
      • *vbÎngust: Convertește caracterele șir de caractere de la un octet dublu la un octet
      • **vbKatakana: Convertește caracterele Hiragana în caractere Katakana
      • **vbHiragana: Convertește caracterele Katakana în caractere Hiragana
      • ***vbUnicode: Convertește un șir în Unicode utilizând pagina de coduri implicită a sistemului
      • ***vbFromUnicode: Convertește un șir Unicode în pagina de cod implicită a sistemului

    *aplicabil pentru localizările din Orientul Îndepărtat
    ** Se aplică numai pentru Japonia
    *** nu este acceptat pe sistemele de operare Macintosh

  • StrReverse() - „inversa” un șir prin plasarea caracterelor acestuia în ordine inversă. Funcția funcționează numai de la Excel 2000 și o versiune ulterioară. Un exemplu de utilizare a funcției, precum și alte metode de transformare a unui cuvânt, poate fi găsit în acest articol: Cum să întorci un cuvânt?
  • Tab() este o altă funcție care este folosită pentru a formata ieșirea consolei. Reproduce caracterele tabulatoare în numărul pe care îl specificați. Dacă nu este specificată nicio cantitate, introduceți pur și simplu un caracter de tabulatură. De asemenea, puteți utiliza constanta pentru a insera un caracter tabulator într-o valoare șir vbTab.
  • Şir() - vă permite să obțineți un șir cu un număr specificat de caractere (care sunt din nou specificate de dvs.). Utilizat de obicei pentru a formata ieșirea împreună cu funcția Len().

Următoarele trei funcții vă permit să lucrați cu o serie de șiruri

Despică (<строка> [, <разделитель>]) – convertește un șir într-o matrice de subșiruri. În mod implicit, spațiul este folosit ca delimitator. Această funcție este convenabilă pentru a împărți o propoziție în cuvinte. Cu toate acestea, puteți specifica orice alt delimitator în această funcție. De exemplu, Split(3, „Aceasta este o propoziție de test”) returnează o matrice de trei valori șir: „Acest”, „test”, „propoziție”. A te alatura (<массивСтрок> [, <разделитель>]) – convertește o matrice de șiruri într-un singur șir cu delimitatorul specificat. Filtru(<массивСтрок>, <строкаПоиск>[, <включение>] [, <сравнение>]) – scanează o matrice de valori șiruri și caută toate subșirurile care se potrivesc cu șirul dat. Această funcție are patru argumente:<строкаПоиск>– șir de căutare;<включение>– un parametru (valoare booleană) care specifică dacă rândurile returnate vor include subșirul căutat sau, invers, vor fi returnate doar acele rânduri matrice care nu conțin șirul căutat ca subșir;<сравнение>– parametru care definește metoda de comparare a șirurilor. Încă trei funcții asigură conversia șirurilor: LCase(<строка>) – convertește toate caracterele dintr-un șir în litere mici, de exemplu funcția LCase("MAIL") returnează șirul "mail"; UCase(<строка>) – convertește toate caracterele din șir în majuscule; StrConv(<строка>, <преобразование>) – efectuează mai multe tipuri de transformări de șir în funcție de al doilea parametru. Acest parametru este descris de constantele încorporate, de exemplu funcția StrConv(„Rusia”, VbProperCase) returnează valoarea „Rusia”.

Iar ultimele două funcții generează șiruri de caractere

Spaţiu(<число>) – creează un șir format din numărul specificat de spații; Şir(<число>, <символ>) – creează un șir format din numărul de caractere specificat în primul argument. Simbolul în sine este specificat în al doilea argument.

Exemplu

Creați un program care funcționează cu variabile șir. Pentru aceasta, creați un formular ale cărui etichete conțin următoarele mesaje: 1 etichetă: se raportează lungimea șirului introdus în primul câmp de text (1 rând); 2 etichetă: convertește toate caracterele celui de-al treilea câmp de text (linia a treia) în majuscule; A treia etichetă: afișează împreună conținutul primului și celui de-al doilea câmp de text (liniile 1 și 2).

Tehnologia de execuție

  • Deschideți Word, salvați documentul și accesați editorul VBA.
  • Creați o formă similară cu imaginea de mai jos.
  • Scrieți un handler de evenimente pentru butonul OK.
  • Compilați programul.
  • Rulați formularul.

Private Sub CommandButton1_Click() Dim a As String Dim b As String Dim c As String Dim k As String Dim d As String Dim n As Integer a=TextBox1.Text n=Len(a) Label7.Caption=“lungimea primei linia este” & n & „caractere” c=TextBox3.Text k=Ucase(с) Label8.Caption=k b=TextBox2.Text d=a + " " + b Label9.Caption=d End Sub

Sarcină

Este necesar ca in Excel in celula A1 sa se efectueze o cautare a cuvintelor scrise separate prin virgula in coloana A2, iar rezultatul, si cuvintele gasite, cu numarul repetarii lor (daca este posibil) in textul cautat, sa se scrie in alta, a treia, celula. (ar fi chiar mai bine dacă ar fi evidențiate (sau subliniate) într-un fel în prima celulă... astfel încât să fie vizibile imediat. Așa puneți cuvintele într-o matrice:

Cod Visual Basic
1 2 3 4 5 6 Dim m() As String Dacă InStr(1, Cells(1, 2).Value, ","") > 0 Atunci m = Split(Replace(Cells(1, 2).Value, " ", ""), " ,"") Else ReDim m(0): m(0) = Trim(Cells(1, 2).Value) End If

Și apoi într-o buclă cauți toate cuvintele (din nou într-o buclă, imbricate) Adăugat după 23 de minute

Cod 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 Opțiune Compare Text Opțiune Explicit Sub QWERT() Dim R, N, K Dim m() As String If InStr(1, Cells(1, 2).Value, ",") > 0 Then m = Split(Inlocuire(Cells() 1, 2).Valoare, " ", ""), ",") Else ReDim m(0): m(0) = Trim(Cells(1, 2).Value) End If For R = 0 To UBound( m) N = 1 Dacă InStr(1, Cells(1, 1).Value, m(R)) > 0 Atunci K = InStr(N, Cells(1, 1).Value, m(R)) Faceți CULOARE K , Len(m(R)) N = K + Len(m(R)) K = InStr(N, Cells(1, 1).Value, m(R)) Loop While K > 0 End If Next R End Sub Sub CULOARE (ST, LN) Cu celule (1, 1). Caractere (Start:=ST, Lungime:=LN). Font .Color = RGB(0, 0, 255) .Bold = True Sfârșit cu End Sub

Adăugat după 15 minute Și așa va căuta la începutul cuvântului și va selecta întregul cuvânt

Cod Visual Basic
1 2 3 4 5 6 7 8 9 10 11 Sub CULOARE(ST, LN) LN = LN - 1 Do LN = LN + 1 buclă While VBA.Mid(Cells(1, 1).Value, ST + LN, 1)<>" " Cu celule(1, 1). Caractere (Start:=ST, Lungime:=LN). Font .Culoare = RGB(0, 0, 255) .Bold = True End With End Sub

Puteți efectua o căutare nu de la începutul cuvântului, ci după o parte a cuvântului. — adăugați un alt ciclu Do-Loop. Deplasați doar începutul (ST) la stânga la un spațiu (http://www.cyberforum.ru/vba/thread567588.html)

Cum să: potriviți un șir cu un model (Visual Basic)

Verificarea conformitățiișiruri de caractere la șablonul Tip de date șir (Visual Basic) - Operator similar (Visual Basic) . operandul din stânga al operatorului Like este o expresie șir, iar operandul din dreapta este un șir șablon Like returnează o valoare booleană

Verificarea caracterelor

? - orice simbol

  • myString este format din caracterul W urmat de oricare 2 caractere

    Dim sMatch As Boolean = myString Ca „W??

Orice caracter din listă și gamă

Orice caracter și apoi unul dintre caracterele A, C sau E

    Dim sMatch As Boolean = myString Ca "?" caz sensibil

  • myString = num caractere și apoi un caracter din intervalul: i, j, k, l, m sau n:

    Dim sMatch As Boolean = myString Ca „num” caz sensibil

Like funcționează atât cu un șir de matrice de șiruri de lungime zero (""). vă permite să verificați dacă un șir este gol

Un personaj din listă sau niciun personaj

  1. Operatorul Like este folosit de două ori, iar rezultatele sunt combinate folosind operatorul Or (Visual Basic) sau Operatorul OrElse (Visual Basic).
  2. În primul șablon de declarație, inserați o listă de caractere între paranteze drepte ().
  3. În al doilea șablon de declarație, nu plasați nimic în locația de verificare. Exemplu: verificarea unui număr de telefon din șapte cifre phoneNum, care trebuie să conțină exact trei cifre, urmat de un spațiu, o cratimă, un punct sau niciun caracter și apoi patru cifre. (este posibil ca primele trei cifre să nu fie separate de ultimele patru - „niciun caracter”) Null , apare o eroare. Dacă se dă un argument tip_comparație , argument poziție_de_pornire este obligatoriu. linia 1 Necesar. Expresie șir, care se caută. randul 2 Necesar. Expresia șir pe care o cauți. tip_comparație Opțional. Definește tipul comparații de șiruri. Dacă valoarea argumentului tip_comparație este Null, apare o eroare. Dacă argumentul tip_comparație omis, tipul de comparație este determinat de parametru Sens mierveneraţie. Specificați un parametru LCID (LocaleID) valid pentru a utiliza regulile de comparare specificate în setările de limbă.

    Opțiuni

    Argument tip_comparație folosește următorii parametri:

    Valori returnate

    Note

    Funcţie InStrB utilizat cu date de octeți conținute într-un șir. Funcţie InStrB returnează poziția octetului, nu poziția caracterului, a primei apariții a unui șir în altul.

    Exemple

    Utilizarea funcției InStr într-o expresie De fiecare dată când utilizați expresii, puteți folosi funcția InStr. De exemplu, dacă doriți să determinați poziția primului punct ( . ) într-un câmp care conține o adresă IP (numită „IPAddress”), puteți utiliza funcția InStr pentru a-l găsi:

    InStr(1,,"")

    Funcţie InStr se uită la fiecare valoare din câmpul „IPAddress” și returnează poziția primului punct. Prin urmare, dacă valoarea primului octet al adresei IP este 10. , funcția returnează valoarea 3.

    Puteți utiliza alte funcții care folosesc rezultatul funcției InStr, pentru a extrage valoarea octetului adresei IP care precede primul punct, de exemplu:

    Stânga(,(InStr(1,,."")-1))

    În acest exemplu, funcția InStr(1,,"") returnează poziția primului punct. Ca urmare a scăderii lui 1, se determină numărul de caractere care preced primul punct, în acest caz - 2. Apoi funcția Stânga extrage aceste caractere din partea stângă a câmpului „IPAddress”, returnând valoarea 10.

    Folosind funcția InStrîn codul Visual Basic pentru aplicații (VBA).

    NOTĂ. Următoarele exemple ilustrează utilizarea modulului Visual Basic pentru aplicații (VBA). Pentru mai multe informații despre lucrul cu VBA, selectați Referința dezvoltatoruluiîn lista derulantă de lângă butonul Căutare, apoi introduceți unul sau mai multe cuvinte cheie în câmpul de căutare.

    În acest exemplu, funcția InStr folosit pentru a obține poziția primei apariții a unui șir în altul.

    Dim SearchString, SearchChar, MyPos SearchString ="XXpXXpXXPXXP" " String pentru a căuta. SearchChar = "P" " Căutați "P". " O comparație textuală începând cu poziția 4. Returnează 6. MyPos = Instr( 4, Căutare șir , CăutareChar , 1) " O comparație binară începând cu poziția 1. Returnează 9. MyPos = Instr( 1, Căutare șir , CăutareChar , 0) „Comparația este binară în mod implicit” (ultimul argument este omis). MyPos = Instr( Căutare șir , CăutareChar ) " Returnează 9. MyPos = Instr( 1, Căutare șir , "W" ) „Returnează 0.

Adesea, liniile dintr-un program conțin caractere inutile la sfârșitul sau la începutul rândului, care trebuie eliminate deoarece spațiile străine de început sau de final dintr-o linie pot cauza probleme cu programul.

VBA are trei funcții concepute pentru a elimina spațiile de început și de final dintr-un șir: LTrim, RTrim, Trim. Rețineți că aceste funcții nu modifică de fapt șirul original, ci mai degrabă returnează o copie a șirului cu spațiile suplimentare eliminate.

Determinarea lungimii șirului

De obicei, trebuie să cunoașteți lungimea unui șir atunci când formatați mesaje pentru un utilizator sau când formatați datele șir introduse printr-o procedură într-o foaie de lucru Excel sau un document Word. VBA folosește funcția în aceste scopuri Len. În lista de mai jos, există două spații între paranteze și cuvânt.



Ar trebui să fii atent cu șirurile de lungime fixă. Deoarece un șir de lungime fixă ​​are întotdeauna aceeași lungime, funcția Len returnează întotdeauna lungimea declarată a șirului, indiferent de lungimea reală a șirului. De exemplu, dacă variabila șir de lungime fixă ​​StrokeName, care are 15 caractere, conține de fapt cuvântul „soare”, atunci funcția Len(StrokeName) va returna rezultatul 15. În acest caz, pentru a afla lungimea reală a șirului (în cazul nostru - 6), trebuie să utilizați următoarea combinație de funcții: Len(Trim(StrokeName)).

Compararea și căutarea șirurilor

VBA are două funcții care vă ajută să comparați șirurile de caractere: StrComp, InStr.

Funcția StrComp

Sintaxă


StrComp(Șir1, Șir2[, Compara])


String1, String2 - orice două expresii șir care trebuie comparate.

Când se execută StrComp, se returnează una dintre următoarele valori:

  • -1 dacă String1 este mai mic decât String2;
  • 0 dacă String1 și String2 sunt egale;
  • 1 dacă String1 este mai mare decât String2.


Lista de mai sus compară două șiruri în modul text: „Șir implicit” și „Șir implicit”. Rezultatul comparației = 1, adică „Șirul implicit” este mai mare decât „Șirul implicit”.

Experimentați cu o varietate de șiruri pentru a înțelege mai bine cum funcționează funcția StrComp.

Funcția InStr

Funcția InStr vă permite să determinați dacă un șir conține un alt șir.

Sintaxă


StrComp(Șir1, Șir2[, Compara])


String1, String2 - orice expresii șir valide. Funcția verifică dacă String1 este conținut în String2.

Comparare este un argument opțional care poate fi oricare dintre următoarele constante predefinite (dacă este omisă, se utilizează setarea curentă Option Compare):

  • vbBinaryCompare - comparație binară a două șiruri de caractere;
  • vbTextCompare - comparație text a două șiruri de caractere;
  • vbDatabaseCompare - utilizat numai în Microsoft Access.

Start - un argument opțional, este o expresie numerică și specifică poziția caracterului din String1 de la care ar trebui să înceapă verificarea.


InStr returnează un număr care indică poziția caracterului în String1 unde a fost găsit String2. Dacă InStr nu găsește String2 în String1, atunci este returnat 0. Dacă String1 (sau String2) este Null, atunci funcția returnează și Null.



Divizarea liniei

Uneori devine necesar să împărțiți un șir în părțile sale componente. În VBA, trei funcții rezolvă această problemă: Stânga, dreapta, mijlocul.

Funcția stângă

Sintaxă


Stânga (șir, lungime)


Funcția returnează o copie a șirului de caractere, începând cu primul caracter și incluzând numărul de caractere specificat de Lungime. Dacă Length este un număr mai mare decât lungimea reală a șirului, atunci întreaga expresie String este returnată.

Funcția corectă

Sintaxă


Dreapta (șir, lungime)


String este orice expresie șir validă.

Lungime - orice valoare numerică.


Funcția returnează o copie a șirului, începând cu ultimul caracter și incluzând, de la dreapta la stânga, numărul de caractere specificat de Lungime. Dacă Length este un număr mai mare decât lungimea reală a șirului, atunci întreaga expresie String este returnată. Funcția Right copiează întotdeauna caracterele de la sfârșitul unui șir până la început.

Funcția mijlocie

Sintaxă


Mid (Șir, Start, [, Lungime])


String este orice expresie șir validă.

Lungime, Start - orice valoare numerică.


Funcția Mid returnează o copie a șirului începând de la poziția caracterului din șirul specificat de argumentul Start. Argumentul opțional Lungime specifică numărul de caractere de copiat de la String la Mid. Dacă Start conține un număr mai mare decât lungimea reală a șirului, atunci este returnat un șir gol.



Caractere care nu pot fi introduse de la tastatură

Se întâmplă adesea să fie nevoie să introduceți un caracter pentru care nu există nicio tastă pe tastatură (de exemplu, un simbol de drepturi de autor). O altă situație este atunci când trebuie să includeți un caracter de serviciu VBA într-un șir (cel mai frecvent caz este includerea de ghilimele duble).

Pentru a include caractere într-un șir care nu pot fi introduse de la tastatură sau care au o semnificație specială pentru VBA, utilizați funcția Chr.

Sintaxă


Chr (cod de caractere)


Cod de caractere - orice expresie numerică care este un cod valid pentru setul de caractere utilizat de un computer. Trebuie să fie un număr întreg între 0 și 255.

Funcția Chr ia un singur cod de caracter ca argument și returnează un șir care conține caracterul corespunzător codului respectiv. Această funcție este utilizată în listele de mai sus pentru a alimenta o linie atunci când se afișează un mesaj pe ecranul Chr (13).


Deoarece caracterele folosite pentru a începe o nouă linie sunt atât de importante la formatarea mesajelor și a altor date șir manipulate de rutinele VBA, există mai multe constante predefinite pentru aceste caractere pentru a evita necesitatea utilizării funcției Chr:

  • vbCr este un caracter de întoarcere la cărucior. Echivalent cu Chr(13)
  • vbLf - caracter decalat cu o linie. Echivalent cu Chr(10)
  • vbCrLf - retur car + caracter offset cu o linie. Echivalent cu Chr(13)+ Chr(10)
  • vbTab - caracter de tab. Chr(9) echivalent

Pentru a vizualiza lista cod-simbol trebuie să deschideți sistemul de ajutor VBA și la cerere "seturi de caractere" Va fi prezentat tabelul corespunzător.



Formatarea valorilor datelor

Foarte des, dintr-un motiv sau altul, formatul de date la ieșirea unui program nu ni se potrivește pe deplin. Această problemă este rezolvată de funcție Format.

Funcția Format VBA este identică cu funcția Format din Excel și folosește aceiași substituenți de formatare a datelor.

Sintaxă


Format (Expresia [, Format[, Prima zi a săptămânii [, Prima săptămână a anului]]])


Expresie - orice expresie validă (argument obligatoriu).

Formatul este o expresie validă a unui format numit sau definit de utilizator.

Firstdayofweek este o constantă care specifică prima zi a săptămânii.

Firstweekofyear - o constantă care definește prima săptămână a anului.


Pentru a utiliza funcția Format, trebuie să fie setați un format predefinit, sau creați o imagine cu un anumit format, folosind caractere substituent.


Formate denumite pentru utilizare cu funcția Format

Format numit Acțiune
Data generală Formatează informații despre dată și oră într-un număr secvenţial de dată utilizând setările de format de dată și oră pentru acest computer.
Întâlnire lungă Formatează numai porțiunea dată într-o dată secvențială, utilizând setările de format de dată lungă ale computerului.
Data medie Formatează numai porțiunea dată ca dată secvențială, utilizând setările pentru formatul mediu de dată ale computerului.
Întâlnire scurtă Formatează numai partea care conține data într-o dată secvențială, utilizând setările computerului pentru formatul de dată scurtă.
Perioadă lungă de timp Formatează doar porțiunea de timp într-o dată secvențială, utilizând setările de format de lungă durată ale computerului.
Timp mediu Formatează doar porțiunea de timp într-o dată secvențială, utilizând setările de format de oră medie ale computerului.
Timp scurt Formatează numai porțiunea de timp într-o dată secvențială, utilizând setările computerului pentru formatul de scurtă durată.
Număr general Formatează un număr într-un șir fără caractere speciale.
Valută Formatează un număr cu un simbol valutar, un separator de mii și doar două zecimale.
Fix Formatează un număr astfel încât să existe întotdeauna cel puțin o cifră înaintea virgulei zecimale și cel puțin două cifre după aceasta.
Standard Formatează un număr cu un separator de mii astfel încât să existe cel puțin o cifră înaintea separatorului zecimal și cel puțin două cifre după acesta.
La sută Formatează un număr ca procent înmulțindu-l cu 100 și adăugând un simbol procentual.
Științific Formatează un număr în format exponențial obișnuit.
Da nu Șirul „Da” este returnat dacă numărul formatat este diferit de zero, în caz contrar - „Nu”.
Adevarat fals Șirul „True” este returnat dacă numărul formatat este diferit de zero, în caz contrar - „False”.
Pornit/Oprit Șirul „On” este returnat dacă numărul formatat este diferit de zero, în caz contrar - „Off”.

Substituenți pentru crearea de formate personalizate

Caracter substituent Acțiune (folosind numărul 1234.45 ca exemplu)
0 Un caracter numeric care afișează o cifră dacă una se află în acea poziție sau 0 dacă nu este. Puteți folosi simbolul 0 pentru a afișa zerouri de început pentru numere întregi și zerouri de la urmă pentru zecimale: 00000.000 afișează 01234.450
# Un simbol numeric afișează o cifră dacă există una în această poziție, altfel nu afișează nimic. Caracterul de umplere # este echivalent cu 0, cu excepția faptului că zerourile la început și la urmă nu sunt afișate: #####.### afișează 1234.45
$ Afișează semnul dolarului: $###, ###.00 afișează 1.234,45 USD
. Caracter substituent zecimal, afișează punctul zecimal la poziția desemnată în șirul de caractere substituent 0: #.##.## afișează 1234.45
% Simbol procent, înmulțește valoarea cu 100 și adaugă un semn de procent în poziția indicată de substituenții 0:#.#0,00% afișează numărul 0,12345 ca 12,35% (se produce rotunjirea)
, Separator de mii, adaugă virgule ca separatori de mii în șiruri de substituent 0 și #: ###,###,###.00 afișează 1.234,45
e-e- Afișează valoarea în format exponențial cu un exponent numai pentru valori negative: #.####E-00 afișează 1.23445E03
E+ e+ Afișează valoarea în format exponențial cu un exponent atât pentru valorile negative, cât și pentru cele pozitive: #.####E+00 afișează 1.23445E+03
/ Separă ziua, luna și anul pentru formatarea valorilor datei.
m Specifică modul de afișare a lunilor în date: m afișează 1, mm - 01, mmm - ianuarie, mmmm - ianuarie
d Specifică modul de afișare a zilelor în date: d afișează 1, dd - 01, ddd - duminica, dddd - duminică
y Afișează ziua anului ca număr de la 1 la 366
da Specifică modul de afișare a anilor în date: aa - 66, aaaa - 1966
q Afișează trimestrul anului ca un număr de la 1 la 4
w Afișează ziua săptămânii ca număr (1 - duminică)
ww Afișează săptămâna anului ca un număr de la 1 la 54
: Separă orele, minutele și secundele în valorile formatului de timp: hh:mm:ss - 01:01:01, h:m:s - 1:1:1
h Specifică modul de afișare a orelor: hh - 01, h - 1
m Specifică modul de afișare a minutelor: mm - 01, m - 1
s Specifică modul de afișare a secundelor: ss - 01, s - 1
AM PM Afișează ora în format de 12 ore cu AM sau PM adăugate
@ Un substituent de caracter care afișează un spațiu dacă nu există niciun caracter care se potrivește în șirul formatat.
Afișează toate caracterele cu majuscule.
> Afișează toate caracterele cu litere mici.
Chr

Funcția Chr

Chr(CharCode)
Chr$(CharCode)
ChrB(CharCode)
ChrW(CharCode)

Funcţie Chr(Ch aracte r) vă permite să obțineți un caracter după valoarea codului său numeric ANSI sau Unicode

Valoare returnată

Funcții Chr, ChrB, ChrW returnează o valoare a subtipului String de tip Variant care conține caracterul corespunzător codului de caracter ANSI sau Unicode specificat. Funcții Chr$, ChrB$, ChrW$ returnează în mod corespunzător o valoare de tip String

Notă

ChrȘi Chr$ returnează un caracter prin codificarea ANSI
ChrBȘi ChrB$întoarcere un singur octet linia
ChrW returnează un caracter Unicode, totuși pe sistemele non-Unicode comportamentul său este similar Chr
Utilizați în parametru CharCode valorile mai mari de 255 generează erori de rulare 5: Apel de procedură sau argument nevalid sau 6: Depășire

Opțiuni CharCode Argumentul necesar este o valoare Long care specifică caracterul. De obicei funcția Chr utilizat la inserarea caracterelor neprintabile în șiruri de text (retur car, avans de linie, tabulator etc.). Codurile 0-31 corespund caracterelor de control ASCII standard. De exemplu, Chr(10) returnează caracterul newline Exemplu Dim retval retval = Chr(65) Debug.Print retval " returnează A Categorie

În secțiunea despre întrebarea Oameni, vă rugăm să explicați în detaliu ce înseamnă funcția ord(x) și inversul său chr(x) în Pascal? dat de autor Nick Brown cel mai bun răspuns este Există un tabel special de caractere (cod ASCII extins, când fiecare caracter are o valoare numerică, în total sunt 255 de valori în tabel, adică fiecărui caracter i se atribuie un număr,
chr(0..254) convertește un număr (un octet) în caracterul căruia îi aparține acest număr, de exemplu chr(71) rezultatul va fi litera „G”, de asemenea, apăsând tastele de pe tastatură produce propriul cod, acesta este exact codul când este plasat în acest operator și va da rezultatul ce tastă este apăsată, acesta sunt eu de exemplu. Dar operatorul ORD(x) face acest proces în ordine inversă.
Setăm caracterul valorii și obținem un număr de la 0 la 254 (un octet)
de exemplu ORD("G") ne va da rezultatul 71 (în format zecimal)
Asta e tot ce pare!!!

Răspuns de la Katyonachik[incepator]
E simplu, într-adevăr)
Ord ("X") - va returna codul caracterului X din tabelul ASKII.
Rezultatul funcției inverse va fi un simbol care corespunde codului introdus (din care este preluată funcția) din același tabel ASCII.


Răspuns de la Juri[guru]
Acestea nu sunt funcții reciproce!
Funcția Ord returnează valoarea ordinală a unui tip enumerat.
Numărătoarea începe de la zero.
Pentru tipul de octet, funcția va returna valoarea reală - numărul ordinal coincide cu valoarea.
Pentru tipul char, funcția va returna numărul de serie al caracterului, care (numărul este aleatoriu) coincide cu codul ASCII.
Funcția chr returnează caracterul cu codul ASCII dat.
Concluzie: Pur și simplu, în ceea ce privește valorile simbolice, ele funcționează într-adevăr ca invers unul față de celălalt...
Prin urmare, putem spune că funcția ord este inversul funcției chr, dar nu și invers - funcția chr nu este inversul funcției ord, deoarece domeniul de aplicare al funcției ord nu se limitează la lucrul cu simboluri!