VBA -keskitoiminto - poimi hahmot merkkijonon keskeltä

Sisällysluettelo

Tämä opetusohjelma osoittaa, miten Mid VBA -toiminnon avulla voidaan poimia merkkejä tekstimerkkijonon keskeltä.

Keskitoiminto

Keskitoiminto Hae n merkkiä

VBA Mid -funktio palauttaa n merkkiä merkkijonosta alkaen paikasta m:

123456789 Alakeskusesimerkki_1 ()MsgBox Mid ("ABCDEFGHI", 4, 1) Tulos: "D"MsgBox Mid ("ABCDEFGHI", 4, 2) 'Tulos: "DE"MsgBox Mid ("ABCDEFGHI", 4, 50) Tulos: "DEFGHI"MsgBox Mid ("ABCDEFG hI", 6, 1) 'Tulos: "F"MsgBox Mid ("ABCDEFG hI", 6, 2) Tulos: "FG"MsgBox Mid ("ABCDEFG hI", 6, 4) 'Tulos: "FG h"End Sub

Keskitoiminto Hanki n merkkiä muuttujaan

Kuten yllä on esitetty, voit määrittää merkkijonon yksinkertaisesti kirjoittamalla lainausmerkkien ympäröimän tekstin. Mutta MID -toiminto toimii myös merkkijonomuuttujien kanssa. Nämä esimerkit poimivat n merkkiä merkkijonosta alkaen paikasta m.

12345678 Alakeskusesimerkki_2 ()Dim StrEx merkkijonona 'Määritä merkkijonomuuttujaStrEx = "ABCDEFGHI"MsgBox Mid (StrEx, 2, 1) 'Tulos: "B"MsgBox Mid (StrEx, 2, 2) 'Tulos: "BC"MsgBox Mid (StrEx, 2, 50) 'Tulos: "BCDEFGHI"End Sub

Keskitoiminto Hae n merkkiä solusta

Merkkijonot voidaan määrittää VBA -koodissa, mutta voit myös käyttää solujen arvoja. Lue solun arvo, säilytä se merkkijonomuuttujassa ja poimi n merkkiä laskentataulukon solun arvosta kohdasta m alkaen.

1234567891011 Alakeskusesimerkki_3 ()Dim StrEx merkkijonona 'Määritä merkkijonomuuttuja'Lue solun A1 arvo laskentataulukon taulukosta 1StrEx = ThisWorkbook.Worksheets ("Sheet1"). Alue ("A1"). ArvoTässä esimerkissä solun A1 arvo on "Olkoon voima kanssasi"MsgBox Mid (StrEx, 4, 6) 'Tulos: "F" (Huomaa väli alussa)MsgBox Mid (StrEx, 2, 8) 'Tulos: "a F"MsgBox Mid (StrEx, 3, 4) 'Tulos: "y th"End Sub

Keskitoiminto Vaihda n merkkiä

Yllä olevissa esimerkeissä Mid -funktio ei muuttanut alkuperäistä merkkijonoa. Se palautti osan siitä jättäen alkuperäisen merkkijonon ennalleen. Keskitoimintoa voidaan käyttää merkkijonon merkkien korvaamiseen.

12345678910111213141516171819202122 Alakeskusesimerkki_4 ()Dim StrEx merkkijonona 'Määritä merkkijonomuuttujaAlakeskusesimerkki_4 ()Dim StrEx merkkijonona 'Määritä merkkijonomuuttujaStrEx = "Olkoon Voima kanssasi"Keski (StrEx, 5, 1) = "VWXYZ"MsgBox StrExin tulos on: "Olkoon Vhe Horce kanssasi"'Keskitoiminto löysi paikan 5 ja korvasi 1 merkin alkuperäisessä merkkijonossaStrEx = "Olkoon Voima kanssasi"Keski (StrEx, 5, 3) = "VWXYZ"MsgBox StrExin tulos on: "Olkoon VWX Horce kanssasi"'Keskitoiminto löysi paikan 5 ja korvasi 3 merkkiä alkuperäisessä merkkijonossaStrEx = "Olkoon Voima kanssasi"Keski (StrEx, 5, 8) = "VWXYZ"MsgBox StrExin tulos on: "Olkoon VWXYZorce kanssasi"'Keskitoiminto löysi paikan 5 ja yritti korvata 8 merkkiä."" VWXYZ "sisältää vain 5 merkkiä, joten vain 5 merkkiä vaihdettiin.End Sub

Keskitoiminto Poimi toinen sana lauseesta

Voimme käyttää VBA Mid -toimintoa VBA Instr -toiminnon kanssa saadaksesi toisen sanan tekstistä.

VBA InStr -toiminto voi palauttaa merkin sijainnin tekstin sisällä.

1 InStr ("Kaksi sanaa", "") 'Tulos on 4

Voimme käyttää InStr: ää ensimmäisen tilan etsimiseen ja sitten uudelleen InStr: n avulla, joka aloittaa haun ensimmäisen välilyönnin jälkeen löytääksesi toisen tilan tekstistä. Lopuksi voimme käyttää Mid -funktiota sanan poimimiseen, koska tiedämme toisen sanan aloituspaikan ja sen pituuden (kahden välilyönnin välisen eron).

12345678910111213141516171819202122232425 Alakeskusesimerkki_5 ()Dim StrEx merkkijonona 'Määritä merkkijonomuuttujaHimmennä StartPos kokonaislukunaDim EndPos kokonaislukunaHimmennä toinen sana merkkijononaStrEx = "James Earl Jones on näyttelijä"StartPos = InStr (StrEx, "")'Tulos on 6'Etsi ensimmäisen tilan sijaintiEndPos = InStr (StartPos + 1, StrEx, "")'Tulos on 11'Etsi toisen tilan sijainti aloittamalla haku ensimmäisen välilyönnin jälkeenSecondWord = Mid (StrEx, StartPos + 1, EndPos - StartPos - 1)'Mid purkaa ensimmäisen välilyönnin jälkeen alkavat merkit (StartPos +1)'Mid käyttää myös toisen sanan pituutta.'Tämä on välilyönnien -1 välinen eroMsgBox SecondWord'Tulos on EarlEnd Sub
wave wave wave wave wave