Excel vba-functies voor het werken met tekenreeksen. VBA-functies voor het werken met tekst. String-bewerkingen

De letters 'A' tot 'Z' staan ​​in oplopende volgorde, dat wil zeggen dat elke letter een ordinale waarde heeft die overeenkomt met zijn plaats in het alfabet. Deze ordinale waarde kan worden verkregen met behulp van de functie ord.
ord(uitdrukking)– retourneert het serienummer van een teken of waarde van een ander discreet type.
ord(‘ik’), ord(‘J’). Resultaat: 73, 74 (ASCII-code)

Het serienummer van de brief is afhankelijk van de gebruikte code. Maar ongeacht de gebruikte code volgen de ordinale waarden van de letters in oplopende volgorde:
orde('A')< ord(‘B’) < ord(‘C’) … < ord(‘Z’)
hoewel ord(‘Z’) – ord(‘A’) niet noodzakelijk gelijk is aan 25. Hetzelfde geldt voor kleine letters:
orde('a')< ord(‘b’) < ord(‘c’) … < ord(‘z’)

Er is geen definitief verband tussen hoofdletters en corresponderende kleine letters, maar u kunt er gerust op vertrouwen dat ord('a') - ord('A') dezelfde betekenis heeft als ord('z') - ord('Z ').

Ongeacht de gebruikte code zijn de ordinale waarden van de cijfers ook in oplopende volgorde gerangschikt:
rang('0')< ord(‘1’) < ord(‘2’) … < ord(‘9’)
en bovendien verschillen de ordinale waarden van aangrenzende cijfers met 1; dus ord(‘9’) – ord(‘0’) = 9. Hieruit volgt dat de numerieke waarde van het cijfer d (char-type) als volgt kan worden verkregen
waarde:= ord(d) – ord(‘0’).

Pascal ondersteunt typen teken, geheel getal enz. Daarnaast heeft de programmeur het recht om andere typen te definiëren door een reeks constanten op te sommen. Het type dat door de opsomming is opgegeven, is bijvoorbeeld:
type dagen = (ma, di, wo, do, vr, za, zo);

Constanten van het door de opsomming gespecificeerde type hebben op nul gebaseerde ordinale waarden. Ord(mon) retourneert bijvoorbeeld 0, ord(zon) retourneert 6; ma< sun.

Type Booleaans– opgesomd type, dat automatisch wordt ingesteld als
type boolean = (onwaar, waar);
dus ord(false) geeft 0, ord(true) geeft 1; vals< true.

chr-functie

Terugkeren voor ord is een functie Chr.
chr(expressie)– retourneert een teken waarvan de ordinale waarde wordt gespecificeerd door de parameter; een onjuiste waarde resulteert in een fout.
chr(73), chr(74). Resultaat: I, J (ASCII-codering)
chr(1000). Resultaat: fout

Functies succ en pred

Ordinale waarden zijn op zichzelf zelden nodig. Vaak is het voldoende om het volgende of vorige element in een bepaalde volgorde te kennen. De functies dienen dit doel succ En voor.
succ(expressie)– retourneert het element dat volgt op het element dat als parameter is opgegeven.
succ(‘A’), succ(‘0’), succ(0). Resultaat: B, 1 (teken), 1 (getal)
succ(vals). Resultaat: waar
pred(uitdrukking)– retourneert het element dat voorafgaat aan het element dat als parameter is opgegeven.
pred(‘Z’), pred(‘9’), pred(9). Resultaat: Y, 8 (teken), 8 (getal)
pred(waar). Resultaat: vals

Deze twee functies kunnen worden gebruikt om de volgende en voorafgaande elementen te bepalen voor een type dat is gespecificeerd door een opsomming. Laten we het type dagen nemen dat eerder is gedefinieerd: pred(sun) retourneert sat, succ(mon) retourneert di.

Het zou echter onjuist zijn om writeln(pred(sun)) te schrijven, omdat de elementen van een opgesomd type niet kunnen worden gelezen of afgedrukt, wat uiteraard het voordeel van het gebruik van dergelijke typen vermindert. De beste benadering van writeln(pred(sun)) is de instructie writeln(ord(pred(sun))), die het getal 5 (de ordinale waarde van sat) afdrukt.

In dit artikel analyseren we het werken met strings in VBA met behulp van de voorbeelden van de functies InStr, LCASE, UCase, Left, Right, Mid, LTrim, RTrim, Trim, Len, Replace, Space, StrComp, String, StrReverse.

Tekenreeksen zijn een reeks tekens die kunnen bestaan ​​uit alfabetten, cijfers, speciale tekens of allemaal. Een variabele wordt een string genoemd als deze tussen dubbele aanhalingstekens staat "".

Syntaxis

variabelenaam = "string"

Voorbeelden

String-functies

Er zijn vooraf gedefinieerde VBA String-functies waarmee ontwikkelaars efficiënt met tekenreeksen kunnen werken. Hieronder volgen de String-methoden die worden ondersteund in VBA. Klik op elke methode voor meer informatie.

Functienaam en beschrijving

InStr

De functie InStr retourneert het eerste exemplaar van een tekenreeks binnen een andere tekenreeks. Het zoeken gebeurt van links naar rechts.

Syntaxis

InStr(string1,string2[,vergelijken])

Parameterbeschrijving

  • Start is een optionele parameter. Specificeert de startpositie voor de zoekopdracht. Het zoeken begint vanaf de eerste positie van links naar rechts.

voorbeeld

Private Sub Constant_demo_Click() Dim Var As Variant Var = "Microsoft VBScript" MsgBox ("Regel 1: " & InStr(1, Var, "s")) MsgBox ("Regel 2: " & InStr(7, Var, "s " ")) MsgBox ("Regel 3: " & InStr(1, Var, "f", 1)) MsgBox ("Lijn 4: " & InStr(1, Var, "t", 0)) MsgBox ("Lijn 5 : " & InStr(1, Var, "i")) MsgBox ("Regel 6: " & InStr(7, Var, "i")) MsgBox ("Regel 7: " & InStr(Var, "VB") ) Einde sub

Lijn 1:6
Regel 2: 0
Regel 3:8
Regel 4:9
Regel 5:2
Lijn 6: 16
Lijn 7: 11

Retourneert het eerste exemplaar van de opgegeven subtekenreeks. Het zoeken gebeurt van links naar rechts.

InStrRev

De functie InStrRev retourneert het eerste exemplaar van een tekenreeks binnen een andere tekenreeks. Er wordt gezocht van rechts naar links.

Syntaxis

InStrRev(tekenreeks1,tekenreeks2[,begin,])

Parameterbeschrijving

  • String1 is de vereiste parameter. Zoekreeks.
  • String2 is de vereiste parameter. De tekenreeks waarnaar moet worden gezocht naar String1.
  • Start is een optionele parameter. Specificeert de startpositie voor de zoekopdracht. Het zoeken begint vanaf de eerste positie van rechts naar links.
  • Vergelijken - Optionele parameter. Specificeert een tekenreeksvergelijking. Deze kan de volgende waarden aannemen.
  • 0 = vbBinaryCompare - voert een binaire vergelijking uit (standaard)
  • 1 = vbTextCompare - voert tekstvergelijking uit

voorbeeld

Voeg een knop toe en stel de volgende functie in.

Private Sub Constant_demo_Click() var = "Microsoft VBScript" msgbox("Regel 1: " & InStrRev(var,"s",10)) msgbox("Regel 2: " & InStrRev(var,"s",7)) msgbox ("Regel 3: " & InStrRev(var,"f",-1,1)) msgbox("Regel 4: " & InStrRev(var,"t",5)) msgbox("Regel 5: " & InStrRev( var,"i",7)) msgbox("Regel 6: " & InStrRev(var,"i",7)) msgbox("Regel 7: " & InStrRev(var,"VB",1)) End Sub

Na het uitvoeren van het bovenstaande script produceert het de volgende uitvoer.

Lijn 1:6
Lijn 2: 6
Regel 3:8
Lijn 4:0
Regel 5:2
Regel 6:2
Lijn 7:0

Retourneert het eerste exemplaar van de opgegeven subtekenreeks. Er wordt gezocht van rechts naar links.

LCASE

De LCase-functie retourneert een tekenreeks na het converteren van de invoertekenreeks naar kleine letters.

Syntaxis

Lcase(tekenreeks)

voorbeeld

Private Sub Constant_demo_Click() var = "Microsoft VBScript" msgbox("Lijn 1: " & LCase(var)) var = "MS VBSCRIPT" msgbox("Lijn 2: " & LCase(var)) var = "microsoft" msgbox( "Regel 3: " & LCase(var)) Einde sub

Regel 1: microsoft vbscript
Regel 2: ms vbscript
Regel 3: microsoft

Retourneert de kleine letters van de opgegeven tekenreeks.

UCase

De UCase-functie retourneert een tekenreeks na het converteren van de invoertekenreeks naar UPPER-letters.

Syntaxis

UCase(tekenreeks)

voorbeeld

Voeg een knop toe en plaats de volgende functie erin.

Private Sub Constant_demo_Click() var = "Microsoft VBScript" msgbox("Lijn 1: " & UCase(var)) var = "MS VBSCRIPT" msgbox("Lijn 2: " & UCase(var)) var = "microsoft" msgbox( "Regel 3: " & UCase(var)) Einde sub

Na het uitvoeren van het bovenstaande script produceert het de volgende uitvoer.

Regel 1: MICROSOFT VBSCRIPT
Regel 2: MS VBSCRIPT
Regel 3: MICROSOFT

Retourneert de hoofdletters van de opgegeven tekenreeks.

Links

De functie Links retourneert het opgegeven aantal tekens vanaf de linkerkant van de gegeven invoertekenreeks.

Syntaxis

Links(String, Lengte)

Parameterbeschrijving

  • Tekenreeks is een vereiste parameter. Een invoertekenreeks waaruit het opgegeven aantal tekens aan de linkerkant moet worden geretourneerd.
  • Lengte is de vereiste parameter. Een geheel getal dat het aantal tekens specificeert dat moet worden geretourneerd.

voorbeeld

Voeg een knop toe en voeg de volgende functie toe.

Private Sub Constant_demo_Click() Dim var as Variant var = "Microsoft VBScript" msgbox("Regel 1: " & Left(var,2)) var = "MS VBSCRIPT" msgbox("Regel 2: " & Left(var,5) ) var = "microsoft" msgbox("Regel 3: " & Left(var,9)) End Sub

Wanneer u de bovenstaande functie uitvoert, produceert deze de volgende uitvoer.

Lijn 1: Mi
Lijn 2: MS VB
Regel 3: microsoft

Retourneert het opgegeven aantal tekens vanaf de linkerkant van een tekenreeks.

Rechts

De functie Right retourneert het opgegeven aantal tekens vanaf de rechterkant van de gegeven invoertekenreeks.

Syntaxis

Rechts (snaar, lengte)

Parameterbeschrijving

  • Tekenreeks is een vereiste parameter. Een invoertekenreeks waaruit het opgegeven aantal tekens aan de rechterkant moet worden geretourneerd.
  • Lengte is de vereiste parameter. Een geheel getal dat het aantal tekens specificeert dat moet worden geretourneerd.

voorbeeld

Voeg een knop toe en voeg de volgende functie toe.

Private Sub Constant_demo_Click() var = "Microsoft VBScript" msgbox("Regel 1: " & Rechts(var,2)) var = "MS VBSCRIPT" msgbox("Lijn 2: " & Rechts(var,5)) var = " microsoft" msgbox("Regel 3: " & Right(var,9)) Einde sub

Wanneer u de bovenstaande functie uitvoert, produceert deze de volgende uitvoer.

Regel 1:pt
Regel 2: CRIPT
Regel 3: microsoft

Retourneert het opgegeven aantal tekens vanaf de rechterkant van een tekenreeks.

Midden

De Mid-functie retourneert een opgegeven aantal tekens uit een bepaalde invoertekenreeks.

Syntaxis

Midden(String,begin[,Lengte])

Parameterbeschrijving

  • Tekenreeks is een vereiste parameter. Een invoertekenreeks die het aantal tekens specificeert dat moet worden geretourneerd.
  • Start - vereiste parameter. Een geheel getal dat de beginpositie van de lijn specificeert.
  • Lengte is een optionele parameter. Een geheel getal dat het aantal tekens specificeert dat moet worden geretourneerd.

Voeg een knop toe en voeg de volgende functie toe.

Private Sub Constant_demo_Click() Dim var as Variant var = "Microsoft VBScript" msgbox("Regel 1: " & Mid(var,2)) msgbox("Regel 2: " & Mid(var,2,5)) msgbox(" Regel 3: " & Mid(var,5,7)) Einde Sub

Wanneer u de bovenstaande functie uitvoert, produceert deze de volgende uitvoer.

Regel 1: Microsoft VBScript
Regel 2: icros
Regel 3: osoft V

Retourneert een opgegeven aantal tekens uit een tekenreeks op basis van de opgegeven parameters.

LTrim

De Ltrim-functie verwijdert spaties aan de linkerkant van een string.

Syntaxis

LTrim(tekenreeks)

voorbeeld

Voeg een knop toe en voeg de volgende functie toe.

Private Sub Constant_demo_Click() Dim var as Variant var = " Microsoft VBScript" msgbox "Na Ltrim: " & LTrim(var) End Sub

Wanneer u de functie uitvoert, produceert deze de volgende uitvoer.

Na Ltrim: Microsoft VBScript

Retourneert een tekenreeks na het verwijderen van spaties aan de linkerkant van de opgegeven tekenreeks.

Rtrim

De Rtrim-functie verwijdert spaties aan de rechterkant van een string.

Syntaxis

RTrim(String)

voorbeeld

Voeg een knop toe en voeg de volgende functie toe.

Private Sub Constant_demo_Click() Dim var as Variant var = "Microsoft VBScript " msgbox("Na Rtrim: " & RTrim(var)) End Sub

Wanneer u de bovenstaande functie uitvoert, produceert deze de volgende uitvoer.

Na Rtrim: Microsoft VBScript

Retourneert een tekenreeks na het verwijderen van spaties aan de rechterkant van de opgegeven tekenreeks.

Trimmen

De Trim-functie verwijdert zowel voor- als achterliggende witruimte uit een gegeven invoertekenreeks.

Syntaxis

Trimmen (tekenreeks)

voorbeeld

Voeg een knop toe en voeg de volgende functie toe.

Private Sub Constant_demo_Click() var = "Microsoft VBScript" var = "Microsoft VBScript" msgbox ("Na Trim: " & Trim(var)) Sub beëindigen

Wanneer u de bovenstaande functie uitvoert, produceert deze de volgende uitvoer.

Na het trimmen: Microsoft VBScript

Retourneert een tekenreekswaarde na het verwijderen van zowel voorloop- als volgspaties.

Len

De Len-functie retourneert de lengte van de gegeven invoertekenreeks, inclusief spaties.

Syntaxis

Len(String)

voorbeeld

Voeg een knop toe en voeg de volgende functie toe.

Private Sub Constant_demo_Click() Dim var1 als variant Dim var2 als variant var1 ="Microsoft VBScript" msgbox("Lengte van var1 is: " & Len(var1)) var2 = " Microsoft VBScript " msgbox ("Lengte van var2 is: " & Len(var2)) Einde Sub

Wanneer u de bovenstaande functie uitvoert, produceert deze de volgende uitvoer.

Lengte van var1 is: 18
Lengte van var2 is: 36

Geeft de lengte van de gegeven string terug.

Vervangen

De functie Replace vervangt een opgegeven deel van een tekenreeks een opgegeven aantal keren door een opgegeven tekenreeks.

Syntaxis

Replace(tekenreeks,vinden,vervangendoor[,start[,tel[,vergelijk]]])

Parameterbeschrijving

  • Tekenreeks is een vereiste parameter. De invoertekenreeks waarnaar moet worden gezocht om te vervangen.
  • Zoeken - vereiste parameter. Het deel van de tekenreeks dat wordt vervangen.
  • Replacewith is een vereiste parameter. De vervangende tekenreeks die wordt vervangen door de find-parameter.
  • Start is een optionele parameter. Specificeert de startpositie van waaruit de tekenreeks moet worden gezocht en vervangen. De standaardwaarde is 1.
  • Aantal is een optionele parameter. Specificeert het aantal keren dat de vervanging moet worden uitgevoerd.
  • Vergelijken - Optionele parameter. Specificeert de te gebruiken vergelijkingsmethode. De standaardwaarde is 0.
  • 0 = vbBinaryCompare - voert een binaire vergelijking uit
  • 1 = vbTextCompare - voert tekstvergelijking uit

voorbeeld

Private Sub Constant_demo_Click() Dim var as Variant var = "Dit is VBScript-programmering" "VBScript moet worden vervangen door MS VBScript msgbox("Regel 1: " & Replace(var,"VBScript","MS VBScript")) "VB naar worden vervangen door vb msgbox("Regel 2: " & Replace(var,"VB","vb")) ""is" vervangen door ## msgbox("Regel 3: " & Replace(var,"is"," ##")) ""is" vervangen door ## negeert de tekens vóór de eerste keer dat ze voorkomen msgbox("Regel 4: " & Replace(var,"is","##",5)) ""s" wordt vervangen door ## voor de volgende 2 exemplaren msgbox("Regel 5: " & Replace(var,"s","##",1,2)) ""r" wordt vervangen door ## voor tekstuele vergelijking van alle exemplaren. msgbox("Regel 6: " & Replace(var,"r","##",1,-1,1)) ""t" wordt vervangen door ## voor alle binaire vergelijkingen msgbox("Regel 7: " & Replace(var,"t","##",1,-1,0)) Einde sub

Wanneer u de bovenstaande functie uitvoert, produceert deze de volgende uitvoer.

Regel 1: Dit is MS VBScript-programmering
Regel 2: Dit is vbScript-programmering
Regel 3: Th## ## VBScript-programmering
Regel 4: ## VBScript-programmering
Regel 5: Thi## i## VBScript-programmering
Regel 6: Dit is VBSc##ipt P##og##amming
Regel 7: Dit is VBScrip##-programmering

Retourneert een tekenreeks nadat een tekenreeks is vervangen door een andere tekenreeks.

Ruimte

De functie Space vult een string met een specifiek aantal spaties.

Syntaxis

spatie(nummer)

Parameterbeschrijving

Nummer - vereiste parameter. Het aantal spaties dat we aan deze tekenreeks willen toevoegen.

voorbeeld

Private Sub Constant_demo_Click() Dim var1 als Variant var1 = "Microsoft" Dim var2 als Variant var2 = "VBScript" msgbox(var1 & Space(2)& var2) End Sub

Wanneer u de bovenstaande functie uitvoert, produceert deze de volgende uitvoer.

Microsoft VBScript

Vult een tekenreeks met het opgegeven aantal spaties.

StrComp

De StrComp-functie retourneert een geheel getal na vergelijking van twee gegeven tekenreeksen. Het kan een van de drie waarden -1, 0 of 1 retourneren op basis van de invoerreeksen om te vergelijken.

  • Als String1 kleiner is dan String2, retourneert StrComp -1
  • Als String1 gelijk is aan String2, retourneert StrComp 0
  • Als String1 groter is dan String2, retourneert StrComp 1

Syntaxis

StrComp(tekenreeks1,reeks2[,vergelijken])

Parameterbeschrijving

  • String1 is de vereiste parameter. De eerste tekenreeksexpressie.
  • String2 is de vereiste parameter. Tweede tekenreeksexpressie.
  • Vergelijken - Optionele parameter. Specificeert een tekenreeksvergelijking. Deze kan de volgende waarden aannemen.
  • 0 = vbBinaryCompare - voert een binaire vergelijking uit (standaard)
  • 1 = vbTextCompare - voert tekstvergelijking uit

voorbeeld

Voeg een knop toe en voeg de volgende functie toe.

Private Sub Constant_demo_Click() Dim var1 als variant msgbox("Lijn 1:" & StrComp("Microsoft", "Microsoft")) msgbox("Lijn 2:" &StrComp("Microsoft", "MICROSOFT")) msgbox("Lijn 3:" &StrComp("Microsoft", "MiCrOsOfT")) msgbox("Regel 4:" &StrComp("Microsoft", "MiCrOsOfT",1)) msgbox("Lijn 5:" &StrComp("Microsoft", "MiCrOsOfT" ,0)) Einde sub

Wanneer u de bovenstaande functie uitvoert, produceert deze de volgende uitvoer.

Lijn 1:0
Lijn 2:1
Regel 3:1
Lijn 4:0
Regel 5:1

Retourneert een geheel getal na vergelijking van twee opgegeven tekenreeksen.

Snaar

De String-functie vult een string met het opgegeven teken voor het opgegeven aantal keren.

Syntaxis

Tekenreeks(nummer,teken)

Parameterbeschrijving

  • Nummer - vereiste parameter. Een geheel getal dat een bepaald aantal keren wordt herhaald op basis van de karakterparameter.
  • Het symbool is de vereiste parameter. Een tekenwaarde die een bepaald aantal keren moet worden herhaald.

voorbeeld

Voeg een knop toe en voeg de volgende functie toe.

Private Sub Constant_demo_Click() msgbox("Lijn 1:" & String(3,"$")) msgbox("Lijn 2:" & String(4,"*")) msgbox("Lijn 3:" & String(5.100 )) msgbox("Regel 4:" & String(6,"ABCDE")) End Sub

Wanneer u de bovenstaande functie uitvoert, produceert deze de volgende uitvoer.

Vaak bevatten regels in een programma onnodige spaties aan het einde of begin van de regel die moeten worden verwijderd omdat Vreemde voor- of achterspaties in een regel kunnen problemen met het programma veroorzaken.

VBA heeft drie functies die zijn ontworpen om voorloop- en volgspaties uit een tekenreeks te verwijderen: LTrim, RTrim, Trim. Houd er rekening mee dat deze functies de originele tekenreeks niet daadwerkelijk wijzigen, maar eerder een kopie van de tekenreeks retourneren waaruit de extra spaties zijn verwijderd.

Snaarlengte bepalen

Normaal gesproken moet u de lengte van een tekenreeks weten bij het opmaken van berichten voor een gebruiker of bij het opmaken van tekenreeksgegevens die via een procedure zijn ingevoerd in een Excel-werkblad of Word-document. VBA gebruikt de functie voor deze doeleinden Len. In de onderstaande lijst staan ​​er twee spaties tussen de haakjes en het woord.



Je moet voorzichtig zijn met snaren met een vaste lengte. Omdat een tekenreeks met een vaste lengte altijd dezelfde lengte heeft, retourneert de functie Len altijd de aangegeven lengte van de tekenreeks, ongeacht de werkelijke lengte van de tekenreeks. Als de tekenreeksvariabele StrokeName met een vaste lengte, die 15 tekens lang is, bijvoorbeeld in werkelijkheid het woord 'zon' bevat, dan wordt de functie Len(BeroerteNaam) zal het resultaat 15 retourneren. Om in dit geval de werkelijke lengte van de string te achterhalen (in ons geval - 6), moet je de volgende combinatie van functies gebruiken: Len(Trim(StrokeName)).

Tekenreeksen vergelijken en doorzoeken

VBA heeft twee functies waarmee u tekenreeksen kunt vergelijken: StrComp, InStr.

Functie StrComp

Syntaxis


StrComp(String1, String2[, Vergelijken])


String1, String2 - twee willekeurige tekenreeksexpressies die moeten worden vergeleken.

Wanneer StrComp wordt uitgevoerd, wordt een van de volgende waarden geretourneerd:

  • -1 als String1 kleiner is dan String2;
  • 0 als String1 en String2 gelijk zijn;
  • 1 als String1 groter is dan String2.


De bovenstaande lijst vergelijkt twee tekenreeksen in de tekstmodus: "Default String" en "Default String". Vergelijkingsresultaat = 1, d.w.z. 'Standaardreeks' is groter dan 'Standaardreeks'.

Experimenteer met verschillende tekenreeksen om beter te begrijpen hoe de StrComp-functie werkt.

Functie InStr

Met de functie InStr kunt u bepalen of een string een andere string bevat.

Syntaxis


StrComp(String1, String2[, Vergelijken])


String1, String2: alle geldige tekenreeksexpressies. De functie controleert of String1 aanwezig is in String2.

Vergelijken is een optioneel argument dat een van de volgende vooraf gedefinieerde constanten kan zijn (indien weggelaten, wordt de huidige instelling voor Optie Vergelijken gebruikt):

  • vbBinaryCompare - binaire vergelijking van twee strings;
  • vbTextCompare - tekstvergelijking van twee strings;
  • vbDatabaseCompare - alleen gebruikt in Microsoft Access.

Start - een optioneel argument, is een numerieke uitdrukking en specificeert de positie van het teken in String1 van waaruit de controle moet beginnen.


InStr retourneert een getal dat de positie aangeeft van het teken in String1 waar String2 werd gevonden. Als InStr String2 niet vindt in String1, wordt 0 geretourneerd. Als String1 (of String2) Null is, retourneert de functie ook Null.



Lijnsplitsing

Soms is het nodig om een ​​string in zijn samenstellende delen te splitsen. In VBA lossen drie functies dit probleem op: Links, rechts, midden.

Linkse functie

Syntaxis


Links (snaar, lengte)


De functie retourneert een kopie van de String, beginnend met het eerste teken en inclusief het aantal tekens gespecificeerd door Lengte. Als Lengte een getal is dat groter is dan de werkelijke lengte van de String, wordt de volledige String-expressie geretourneerd.

Juiste functie

Syntaxis


Rechts (snaar, lengte)


String is elke geldige tekenreeksexpressie.

Lengte - elke numerieke waarde.


De functie retourneert een kopie van de String, beginnend met het laatste teken en inclusief, van rechts naar links, het aantal tekens gespecificeerd door Lengte. Als Lengte een getal is dat groter is dan de werkelijke lengte van de String, wordt de volledige String-expressie geretourneerd. De functie Right kopieert altijd tekens vanaf het einde van een tekenreeks naar het begin.

Midden-functie

Syntaxis


Midden (String, Start, [, Lengte])


String is elke geldige tekenreeksexpressie.

Lengte, Start - alle numerieke waarden.


De Mid-functie retourneert een kopie van de String, beginnend op de tekenpositie in de String die is opgegeven door het Start-argument. Het optionele argument Lengte specificeert het aantal tekens dat van String naar Mid moet worden gekopieerd. Als Start een groter getal bevat dan de werkelijke lengte van de String, wordt een lege string geretourneerd.



Tekens die niet via het toetsenbord kunnen worden ingevoerd

Het komt vaak voor dat u een teken moet invoeren waarvoor geen toets op het toetsenbord aanwezig is (bijvoorbeeld een copyright-symbool). Een andere situatie is wanneer u een VBA-servicesymbool in een string moet opnemen (het meest voorkomende geval is het opnemen van dubbele aanhalingstekens).

Gebruik de functie om tekens in een tekenreeks op te nemen die niet via het toetsenbord kunnen worden ingevoerd of die een speciale betekenis voor VBA hebben Chr.

Syntaxis


Chr (tekencode)


Charcode - elke numerieke uitdrukking die een geldige code is voor de tekenset die door een computer wordt gebruikt. Moet een geheel getal tussen 0 en 255 zijn.

De Chr-functie neemt een code van één teken als argument en retourneert een tekenreeks met het teken dat overeenkomt met die code. Deze functie wordt in de bovenstaande lijsten gebruikt om een ​​regel toe te voegen bij het weergeven van een bericht op het scherm Chr (13).


Omdat de tekens die worden gebruikt om een ​​nieuwe regel te beginnen zo belangrijk zijn bij het opmaken van berichten en andere tekenreeksgegevens die door VBA-routines worden gemanipuleerd, zijn er verschillende vooraf gedefinieerde constanten voor deze tekens om de noodzaak om de Chr-functie te gebruiken te vermijden:

  • vbCr is een Carriage Return-teken. Equivalent aan Chr(13)
  • vbLf - teken één regel verschuiven. Equivalent aan Chr(10)
  • vbCrLf - regelterugloop + verschoven teken met één regel. Equivalent aan Chr(13)+ Chr(10)
  • vbTab - tabteken. Chr(9)-equivalent

Om de lijst te bekijken code-symbool u moet het VBA-helpsysteem openen en op verzoek "karaktersets" De bijbehorende tabel wordt gepresenteerd.



Gegevenswaarden opmaken

Heel vaak is het dataformaat aan de uitvoer van een programma om de een of andere reden niet helemaal geschikt voor ons. Dit probleem wordt opgelost door de functie Formaat.

De functie VBA-opmaak is identiek aan de functie Opmaak in Excel en gebruikt dezelfde tijdelijke aanduidingen voor gegevensopmaak.

Syntaxis


Formaat (Expressie [, Formaat[, Eerstedagvandeweek [,Eersteweekvanjaar]]])


Expressie - elke geldige expressie (vereist argument).

Formaat is een geldige uitdrukking van een benoemd of door de gebruiker gedefinieerd formaat.

Eerstedagvandeweek is een constante die de eerste dag van de week aangeeft.

Eersteweekvanjaar - een constante die de eerste week van het jaar definieert.


Om de functie Opmaak te gebruiken, moet u een van beide doen stel een vooraf gedefinieerd formaat in, of maak een afbeelding van een specifiek formaat, met behulp van tijdelijke tekens.


Benoemde formaten voor gebruik met de functie Format

Benoemd formaat Actie
Algemene datum Formatteert datum- en tijdinformatie in een opeenvolgend datumnummer met behulp van de datum- en tijdnotatie-instellingen voor uw computer.
Lange datum Formatteert alleen het datumgedeelte in een opeenvolgende datum, met behulp van de instellingen voor de lange datumnotatie van de computer.
Middellange datum Formatteert alleen het datumgedeelte als een opeenvolgende datum, met behulp van de instellingen voor de gemiddelde datumnotatie van uw computer.
Korte datum Formatteert alleen het gedeelte dat de datum bevat, in een opeenvolgende datum, met behulp van de computerinstellingen voor het korte datumformaat.
Lange tijd Formatteert alleen het tijdgedeelte in een opeenvolgende datum, met behulp van de instellingen voor de lange tijdnotatie van de computer.
Middellange tijd Formatteert alleen het tijdgedeelte in een opeenvolgende datum, met behulp van de instellingen voor de gemiddelde tijdnotatie van de computer.
Korte tijd Formatteert alleen het tijdgedeelte in een opeenvolgende datum, met behulp van de computerinstellingen voor Korte tijdnotatie.
Algemeen nummer Formatteert een getal in een tekenreeks zonder speciale tekens.
Munteenheid Formatteert een getal met een valutasymbool, een scheidingsteken voor duizendtallen en slechts twee decimalen.
Vast Formatteert een getal zo dat er altijd minimaal één cijfer vóór de komma staat en minimaal twee cijfers erna.
Standaard Formatteert een getal met een scheidingsteken voor duizendtallen, zodat er minimaal één cijfer vóór het decimaalteken staat en minimaal twee cijfers erna.
Procent Formatteert een getal als een percentage door het met 100 te vermenigvuldigen en een procentteken toe te voegen.
Wetenschappelijk Formatteert een getal in de normale exponentiële notatie.
Ja nee De tekenreeks "Ja" wordt geretourneerd als het opgemaakte getal niet nul is, anders - "Nee".
Waar onwaar De tekenreeks "True" wordt geretourneerd als het opgemaakte getal niet nul is, anders - "False".
Aan uit De tekenreeks "Aan" wordt geretourneerd als het opgemaakte getal niet nul is, anders - "Uit".

Tijdelijke aanduidingen voor het maken van aangepaste formaten

Tijdelijk teken Actie (met het nummer 1234.45 als voorbeeld)
0 Een numeriek teken dat een cijfer weergeeft als iemand zich op die positie bevindt, of een 0 als dat niet het geval is. U kunt het 0-symbool gebruiken om voorloopnullen voor gehele getallen en volgnullen voor decimalen weer te geven: 00000.000 geeft 01234.450 weer
# Een numeriek symbool geeft een cijfer weer als er een op deze positie staat, anders wordt er niets weergegeven. Het opvulteken # is gelijk aan 0, behalve dat voorloop- en volgnullen niet worden weergegeven: #####.### geeft 1234.45 weer
$ Geeft dollarteken weer: $###,###.00 geeft $1.234,45 weer
. Decimaal plaatsaanduidingsteken, geeft de decimale punt weer op de aangegeven positie in de tekenreeks 0 plaatsaanduiding: #.##.## geeft 1234,45 weer
% Procentsymbool, vermenigvuldigt de waarde met 100 en voegt een procentteken toe op de positie aangegeven door de tijdelijke aanduidingen 0:#.#0.00% geeft het getal 0,12345 weer als 12,35% (afronding vindt plaats)
, Scheidingsteken voor duizendtallen, voegt komma's toe als scheidingstekens voor duizendtallen in de tekenreeksen 0 en #: ###,###,###.00 geeft 1.234,45 weer
E-e- Geeft de waarde alleen in exponentieel formaat weer met een exponent voor negatieve waarden: #.####E-00 geeft 1.23445E03 weer
E+e+ Geeft de waarde weer in exponentieel formaat met een exponent voor zowel negatieve als positieve waarden: #.####E+00 geeft 1,23445E+03 weer
/ Scheidt dag, maand en jaar voor het opmaken van datumwaarden.
M Specificeert hoe maanden in datums moeten worden weergegeven: m geeft 1, mm - 01, mmm - Jan, mmmm - januari weer
D Specificeert hoe dagen in datums moeten worden weergegeven: d geeft 1, dd - 01, ddd - Sun, dddd - zondag weer
j Geeft de dag van het jaar weer als een getal van 1 tot 366
jj Specificeert hoe jaren in datums moeten worden weergegeven: jj - 66, jjjj - 1966
Q Geeft het kwartaal van het jaar weer als een getal van 1 tot 4
w Geeft de dag van de week weer als een getal (1 - zondag)
ww Geeft de week van het jaar weer als een getal van 1 tot 54
: Scheidt uren, minuten en seconden in tijdnotatiewaarden: uu:mm:ss - 01:01:01, u:m:s - 1:1:1
H Specificeert hoe de uren moeten worden weergegeven: uu - 01, u - 1
M Specificeert hoe de minuten moeten worden weergegeven: mm - 01, m - 1
S Specificeert hoe seconden moeten worden weergegeven: ss - 01, s - 1
AM PM Geeft de tijd weer in 12-uursnotatie met AM of PM toegevoegd
@ Een tijdelijke aanduiding voor tekens die een spatie weergeeft als er geen overeenkomend teken in de opgemaakte tekenreeks voorkomt.
Geeft alle tekens in hoofdletters weer.
> Geeft alle tekens in kleine letters weer.

In dit artikel zullen we kort kijken naar de tekenreeksfuncties van de VBA-taal, die worden gebruikt om tekenreeksen op te maken, en waarmee u ook het hoofdlettergebruik van tekens kunt wijzigen, tekenreekswaarden kunt weergeven op basis van hun code, enzovoort.

ASC (tekenreekswaarde)– gebruikt om de numerieke ASCII-code van een bepaald teken te verkrijgen. U kunt een hele tekenreeks als parameter doorgeven (de controle vindt plaats voor het eerste teken in de tekenreeks), of een enkel teken of een spatie.

Chr (tekencode)– werkt in omgekeerde volgorde vergeleken met de vorige functie. We geven een ASCII-code door als parameter en aan de uitvoer ontvangen we een teken volgens de gegeven code. Deze tekenreeksfunctie is relevant in gevallen waarin u een serviceteken moet weergeven, bijvoorbeeld aanhalingstekens, hoewel vaker VBA-constanten worden gebruikt.

InStr(regel1, regel2, [start])– ontworpen om te zoeken naar een reeks tekens (regel2) in een bepaalde reeks (regel1). U kunt ook de startpositie voor het zoeken naar een gebeurtenis opgeven (optionele parameter “start”).

InStrRev(regel1, regel2, [start])– vergelijkbaar met de vorige functie, maar het zoeken gebeurt in omgekeerde volgorde.

Links (snaar, lengte)– hiermee kunt u een opgegeven aantal tekens (“lengte”-parameter) retourneren voor de geselecteerde regel (“string”-parameter), beginnend vanaf de linkerkant.

Rechts (snaar, lengte)– hiermee kunt u een bepaald aantal tekens retourneren voor de geselecteerde regel, beginnend vanaf de rechterkant.

Midden (snaar, lengte, begin)– hiermee kunt u een gespecificeerd aantal tekens (“lengte” parameter) retourneren voor de geselecteerde regel, beginnend vanaf een gespecificeerde positie (“start” parameter).

Len (snaar)– bepaalt het numerieke aantal tekens in een regel.

LCase (tekenreeks)– ontworpen om alle tekens in de doorgegeven string naar kleine letters te converteren.

UCase (tekenreeks)– is ontworpen om alle tekens in de doorgegeven string naar hoofdletters te converteren.

LSet(tekenreeks, lengte)– vult de inhoud van een variabele met tekens uit een andere variabele, beginnend vanaf de linkerkant, de lengte verandert niet, extra tekens worden afgesneden en spaties worden vervangen door ontbrekende tekens.

RSet(tekenreeks, lengte)– de bedieningslogica is dezelfde als voor de vorige VBA-functie voor het werken met strings, maar het proces vindt aan de rechterkant plaats.

LTrim (tekenreeks)– verwijder spaties aan de linkerkant van de regel

RTrim (tekenreeks)– verwijder spaties aan de rechterkant van een regel

Trimmen (koord)– verwijder spaties rechts en links in de regel

Vervangen()– sommige tekens in een string vervangen door andere

Ruimte (aantal spaties)– het vormen van een string uit een bepaald aantal spaties

Tekenreeks (aantal, teken)– vorming van een string uit een bepaald aantal geschreven karakters

spc()– gebruikt om gegevensuitvoer te genereren in het opdrachtregelconsolevenster. Spaties worden vermenigvuldigd, rekening houdend met de breedte van de opdrachtregel.

StrComp(regel1, regel2)– vergelijking van twee strings, retourneert 0 indien gelijk, en anders -1.

StrConv(tekenreeks, methode, )– deze vba-functie is universeel, omdat je hiermee een bepaalde string in verschillende variaties kunt converteren (hoofdletters en kleine letters, codering, byte-vertaling).

  • Lijn– eigenlijk de stringwaarde waarop de transformatie moet worden uitgevoerd.
  • Methode– specificeert de conversiemethode; deze parameter kan de volgende waarden aannemen:
  1. vbHoofdletter– conversie naar hoofdletters, waarde 1
  2. vbKleine letters– conversie naar kleine letters, waarde 2
  3. vbPropperCase– converteert de eerste tekens van alle woorden naar hoofdletters en de overige tekens naar kleine letters, waarde 3.
  4. vbBreed– gebruikt voor het coderen van oosterse talen. Tekens converteren naar één byte van dubbel-byte. Waarde 4.
  5. vbSmal– analoog aan de vorige parameter, maar hier worden twee bytes omgezet in één, waarde 8.
  6. vbKatakana– de karakters van het Hiragana-alfabet worden omgezet in karakters voor het Katana-alfabet, toepasbaar voor de Japanse taal, waarde 16.
  7. vbHiragana– analoog van de vorige parameter, maar hier is er een conversie van Katana naar Hiragana, waarde 32. VBA-stringfuncties
  8. vbUnicode– converteer de gegeven string naar Unicode-codering, waarde 64.
  9. vbFormatUnicode– conversie van Unicode naar standaardcodering, waarde 128.
  • LCID– de parameter is optioneel (vba-tekenreeksfuncties) en specificeert de identificatie van de regionale instellingen. De standaardwaarde is LocaleId, dat wil zeggen de waarde die is ingesteld in het configuratiescherm.

StrReverse(tekenreeks)– de rangschikking van tekens op een regel omkeren, met andere woorden: “spiegelen”.

Leg in het gedeelte over de vraag Mensen in detail uit wat de functie ord(x) en de inverse chr(x) betekenen in Pascal? gegeven door de auteur Niek Bruin het beste antwoord is Er is een speciale tabel met tekens (uitgebreide ASCII-code, wanneer elk teken een numerieke waarde heeft, zijn er in totaal 255 waarden in de tabel, dat wil zeggen dat aan elk teken een nummer wordt toegewezen,
chr(0..254) converteert een getal (één byte) naar het teken waartoe dit getal behoort, bijvoorbeeld chr(71) het resultaat is de letter "G", ook het indrukken van toetsen op het toetsenbord levert zijn eigen code op, dit is precies de code wanneer deze in deze operator wordt geplaatst en geeft het resultaat welke toets wordt ingedrukt, dit ben ik bijvoorbeeld. Maar de ORD(x)-operator voert dit proces in omgekeerde volgorde uit.
We stellen het waardeteken in en krijgen een getal van 0 tot 254 (één byte)
ORD("G") geeft ons bijvoorbeeld het resultaat 71 (in decimaal formaat)
Dat is alles wat het lijkt!!!

Antwoord van Katyonachik[Nieuweling]
Het is eigenlijk heel simpel)
Ord ("X") - retourneert de code van het teken X uit de ASKII-tabel.
Het resultaat van de inverse functie is een symbool dat overeenkomt met de ingevoerde code (waaruit de functie is overgenomen) uit dezelfde ASCII-tabel.


Antwoord van Juri[goeroe]
Dit zijn geen wederzijdse functies!
De functie Ord retourneert de ordinale waarde van een opgesomd type.
De telling begint vanaf nul.
Voor het bytetype retourneert de functie de werkelijke waarde - het rangtelwoord valt samen met de waarde.
Voor het char-type retourneert de functie het serienummer van het teken, dat (het nummer is willekeurig) samenvalt met de ASCII-code.
De functie chr retourneert het teken met de opgegeven ASCII-code.
Conclusie: Simpelweg, als het om symbolische waarden gaat, werken ze eigenlijk als het omgekeerde van elkaar...
Daarom kunnen we zeggen dat de ord-functie het omgekeerde is van de ord-functie, maar niet andersom - de chr-functie is niet het omgekeerde van de ord-functie, aangezien de reikwijdte van de ord-functie niet beperkt is tot het werken met symbolen!