VBA ფუნქციების გამოყენების მაგალითები. Oracle Vba excel-ის ჩაშენებული ფუნქციები სტრინგებთან მუშაობისთვის

  • A.S.C. () - ეს ფუნქცია საშუალებას გაძლევთ დააბრუნოთ რიცხვითი კოდი გადაცემული სიმბოლოსთვის. მაგალითად, ASC("D") დააბრუნებს 68. ეს ფუნქცია სასარგებლოა შემდეგი ან წინა ასოს დასადგენად. ის ჩვეულებრივ გამოიყენება ფუნქციასთან ერთად ქრ(), რომელიც ასრულებს შებრუნებულ ოპერაციას - აბრუნებს სიმბოლოს მისი გადაცემული რიცხვითი კოდის მიხედვით. ამ ფუნქციის ვარიანტებია. AscB() და AscW():
    • AscB () - აბრუნებს სიმბოლოს რიცხვითი კოდის მხოლოდ პირველ ბაიტს.
    • AscW () - აბრუნებს სიმბოლოს კოდს Unicode კოდირებაში
  • ქრ () - აბრუნებს სიმბოლოს მისი რიცხვითი კოდით. შეიძლება გამოყენებულ იქნას Asc() ფუნქციასთან ერთად, მაგრამ ყველაზე ხშირად ის გამოიყენება, როცა სერვისის სიმბოლოს დაბეჭდვა გჭირდებათ. (მაგალითად ციტატები - "), იმიტომ თქვენ არ შეგიძლიათ უბრალოდ შეიყვანოთ ციტატები VBA კოდში (თქვენ უნდა დააყენოთ ორმაგი). ეს არის ფუნქცია, რომელსაც ჩვეულებრივ ვიყენებ.

    ჩამქრალი ხმალი, როგორც სიმებიანი ხმალი = Chr(34) & "სიტყვა ბრჭყალებში" & Chr(34)

    ამ ფუნქციის ვარიანტები არსებობს - ChrB() და ChrW(). იმუშავეთ ფუნქციის იგივე ვარიანტების მსგავსად Asc().

  • InStr () და InStrRev () - ერთ-ერთი ყველაზე პოპულარული ფუნქცია. საშუალებას გაძლევთ ამოიცნოთ სიმბოლო ან სიმბოლოების თანმიმდევრობა სიმებიანი ცვლადის სხეულში და დააბრუნოთ მათი პოზიცია. თუ თანმიმდევრობა ვერ მოიძებნა, მაშინ ბრუნდება 0.

    Dim sStr As String sStr = "w" თუ InStr(1, "Hello, World!", sStr, vbTextCompare) > 0 შემდეგ MsgBox "საძიებო სიტყვა არსებობს!" Else MsgBox "მოძებნილი სიტყვა აკლია!" Დაასრულე თუ

    ფუნქციებს შორის განსხვავება ისაა, რომ InStr() ეძებს მითითებულ სიტყვას ხაზის დასაწყისიდან, ხოლო InStrRev() სტრიქონის ბოლოდან.

  • მარცხენა () , უფლება () , შუა () - თქვენ მიერ მითითებული სიმბოლოების რაოდენობის აღების შესაძლებლობა არსებული სიმებიანი ცვლადიდან, შესაბამისად მარცხნივ, მარჯვნივ ან შუაზე.
    Dim sStr As String sStr = "გამარჯობა, მსოფლიო!" MsgBox Mid(sStr, 1, 5)

    Dim sStr As String sStr = "გამარჯობა, მსოფლიო!" MsgBox Mid(sStr, 1, 5)

  • ლენ () - ხაზის სიმბოლოების რაოდენობის მიღების უნარი. ხშირად გამოიყენება მარყუჟებით, ჩანაცვლების ოპერაციებით და ა.შ.
  • LCase () და UCase () - გადაიყვანეთ სტრიქონი, შესაბამისად, ქვედა და ზედა რეზერვში. ხშირად გამოიყენება შედარებისთვის მნიშვნელობის მოსამზადებლად, როდესაც შედარებისას დიდი მნიშვნელობა არ აქვს (გვარები, კომპანიების სახელები, ქალაქები და ა.შ.).
  • LSset () და RSset () - ერთი ცვლადის შევსების უნარი მეორის სიმბოლოებით მისი სიგრძის შეცვლის გარეშე (მარცხნივ და მარჯვნივ შესაბამისად). დამატებითი სიმბოლოები ამოჭრილია და გამოტოვებული სიმბოლოებით სივრცეები ჩანაცვლებულია.
  • LTrim () , RTrim () , მორთვა () - სივრცეების ამოღების შესაძლებლობა, შესაბამისად, მარცხნივ, მარჯვნივ ან ორივე მარცხნივ და მარჯვნივ.
  • ჩანაცვლება () - სტრიქონში სიმბოლოების ერთი თანმიმდევრობის შეცვლის შესაძლებლობა მეორით.
    Dim sStr As String sStr = "გამარჯობა, მსოფლიო!" MsgBox Replace(sStr, "Hello" , "Bay")

    Dim sStr As String sStr = "გამარჯობა, მსოფლიო!" MsgBox Replace(sStr, "Hello", "Bay")

  • სივრცე () - მიიღეთ სტრიქონი თქვენს მიერ მითითებული სივრცეების რაოდენობის მიხედვით;
    კიდევ ერთი მსგავსი ფუნქციაა სპკ () , რომელიც გამოიყენება კონსოლის გამოსავლის ფორმატირებისთვის. ის ამრავლებს სივრცეებს ​​ბრძანების ხაზის სიგანეზე დაყრდნობით.
  • StrComp () - ორი სტრიქონის შედარების უნარი.
  • StrConv () - სტრიქონის კონვერტაციის უნარი (უნიკოდზე და უკან, დიდ და პატარა რეზერვებზე, სიტყვების პირველი ასოს დიდი ასოებით და ა.შ.):
    Dim sStr As String sStr = "გამარჯობა, მსოფლიო!" MsgBox StrConv ("გამარჯობა, სამყარო!", vbUpperCase)

    Dim sStr As String sStr = "გამარჯობა, მსოფლიო!" MsgBox StrConv ("გამარჯობა, მსოფლიო!", vbUpperCase)

    მუდმივები შეიძლება გამოყენებულ იქნას მეორე პარამეტრის პარამეტრად:

    • vbUpperCase:გარდაქმნის ყველა ტექსტის სიმბოლოს UPPER CASE-ში
    • vbLowerCase:აკონვერტებს ყველა ტექსტის სიმბოლოს პატარა რეესტრში
    • vbProperCase:გარდაქმნის თითოეული სიტყვის პირველ სიმბოლოს ზევით
    • *vbWide:აკონვერტებს სიმებიანი სიმბოლოები ერთი ბაიტიდან ორ ბაიტად
    • *vbNarrow:გარდაქმნის სტრიქონების სიმბოლოებს ორმაგი ბაიტიდან ერთ ბაიტად
    • **vbKatakana:გარდაქმნის ჰირაგანას პერსონაჟებს კატაკანას პერსონაჟებად
    • **vbHiragana:გარდაქმნის კატაკანას პერსონაჟებს ჰირაგანას პერსონაჟებად
    • ***vbUnicode:გარდაქმნის სტრიქონს უნიკოდად სისტემის ნაგულისხმევი კოდის გვერდის გამოყენებით
    • ***vbFromUnicode:გარდაქმნის უნიკოდის სტრიქონს სისტემის ნაგულისხმევ კოდის გვერდზე
    • * გამოიყენება შორეული აღმოსავლეთის ლოკალიზაციისთვის
      ** გამოიყენება მხოლოდ იაპონიისთვის
      *** არ არის მხარდაჭერილი Macintosh ოპერაციულ სისტემებზე

  • StrReverse () - სტრიქონის „გადაბრუნება“ მისი სიმბოლოების საპირისპირო თანმიმდევრობით განთავსებით. ფუნქცია მუშაობს მხოლოდ Excel 2000 და უფრო მაღალიდან. ფუნქციის გამოყენების მაგალითი, ისევე როგორც სიტყვის გადაქცევის სხვა მეთოდები, შეგიძლიათ იხილოთ ამ სტატიაში: როგორ გადავატრიალოთ სიტყვა?
  • ჩანართი () არის კიდევ ერთი ფუნქცია, რომელიც გამოიყენება კონსოლის გამოსავლის ფორმატირებისთვის. ამრავლებს ჩანართის სიმბოლოებს თქვენს მიერ მითითებულ რიცხვში. თუ რაოდენობა არ არის მითითებული, უბრალოდ ჩასვით ჩანართის სიმბოლო. თქვენ ასევე შეგიძლიათ გამოიყენოთ მუდმივი ჩანართის სიმბოლოს სტრიქონის მნიშვნელობაში ჩასასმელად vbTab.
  • სიმებიანი () - გაძლევთ საშუალებას მიიღოთ სიმბოლოების მითითებული რაოდენობის სტრიქონი (რომლებიც ისევ თქვენ მიერ არის მითითებული). როგორც წესი, გამოიყენება ფუნქციასთან ერთად გამოსავლის ფორმატირებისთვის ლენ().

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

ვარიანტი 1

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

ვარიანტი

თქვენ ასევე შეგიძლიათ გამოიყენოთ ბაიტის მასივი:

Sub n() Dim Mass() როგორც ბაიტი, n დიდხანს, Zam როგორც სტრიქონი, TXT როგორც სტრიქონი TXT = "="" DMITRY VLADIMIROVICH KOROTEEV" Mass = StrConv(TXT, vbFromUnicode) For n = 0 To UBound(Mass) თუ მასა (n)<>34 და მასა(n)<>61 შემდეგ Zam = Zam + Chr$(Mass(n)) შემდეგი MsgBox Zam End Sub

ვარიანტი

ან ფილტრაცია შუა რიცხვებით:

Sub nn() Dim n ხანგრძლივად, TXT როგორც სტრიქონი, L როგორც სტრიქონი, Zam როგორც სტრიქონი TXT = "="" DMITRY VLADIMIROVICH KOROTEEV" For n = 1 To Len(TXT) L = Mid$(TXT, n, 1) თუ ლ<>"""" და ლ<>"=" შემდეგ Zam = Zam + L შემდეგი MsgBox Zam End Sub

ხაზი 6 შეიძლება შეიცვალოს ჰასკით:
Visual Basic კოდი
1
თუ L მოსწონს „[!““=]“ მაშინ Zam = Zam + L

ვარიანტი

ასევე პოზიციის ძიების და რეკურსიის მეშვეობით:

Sub test() Dim n მანამ, txt როგორც String txt = "=""DMITRY VLADIMIROVICH KOROTEEV" txt = Change(txt, "=") txt = Change(txt, """") MsgBox txt დასრულება ქვეფუნქციის შეცვლა( txt როგორც სტრიქონი, რა როგორც სტრიქონი, სურვილისამებრ Pos = 1) Dim n სანამ Pos<>0 შემდეგ 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

თქვენ ასევე შეგიძლიათ გამოიყენოთ რეგულარული გამონათქვამები, მაგრამ მე არ ვიცი ისინი.

ვარიანტი

მარჯვნიდან მარცხნივ ძიებით და რეკურსიით:

Visual Basic კოდი
1 2 3 4 5 6 7 8 ფუნქციის შეცვლა (txt როგორც სტრიქონი, რა როგორც სტრიქონი, სურვილისამებრ Pos რამდენადაც დიდხანს) Dim n სანამ Pos = 0 შემდეგ Pos = Len(txt) თუ Pos<>-1 შემდეგ n = InStrRev(txt, What, Pos) Change = Change(txt, What, IIf(n = 1, -1, n - 1)) + Mid$(txt, n + 1, Pos - n) დასასრული თუ დასრულება ფუნქცია

ვარიანტი

და ასევე არსებობს გაყოფადა შეუერთდი

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

თემის მიღმა:მაგრამ ეს არის სადისტებისთვის

დიდი და პატარა

ActiveDocument.Range-ით "uppercase.Text = Ucase(.Text) "lowrecase.Text = Lcase(.Text) ბოლოს

ან StrConv() - გადაიყვანეთ სტრიქონი (Unicode-ში და უკან, დიდ და პატარა რეზერვებში, აკრიფეთ სიტყვების პირველი ასო და ა.შ.) - იხილეთ ქვემოთ

სიმებიანი ოპერაციები

String ტიპის მონაცემებისთვის არის მხოლოდ ერთი ოპერაცია - შეერთება (კავშირი). მაგალითად, სამი სტრიქონის მნიშვნელობების "Peter" & "" & "Ivanovich" შეერთების ოპერაციის შედეგი იქნება სტრიქონი "Peter Ivanovich". ასევე შესაძლებელია სხვა ოპერატორის გამოყენება შეერთების ოპერაციისთვის, მაგალითად: "ათ" + "ათასი". ამ გამონათქვამებს შორის განსხვავება ისაა, რომ პირველ შემთხვევაში, ოპერანდები შეიძლება იყოს ნებისმიერი ტიპის მნიშვნელობები (ისინი უბრალოდ გადაიქცევა სტრიქონებად), ხოლო მეორეში ორივე ოპერანდი უნდა იყოს String ტიპის. სტრიქონებთან მუშაობის ფუნქციების დიდი რაოდენობაა (ცხრილი. სტრინგებთან მუშაობის ფუნქციები).

ცხრილი "სიმებთან მუშაობის ფუნქციები"

ფუნქცია აღწერა მაგალითი
Len(str) განსაზღვრავს სტრიქონის სიგრძეს a=len-დან („სიმბოლოები“) მოსდევს a=9
მარცხენა (<строка>, <длина>) ამონარიდები არგუმენტიდან<строка>მარცხნივ მითითებული სიმბოლოების რაოდენობა მარცხენა ("1234 სტრიქონი", 4) "1234"
მარჯვენა (<строка>, <длина>) ამონარიდები არგუმენტიდან<строка>სიმბოლოების მითითებული რაოდენობა მარჯვნივ Right (" 1234string", 6) "string"
შუა (<строка>, <старт> [, <длина>]) ამონარიდები არგუმენტიდან<строка>ქვესტრიქონი სიმბოლოების მითითებული რაოდენობით, დაწყებული პოზიციიდან<старт> შუა ("12345678″, 4.3) = "456"
შუა (<строка>, <старт>) პოზიციიდან ქვესტრიქონი ამოღებულია<старт>ხაზის ბოლომდე შუა ("12345678″, 4) = "45678"
LTrim (<строка>) შლის სივრცეები ხაზის დასაწყისში LTrim ("ბეჭდვა") "ბეჭდვა"
RTrim (<строка>) შლის სივრცეებს ​​სტრიქონის ბოლოს RTrim ("ბეჭდვა") = "ბეჭდვა"
მორთვა (<строка>) შლის სივრცეებს ​​სტრიქონის დასაწყისში და ბოლოს მორთვა ("ბეჭდვა") ="ბეჭდვა"
InStr([<старт>, ] < строка1>, <строка2> [, <сравнение>]) ეძებს ქვესტრინგს სტრიქონში. აბრუნებს სტრიქონის პირველი გაჩენის პოზიციას<строка2>უხაზოს<строка1>, <старт>- პოზიცია, საიდანაც იწყება ძებნა. თუ ეს არგუმენტი გამოტოვებულია, ძიება იწყება სტრიქონის დასაწყისიდან Instr("C:Temp test.mdb", "Test")=9 თუ საძიებო სტრიქონი არ არის მითითებულ სტრიქონში, ფუნქცია აბრუნებს 0-ს
InStrRev ([<старт>, ] <строка1>, <строка2> [, <сравнение>]) ეძებს ქვესტრინგს სტრიქონში, მაგრამ იწყებს ძიებას სტრიქონის ბოლოს და აბრუნებს ქვესტრიქონის ბოლო გაჩენის პოზიციას. არჩევითი არგუმენტი<сравнение>განსაზღვრავს შედარების ტიპს ორ სტრიქონს შორის
ჩანაცვლება (<строка>, <строкаПоиск>, <строкаЗамена>) საშუალებას გაძლევთ შეცვალოთ ერთი ქვესტრიქონი სტრიქონში მეორით. ეს ფუნქცია ეძებს არგუმენტის ყველა შემთხვევას<строкаПоиск>კამათში<строка>და ცვლის მათ<строкаЗамена>

სიმებიანი მნიშვნელობების შესადარებლად შეგიძლიათ გამოიყენოთ ჩვეულებრივი რიცხვითი შედარების ოპერატორები, რადგან სიმბოლოების შედარებისას მათი ბინარული კოდები შედარებულია. Like ოპერატორი ასევე გამოიყენება სტრიქონების მნიშვნელობების შესადარებლად, რაც საშუალებას გაძლევთ აღმოაჩინოთ არაზუსტი შესატყვისი, მაგალითად, გამოთქმა "Input" ისევე როგორც "Input*" შეფასდება True-მდე, რადგან შედარებული სტრიქონი იწყება სიტყვით "Input". ვარსკვლავი (*) სიმბოლო სტრიქონში ცვლის სიმბოლოების თვითნებურ რაოდენობას. სხვა სიმბოლოები, რომლებიც მუშავდება Like ოპერატორის მიერ შედარებულ სტრიქონში:

  • ? – ნებისმიერი პერსონაჟი (ერთი);
  • # – ერთი ციფრი (0–9);
  • [<список>] – სიმბოლო, რომელიც შეესაბამება სიის ერთ-ერთ სიმბოლოს;
  • [!<список>] – სიმბოლო, რომელიც არ ემთხვევა სიის არცერთ სიმბოლოს.
  • A.S.C.() - ეს ფუნქცია საშუალებას გაძლევთ დააბრუნოთ რიცხვითი კოდი გადაცემული სიმბოლოსთვის. მაგალითად, ASC("D") დააბრუნებს 68. ეს ფუნქცია სასარგებლოა შემდეგი ან წინა ასოს დასადგენად. ის ჩვეულებრივ გამოიყენება ფუნქციასთან ერთად ქრ(), რომელიც ასრულებს შებრუნებულ ოპერაციას - აბრუნებს სიმბოლოს მისი გადაცემული რიცხვითი კოდის მიხედვით. ამ ფუნქციის ვარიანტებია. AscB() და AscW():
    • AscB() - აბრუნებს სიმბოლოს რიცხვითი კოდის მხოლოდ პირველ ბაიტს.
    • AscW() - აბრუნებს სიმბოლოს კოდს Unicode კოდირებაში
  • ქრ() - აბრუნებს სიმბოლოს მისი რიცხვითი კოდით. შეიძლება გამოყენებულ იქნას Asc() ფუნქციასთან ერთად, მაგრამ ყველაზე ხშირად ის გამოიყენება, როცა სერვისის სიმბოლოს დაბეჭდვა გჭირდებათ. (მაგალითად ციტატები - "), იმიტომ თქვენ არ შეგიძლიათ უბრალოდ შეიყვანოთ ციტატები VBA კოდში (თქვენ უნდა დააყენოთ ორმაგი). ეს არის ფუნქცია, რომელსაც ჩვეულებრივ ვიყენებ.

    ჩამქრალი ხმალი, როგორც სიმებიანი ხმალი = Chr(34) & "სიტყვა ბრჭყალებში" & Chr(34)

    ამ ფუნქციის ვარიანტები არსებობს - ChrB() და ChrW(). იმუშავეთ ფუნქციის იგივე ვარიანტების მსგავსად Asc().

  • InStr() და InStrRev() - ერთ-ერთი ყველაზე პოპულარული ფუნქცია. საშუალებას გაძლევთ ამოიცნოთ სიმბოლო ან სიმბოლოების თანმიმდევრობა სიმებიანი ცვლადის სხეულში და დააბრუნოთ მათი პოზიცია. თუ თანმიმდევრობა ვერ მოიძებნა, მაშინ ბრუნდება 0.

    Dim sStr As String sStr = "w" თუ InStr(1, "Hello, World!", sStr, vbTextCompare) > 0 შემდეგ MsgBox "საძიებო სიტყვა არსებობს!" Else MsgBox "მოძებნილი სიტყვა აკლია!" Დაასრულე თუ

    ფუნქციებს შორის განსხვავება ისაა, რომ InStr() ეძებს მითითებულ სიტყვას ხაზის დასაწყისიდან, ხოლო InStrRev() სტრიქონის ბოლოდან.

  • მარცხენა() , უფლება() , შუა() - თქვენ მიერ მითითებული სიმბოლოების რაოდენობის აღების შესაძლებლობა არსებული სიმებიანი ცვლადიდან, შესაბამისად მარცხნივ, მარჯვნივ ან შუაზე.

    Dim sStr As String sStr = "გამარჯობა, მსოფლიო!" MsgBox Mid(sStr, 1, 5)

  • ლენ() - ხაზის სიმბოლოების რაოდენობის მიღების უნარი. ხშირად გამოიყენება მარყუჟებით, ჩანაცვლების ოპერაციებით და ა.შ.
  • LCase() და UCase() - გადაიყვანეთ სტრიქონი, შესაბამისად, ქვედა და ზედა რეზერვში. ხშირად გამოიყენება შედარებისთვის მნიშვნელობის მოსამზადებლად, როდესაც შედარებისას დიდი მნიშვნელობა არ აქვს (გვარები, კომპანიების სახელები, ქალაქები და ა.შ.).
  • LSset() და RSset() - ერთი ცვლადის შევსების უნარი მეორის სიმბოლოებით მისი სიგრძის შეცვლის გარეშე (მარცხნივ და მარჯვნივ შესაბამისად). დამატებითი სიმბოლოები ამოჭრილია და გამოტოვებული სიმბოლოებით სივრცეები ჩანაცვლებულია.
  • LTrim() , RTrim() , მორთვა() - სივრცეების ამოღების შესაძლებლობა, შესაბამისად, მარცხნივ, მარჯვნივ ან ორივე მარცხნივ და მარჯვნივ.
  • ჩანაცვლება() - სტრიქონში სიმბოლოების ერთი თანმიმდევრობის შეცვლის შესაძლებლობა მეორით.

    Dim sStr As String sStr = "გამარჯობა, მსოფლიო!" MsgBox Replace(sStr, "Hello", "Bay")

  • სივრცე() - მიიღეთ სტრიქონი თქვენს მიერ მითითებული სივრცეების რაოდენობის მიხედვით;
    კიდევ ერთი მსგავსი ფუნქციაა სპკ() , რომელიც გამოიყენება კონსოლის გამოსავლის ფორმატირებისთვის. ის ამრავლებს სივრცეებს ​​ბრძანების ხაზის სიგანეზე დაყრდნობით.
  • StrComp() - ორი სტრიქონის შედარების უნარი.
  • StrConv() - სტრიქონის კონვერტაციის უნარი (უნიკოდზე და უკან, დიდ და პატარა რეზერვებზე, სიტყვების პირველი ასოს დიდი ასოებით და ა.შ.):

    Dim sStr As String sStr = "გამარჯობა, მსოფლიო!" MsgBox StrConv ("გამარჯობა, მსოფლიო!", vbUpperCase)

    მუდმივები შეიძლება გამოყენებულ იქნას მეორე პარამეტრის პარამეტრად:

      • vbUpperCase:გარდაქმნის ყველა ტექსტის სიმბოლოს UPPER CASE-ში
      • vbLowerCase:აკონვერტებს ყველა ტექსტის სიმბოლოს პატარა რეესტრში
      • vbProperCase:გარდაქმნის თითოეული სიტყვის პირველ სიმბოლოს ზევით
      • *vbWide:აკონვერტებს სიმებიანი სიმბოლოები ერთი ბაიტიდან ორ ბაიტად
      • *vbNarrow:გარდაქმნის სტრიქონების სიმბოლოებს ორმაგი ბაიტიდან ერთ ბაიტად
      • **vbKatakana:გარდაქმნის ჰირაგანას პერსონაჟებს კატაკანას პერსონაჟებად
      • **vbHiragana:გარდაქმნის კატაკანას პერსონაჟებს ჰირაგანას პერსონაჟებად
      • ***vbUnicode:გარდაქმნის სტრიქონს უნიკოდად სისტემის ნაგულისხმევი კოდის გვერდის გამოყენებით
      • ***vbFromUnicode:გარდაქმნის უნიკოდის სტრიქონს სისტემის ნაგულისხმევ კოდის გვერდზე

    * გამოიყენება შორეული აღმოსავლეთის ლოკალიზაციისთვის
    ** გამოიყენება მხოლოდ იაპონიისთვის
    *** არ არის მხარდაჭერილი Macintosh ოპერაციულ სისტემებზე

  • StrReverse() - სტრიქონის „გადაბრუნება“ მისი სიმბოლოების საპირისპირო თანმიმდევრობით განთავსებით. ფუნქცია მუშაობს მხოლოდ Excel 2000 და უფრო მაღალიდან. ფუნქციის გამოყენების მაგალითი, ისევე როგორც სიტყვის გადაქცევის სხვა მეთოდები, შეგიძლიათ იხილოთ ამ სტატიაში: როგორ გადავატრიალოთ სიტყვა?
  • ჩანართი() არის კიდევ ერთი ფუნქცია, რომელიც გამოიყენება კონსოლის გამოსავლის ფორმატირებისთვის. ამრავლებს ჩანართის სიმბოლოებს თქვენს მიერ მითითებულ რიცხვში. თუ რაოდენობა არ არის მითითებული, უბრალოდ ჩასვით ჩანართის სიმბოლო. თქვენ ასევე შეგიძლიათ გამოიყენოთ მუდმივი ჩანართის სიმბოლოს სტრიქონის მნიშვნელობაში ჩასასმელად vbTab.
  • სიმებიანი() - გაძლევთ საშუალებას მიიღოთ სიმბოლოების მითითებული რაოდენობის სტრიქონი (რომლებიც ისევ თქვენ მიერ არის მითითებული). როგორც წესი, გამოიყენება ფუნქციასთან ერთად გამოსავლის ფორმატირებისთვის ლენ().

შემდეგი სამი ფუნქცია საშუალებას გაძლევთ იმუშაოთ სტრიქონების მასივთან

გაყოფა (<строка> [, <разделитель>]) – გარდაქმნის სტრიქონს ქვესტრიქონების მასივში. ნაგულისხმევად, სივრცე გამოიყენება როგორც დელიმიტერი. ეს ფუნქცია მოსახერხებელია წინადადების სიტყვებად დასაშლელად. თუმცა, ამ ფუნქციაში შეგიძლიათ მიუთითოთ ნებისმიერი სხვა დელიმიტერი. მაგალითად, Split(3, "ეს არის სატესტო წინადადება") აბრუნებს სამი სტრიქონის მნიშვნელობის მასივს: "This", "test", "sentence". შეუერთდი (<массивСтрок> [, <разделитель>]) – გარდაქმნის სტრიქონების მასივს ერთ სტრიქონად მითითებული გამიჯვნის საშუალებით. ფილტრი (<массивСтрок>, <строкаПоиск>[, <включение>] [, <сравнение>]) – სკანირებს სტრიქონების მნიშვნელობების მასივს და ეძებს ყველა ქვესტრიქონს, რომელიც ემთხვევა მოცემულ სტრიქონს. ამ ფუნქციას აქვს ოთხი არგუმენტი:<строкаПоиск>- საძიებო სტრიქონი;<включение>– პარამეტრი (ლოგიკური მნიშვნელობა), რომელიც აზუსტებს, დაბრუნებული სტრიქონები მოიცავს თუ არა მოძიებულ ქვესტრინგს, ან პირიქით, დაბრუნდება მხოლოდ ის რიგები, რომლებიც არ შეიცავს მოძიებულ სტრიქონს ქვესტრინგად;<сравнение>– პარამეტრი, რომელიც განსაზღვრავს სტრიქონების შედარების მეთოდს. კიდევ სამი ფუნქცია უზრუნველყოფს სტრიქონების კონვერტაციას: LCase(<строка>) – გარდაქმნის სტრიქონის ყველა სიმბოლოს მცირე რეზერვში, მაგალითად, LCase("MAIL") ფუნქცია აბრუნებს სტრიქონს "mail"; UCase(<строка>) – გარდაქმნის სტრიქონში ყველა სიმბოლოს დიდ რეგისტრში; StrConv(<строка>, <преобразование>) – ასრულებს რამდენიმე ტიპის სტრიქონის ტრანსფორმაციას მეორე პარამეტრიდან გამომდინარე. ეს პარამეტრი აღწერილია ჩაშენებული მუდმივებით, მაგალითად ფუნქცია StrConv("Russia", VbProperCase) აბრუნებს მნიშვნელობას "Russia".

და ბოლო ორი ფუნქცია ქმნის სიმბოლოების სტრიქონებს

სივრცე (<число>) – ქმნის სტრიქონს, რომელიც შედგება სივრცეების მითითებული რაოდენობისგან; სიმებიანი (<число>, <символ>) – ქმნის სტრიქონს, რომელიც შედგება პირველ არგუმენტში მითითებული სიმბოლოების რაოდენობისგან. თავად სიმბოლო მითითებულია მეორე არგუმენტში.

მაგალითი

შექმენით პროგრამა, რომელიც მუშაობს სიმებიანი ცვლადებით. ამისათვის შექმენით ფორმა, რომლის ეტიკეტები შეიცავს შემდეგ შეტყობინებებს: 1 ლეიბლი: მოხსენებულია პირველ ტექსტურ ველში შეყვანილი სტრიქონის სიგრძე (1 სტრიქონი); 2 label: გარდაქმნის მესამე ტექსტის ველის ყველა სიმბოლოს (მე-3 სტრიქონი) დიდ ასოებად; მე-3 ეტიკეტი: აჩვენებს პირველი და მეორე ტექსტის ველების შიგთავსს (სტრიქონები 1 და 2) ერთად.

შესრულების ტექნოლოგია

  • გახსენით Word, შეინახეთ დოკუმენტი და გადადით VBA რედაქტორში.
  • შექმენით ქვემოთ მოცემული სურათის მსგავსი ფორმა.
  • დაწერეთ მოვლენის დამმუშავებელი OK ღილაკისთვის.
  • შეადგინეთ პროგრამა.
  • გაუშვით ფორმა.

Private Sub CommandButton1_Click() Dim a როგორც სტრიქონი Dim b როგორც სტრიქონი Dim c როგორც სტრიქონი Dim k როგორც სტრიქონი Dim d როგორც სტრიქონი Dim n როგორც მთელი a=TextBox1.Text n=Len(a) Label7.Caption=„პირველის სიგრძე ხაზი არის” & n & "სიმბოლოები" c=TextBox3.Text k=Ucase(с) Label8.Caption=k b=TextBox2.ტექსტი d=a + " " + b Label9.Caption=d ბოლო ქვე

დავალება

აუცილებელია, რომ Excel-ში A1 უჯრაში ჩატარდეს ძიება A2 სვეტში მძიმეებით გამოყოფილი სიტყვებისთვის და შედეგი და ნაპოვნი სიტყვები, მათი გამეორებების რაოდენობით (თუ შესაძლებელია) საძიებო ტექსტში ჩაიწეროს. მეორე, მესამე, საკანში. (კიდევ უკეთესი იქნება, თუ ისინი რაღაცნაირად მონიშნული (ან ხაზგასმული) პირველ უჯრაში... რომ მაშინვე გამოჩნდნენ. აი, როგორ ათავსებთ სიტყვებს მასივში:

Visual Basic კოდი
1 2 3 4 5 6 Dim m() როგორც სტრიქონი If InStr(1, უჯრედები(1, 2). მნიშვნელობა, ","") > 0 შემდეგ m = Split(Replace(Cells(1, 2). მნიშვნელობა, " ", ""), " ,"") სხვაგვარად ReDim m(0): m(0) = Trim(Cells(1, 2). მნიშვნელობა) დასასრული თუ

და შემდეგ მარყუჟში თქვენ ეძებთ ყველა სიტყვას (ისევ მარყუჟში, წყობილი) დამატებულია 23 წუთის შემდეგ

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 ვარიანტი შეადარეთ ტექსტის ვარიანტი ექსპლიციტ Sub QWERT() Dim R, N, K Dim m() როგორც სტრიქონი If InStr(1, Cells(1, 2).Value, ",") > 0 შემდეგ m = Split(Replace(Cells( 1, 2).მნიშვნელობა, " ", ""), ",") სხვაგვარად ReDim m(0): m(0) = Trim(Cells(1, 2).მნიშვნელობა) End If For R = 0 To UBound( m) N = 1 თუ InStr(1, უჯრედები(1, 1). მნიშვნელობა, m(R)) > 0 შემდეგ K = InStr(N, უჯრედები(1, 1). მნიშვნელობა, m(R)) გააკეთე COLOR K , Len(m(R)) N = K + Len(m(R)) K = InStr(N, უჯრედები(1, 1). მნიშვნელობა, m(R)) მარყუჟი ხოლო K > 0 დასასრული, თუ შემდეგი R ბოლო ქვე ქვე COLOR(ST, LN) უჯრედებით(1, 1). სიმბოლოები (დაწყება:=ST, სიგრძე:=LN). შრიფტი .ფერი = RGB(0, 0, 255) .მუქი = ჭეშმარიტი დასასრული ბოლო ქვე

დაემატა 15 წუთის შემდეგ და ასე მოძებნის სიტყვის დასაწყისში და შეარჩევს მთელ სიტყვას

Visual Basic კოდი
1 2 3 4 5 6 7 8 9 10 11 Sub COLOR(ST, LN) LN = LN - 1 Do LN = LN + 1 Loop while VBA.Mid(Cells(1, 1). მნიშვნელობა, ST + LN, 1)<>" " უჯრედებით (1, 1). სიმბოლოები (დაწყება:=ST, სიგრძე:=LN). შრიფტი .ფერი = RGB(0, 0, 255) .მამამი = ჭეშმარიტი დასასრული ბოლო ქვე

შეგიძლიათ მოძებნოთ არა სიტყვის დასაწყისიდან, არამედ სიტყვის ნაწილის მიხედვით. — დაამატეთ კიდევ ერთი Do-Loop ციკლი. გადაიტანეთ მხოლოდ დასაწყისი (ST) მარცხნივ სივრცეში (http://www.cyberforum.ru/vba/thread567588.html)

როგორ: შეადაროთ სტრიქონი შაბლონს (Visual Basic)

შესაბამისობის შემოწმებასტრიქონები თარგზე String Data Type (Visual Basic) - Like ოპერატორი (Visual Basic) . Like ოპერატორის მარცხენა ოპერანდი არის სიმებიანი გამოხატულება, ხოლო მარჯვენა ოპერანდი არის შაბლონის სტრიქონი Like აბრუნებს ლოგიკურ მნიშვნელობას

პერსონაჟის შემოწმება

? - რომელიმე სიმბოლო

  • myString შედგება სიმბოლო W, რასაც მოჰყვება ნებისმიერი 2 სიმბოლო

    Dim sMatch როგორც ლოგიკური = myString Like "W??"

ნებისმიერი სიმბოლო სიიდან და დიაპაზონიდან

ნებისმიერი პერსონაჟი და შემდეგ ერთ-ერთი სიმბოლო A, C ან E

    Dim sMatch როგორც ლოგიკური = myString Like "?" შემთხვევის მგრძნობიარე

  • myString = num სიმბოლო და შემდეგ ერთი სიმბოლო დიაპაზონიდან: i, j, k, l, m ან n:

    Dim sMatch როგორც ლოგიკური = myString Like "num" შემთხვევის მგრძნობიარე

მუშაობს როგორც ნულოვანი სიგრძის სიმებიანი მასივის სტრიქონთან (""). საშუალებას გაძლევთ შეამოწმოთ, რომ სტრიქონი ცარიელია

სიმბოლო სიიდან ან პერსონაჟის გარეშე

  1. Like ოპერატორი გამოიყენება ორჯერ და შედეგები გაერთიანებულია Or Operator (Visual Basic) ან OrElse ოპერატორის (Visual Basic) გამოყენებით.
  2. პირველ განცხადების შაბლონში ჩადეთ სიმბოლოების სია კვადრატულ ფრჩხილებში ().
  3. მეორე განცხადების შაბლონში არ განათავსოთ არაფერი შემოწმების ადგილას. მაგალითი: შეამოწმეთ შვიდნიშნა ტელეფონის ნომერი phoneNum, რომელიც უნდა შეიცავდეს ზუსტად სამ ციფრს, რასაც მოჰყვება ინტერვალი, დეფისი, წერტილი ან სიმბოლოს გარეშე და შემდეგ ოთხი ციფრი. (პირველი სამი ციფრი არ შეიძლება განცალკევდეს ბოლო ოთხისგან - „არ არის სიმბოლო“) ნულოვანი, ჩნდება შეცდომა. თუ არგუმენტი მოყვანილია შედარება_ტიპი , არგუმენტი საწყისი_პოზიცია სავალდებულოა. ხაზი_1 საჭირო. სიმებიანი გამოხატულება, რომელსაც ეძებენ. ხაზი_2 საჭირო. სიმებიანი გამოხატულება, რომელსაც ეძებთ. შედარება_ტიპი სურვილისამებრ. განსაზღვრავს ტიპს სიმებიანი შედარება. თუ არგუმენტის მნიშვნელობა შედარება_ტიპი არის Null, ჩნდება შეცდომა. თუ არგუმენტი შედარება_ტიპი გამოტოვებული, შედარების ტიპი განისაზღვრება პარამეტრით მნიშვნელობა ოთხშიში. მიუთითეთ სწორი LCID (LocaleID) პარამეტრი ენის პარამეტრებში მითითებული შედარების წესების გამოსაყენებლად.

    Პარამეტრები

    არგუმენტი შედარება_ტიპი იყენებს შემდეგ პარამეტრებს:

    ღირებულებების დაბრუნება

    შენიშვნები

    ფუნქცია InStrBგამოიყენება სტრიქონში შემავალი ბაიტის მონაცემებით. ფუნქცია InStrBაბრუნებს ბაიტის პოზიციას და არა სიმბოლოს პოზიციას ერთი სტრიქონის მეორეში პირველი გაჩენის შესახებ.

    მაგალითები

    InStr ფუნქციის გამოყენება გამოსახულებაშიყოველ ჯერზე, როდესაც იყენებთ გამონათქვამებს, შეგიძლიათ გამოიყენოთ ფუნქცია InStr. მაგალითად, თუ გსურთ განსაზღვროთ პირველი წერტილის პოზიცია ( . ) ველში, რომელიც შეიცავს IP მისამართს (სახელად "IPAddress"), შეგიძლიათ გამოიყენოთ ფუნქცია InStrრომ იპოვო:

    InStr(1,"")

    ფუნქცია InStrათვალიერებს თითოეულ მნიშვნელობას "IPAddress" ველში და აბრუნებს პირველი წერტილის პოზიციას. ამიტომ, თუ IP მისამართის პირველი ოქტეტის მნიშვნელობა არის 10. , ფუნქცია აბრუნებს მნიშვნელობას 3.

    თქვენ შეგიძლიათ გამოიყენოთ სხვა ფუნქციები, რომლებიც იყენებენ ფუნქციის შედეგს InStr IP მისამართის ოქტეტის მნიშვნელობის ამოსაღებად, რომელიც წინ უსწრებს პირველ წერტილს, მაგალითად:

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

    ამ მაგალითში ფუნქცია InStr(1,"")აბრუნებს პირველი წერტილის პოზიციას. 1-ის გამოკლების შედეგად დგინდება პირველი პუნქტის წინა სიმბოლოების რაოდენობა, ამ შემთხვევაში - 2. შემდეგ ფუნქცია. მარცხენაამოიღებს ამ სიმბოლოებს "IPAddress" ველის მარცხენა მხრიდან და აბრუნებს მნიშვნელობას 10.

    ფუნქციის გამოყენებით InStr Visual Basic for Applications (VBA) კოდში

    ᲨᲔᲜᲘᲨᲕᲜᲐ.შემდეგი მაგალითები ასახავს Visual Basic for Applications (VBA) მოდულის გამოყენებას. VBA–სთან მუშაობის შესახებ დამატებითი ინფორმაციისთვის აირჩიეთ დეველოპერის მითითებაღილაკის გვერდით ჩამოსაშლელ სიაში ძიებადა შემდეგ შეიყვანეთ ერთი ან მეტი საკვანძო სიტყვა საძიებო ველში.

    ამ მაგალითში ფუნქცია InStrგამოიყენება ერთი სტრიქონის მეორეში პირველი გაჩენის პოზიციის მისაღებად.

    Dim SearchString, SearchChar, MyPos SearchString ="XXpXXpXXPXXP" " სტრიქონი მოსაძებნად. SearchChar = "P" " მოძებნეთ "P". ტექსტური შედარება დაწყებული პოზიციიდან 4. აბრუნებს 6. MyPos = Instr( 4, SearchString , SearchChar , 1) ორობითი შედარება დაწყებული პოზიციიდან 1. აბრუნებს 9. MyPos = Instr( 1, SearchString , SearchChar , 0) " ნაგულისხმევად შედარება ორობითია" (ბოლო არგუმენტი გამოტოვებულია). MyPos = Instr( SearchString , SearchChar ) " აბრუნებს 9. MyPos = Instr( 1, SearchString , "W" ) "აბრუნებს 0.

ხშირად პროგრამის სტრიქონები შეიცავს არასაჭირო უფსკრული სიმბოლოებს სტრიქონის ბოლოს ან დასაწყისში, რომლებიც უნდა წაიშალოს, რადგან ზედმეტმა წინამორბედმა ან უკანა სივრცეებმა შეიძლება გამოიწვიოს პრობლემები პროგრამაში.

VBA-ს აქვს სამი ფუნქცია, რომელიც შექმნილია სტრიქონიდან წამყვანი და მიმავალი ადგილების ამოსაღებად: LTrim, RTrim, მორთვა. გაითვალისწინეთ, რომ ეს ფუნქციები რეალურად არ ცვლის თავდაპირველ სტრიქონს, არამედ აბრუნებს სტრიქონის ასლს დამატებითი ადგილების ამოღებით.

სიმების სიგრძის განსაზღვრა

თქვენ, როგორც წესი, უნდა იცოდეთ სტრიქონის სიგრძე მომხმარებლისთვის შეტყობინებების ფორმატირებისას ან პროცედურის მიერ შეყვანილი სტრიქონების მონაცემების ფორმატირებისას Excel-ის სამუშაო ფურცელში ან Word დოკუმენტში. VBA იყენებს ფუნქციას ამ მიზნებისთვის ლენ. ქვემოთ მოცემულ ჩამონათვალში არის ორი სივრცე ფრჩხილებსა და სიტყვას შორის.



ფრთხილად უნდა იყოთ ფიქსირებული სიგრძის სიმების მიმართ. იმის გამო, რომ ფიქსირებული სიგრძის სტრიქონი ყოველთვის ერთი და იგივე სიგრძეა, Len ფუნქცია ყოველთვის აბრუნებს სტრიქონის დეკლარირებულ სიგრძეს, მიუხედავად სტრიქონის რეალური სიგრძისა. მაგალითად, თუ ფიქსირებული სიგრძის სტრიქონის ცვლადი StrokeName, რომელიც 15 სიმბოლოა, რეალურად შეიცავს სიტყვას "sun", მაშინ ფუნქცია Len (StrokeName)დააბრუნებს შედეგს 15. ამ შემთხვევაში, სტრიქონის რეალური სიგრძის გასარკვევად (ჩვენს შემთხვევაში - 6), თქვენ უნდა გამოიყენოთ ფუნქციების შემდეგი კომბინაცია: Len(Trim(StrokeName)).

სტრიქონების შედარება და ძიება

VBA-ს აქვს ორი ფუნქცია, რომელიც დაგეხმარებათ სტრიქონების შედარებაში: StrComp, InStr.

ფუნქცია StrComp

Სინტაქსი


StrComp(String1, String2[, შედარება])


String1, String2 - ნებისმიერი ორი სტრიქონი გამონათქვამი, რომელიც უნდა შედარდეს.

როდესაც StrComp შესრულებულია, ერთ-ერთი შემდეგი მნიშვნელობა ბრუნდება:

  • -1 თუ String1 ნაკლებია String2-ზე;
  • 0 თუ String1 და String2 ტოლია;
  • 1 თუ String1 მეტია String2-ზე.


ზემოაღნიშნული ჩამონათვალი ადარებს ორ სტრიქონს ტექსტის რეჟიმში: "ნაგულისხმევი სტრიქონი" და "ნაგულისხმევი სტრიქონი". შედარების შედეგი = 1, ე.ი. "ნაგულისხმევი სტრიქონი" უფრო დიდია ვიდრე "ნაგულისხმევი სტრიქონი".

სცადეთ სტრიქონების მრავალფეროვნება, რათა უკეთ გაიგოთ როგორ მუშაობს StrComp ფუნქცია.

ფუნქცია InStr

InStr ფუნქცია საშუალებას გაძლევთ განსაზღვროთ, შეიცავს თუ არა ერთი სტრიქონი მეორე სტრიქონს.

Სინტაქსი


StrComp(String1, String2[, შედარება])


String1, String2 - ნებისმიერი სწორი სტრიქონის გამონათქვამი. ფუნქცია ამოწმებს შეიცავს თუ არა String1 String2-ში.

შედარება არის არასავალდებულო არგუმენტი, რომელიც შეიძლება იყოს რომელიმე შემდეგი წინასწარ განსაზღვრული მუდმივი (თუ გამოტოვებულია, გამოიყენება Option Compare მიმდინარე პარამეტრი):

  • vbBinaryCompare - ორი სტრიქონის ორობითი შედარება;
  • vbTextCompare - ორი სტრიქონის ტექსტის შედარება;
  • vbDatabaseCompare - გამოიყენება მხოლოდ Microsoft Access-ში.

დაწყება - არჩევითი არგუმენტი, არის რიცხვითი გამოხატულება და განსაზღვრავს სიმბოლოს პოზიციას String1-ში, საიდანაც უნდა დაიწყოს შემოწმება.


InStr აბრუნებს რიცხვს, რომელიც მიუთითებს სიმბოლოს პოზიციას String1-ში, სადაც String2 იქნა ნაპოვნი. თუ InStr ვერ პოულობს String2-ს String1-ში, მაშინ ბრუნდება 0. თუ String1 (ან String2) არის Null, მაშინ ფუნქცია ასევე აბრუნებს Null-ს.



ხაზის გაყოფა

ზოგჯერ საჭირო ხდება სტრიქონის დაყოფა მის შემადგენელ ნაწილებად. VBA-ში სამი ფუნქცია წყვეტს ამ პრობლემას: მარცხენა, მარჯვენა, შუა.

მარცხენა ფუნქცია

Სინტაქსი


მარცხენა (სტრიქონი, სიგრძე)


ფუნქცია აბრუნებს სტრიქონის ასლს, დაწყებული პირველი სიმბოლოთი და სიგრძით მითითებულ სიმბოლოთა რიცხვის ჩათვლით. თუ სიგრძე არის რიცხვი, რომელიც აღემატება სტრიქონის რეალურ სიგრძეს, მაშინ მთელი სიმებიანი გამოხატულება ბრუნდება.

მარჯვენა ფუნქცია

Სინტაქსი


მარჯვენა (სტრიქონი, სიგრძე)


სტრიქონი არის ნებისმიერი სწორი სიმებიანი გამოხატულება.

სიგრძე - ნებისმიერი რიცხვითი მნიშვნელობა.


ფუნქცია აბრუნებს სტრიქონის ასლს, დაწყებული ბოლო სიმბოლოთი და მოიცავს, მარჯვნიდან მარცხნივ, სიგრძით მითითებულ სიმბოლოთა რაოდენობას. თუ სიგრძე არის რიცხვი, რომელიც აღემატება სტრიქონის რეალურ სიგრძეს, მაშინ მთელი სიმებიანი გამოხატულება ბრუნდება. მარჯვენა ფუნქცია ყოველთვის აკოპირებს სიმბოლოებს სტრიქონის ბოლოდან დასაწყისამდე.

შუა ფუნქცია

Სინტაქსი


შუა (სტრიქონი, დასაწყისი, [, სიგრძე])


სტრიქონი არის ნებისმიერი სწორი სიმებიანი გამოხატულება.

სიგრძე, დაწყება - ნებისმიერი რიცხვითი მნიშვნელობა.


Mid ფუნქცია აბრუნებს სტრიქონის ასლს, რომელიც იწყება Start არგუმენტით მითითებულ სტრიქონში სიმბოლოს პოზიციიდან. არჩევითი Length არგუმენტი განსაზღვრავს სიმბოლოების რაოდენობას, რომლებიც უნდა დააკოპიროთ String-დან Mid-მდე. თუ Start შეიცავს სტრიქონის რეალურ სიგრძეზე მეტ რიცხვს, მაშინ ცარიელი სტრიქონი ბრუნდება.



სიმბოლოები, რომელთა შეყვანა შეუძლებელია კლავიატურიდან

ხშირად ხდება, რომ თქვენ უნდა შეიყვანოთ სიმბოლო, რომლისთვისაც კლავიატურაზე არ არის გასაღები (მაგალითად, საავტორო უფლებების სიმბოლო). კიდევ ერთი სიტუაციაა, როდესაც თქვენ გჭირდებათ VBA სერვისის სიმბოლოს სტრიქონში ჩართვა (ყველაზე გავრცელებული შემთხვევაა ორმაგი ბრჭყალების ჩართვა).

სიმბოლოების ჩასართავად სტრიქონში, რომელთა შეყვანა შეუძლებელია კლავიატურიდან, ან რომლებსაც განსაკუთრებული მნიშვნელობა აქვთ VBA-სთვის, გამოიყენეთ ფუნქცია ქრ.

Სინტაქსი


Chr (შარკოდი)


Charcode - ნებისმიერი რიცხვითი გამოხატულება, რომელიც არის კომპიუტერის მიერ გამოყენებული სიმბოლოების ნაკრების სწორი კოდი. უნდა იყოს მთელი რიცხვი 0-დან 255-მდე.

Chr ფუნქცია არგუმენტად იღებს ერთი სიმბოლოს კოდს და აბრუნებს სტრიქონს, რომელიც შეიცავს ამ კოდის შესაბამის სიმბოლოს. ეს ფუნქცია გამოიყენება ზემოაღნიშნულ ჩამონათვალში ხაზის შესანახად ეკრანზე შეტყობინების ჩვენებისას Chr (13).


იმის გამო, რომ სიმბოლოები, რომლებიც გამოიყენება ახალი ხაზის დასაწყებად, ძალიან მნიშვნელოვანია შეტყობინებების და სხვა სტრიქონების მონაცემების ფორმატირებისას, რომლებიც მანიპულირებს VBA რუტინებით, ამ სიმბოლოებისთვის არის რამდენიმე წინასწარ განსაზღვრული მუდმივი Chr ფუნქციის გამოყენების აუცილებლობის თავიდან ასაცილებლად:

  • vbCr არის ვაგონის დაბრუნების სიმბოლო. Chr(13)-ის ექვივალენტი
  • vbLf - ოფსეტური სიმბოლო ერთი ხაზით. Chr(10)-ის ექვივალენტი
  • vbCrLf - ვაგონის დაბრუნება + ოფსეტური სიმბოლო ერთი ხაზით. Chr(13)+ Chr(10)-ის ექვივალენტი
  • vbTab - ჩანართის სიმბოლო. Chr(9) ეკვივალენტი

სიის სანახავად კოდი-სიმბოლოთქვენ უნდა გახსნათ VBA დახმარების სისტემა და მოთხოვნის შემთხვევაში "გმირების ნაკრები"წარმოდგენილი იქნება შესაბამისი ცხრილი.



მონაცემთა მნიშვნელობების ფორმატირება

ძალიან ხშირად, ამა თუ იმ მიზეზის გამო, პროგრამის გამოსავალზე მონაცემების ფორმატი მთლიანად არ გვერგება. ეს პრობლემა მოგვარებულია ფუნქციით ფორმატი.

VBA ფორმატის ფუნქცია Excel-ში ფორმატის ფუნქციის იდენტურია და იყენებს იგივე მონაცემთა ფორმატირების ჩანაცვლების ველებს.

Სინტაქსი


ფორმატი (გამოხატვა [, ფორმატი[, კვირის პირველი დღე [, წლის პირველი კვირა]]])


გამოხატვა - ნებისმიერი მართებული გამოთქმა (აუცილებელი არგუმენტი).

ფორმატი არის დასახელებული ან მომხმარებლის მიერ განსაზღვრული ფორმატის სწორი გამოხატულება.

Firstdayofweek არის მუდმივი, რომელიც განსაზღვრავს კვირის პირველ დღეს.

Firstweekofyear - მუდმივი, რომელიც განსაზღვრავს წლის პირველ კვირას.


ფორმატის ფუნქციის გამოსაყენებლად, თქვენ უნდა დააყენეთ წინასწარ განსაზღვრული ფორმატი, ან შექმენით კონკრეტული ფორმატის სურათი, ჩანაცვლების სიმბოლოების გამოყენებით.


დასახელებული ფორმატები Format ფუნქციით გამოსაყენებლად

დასახელებული ფორმატი მოქმედება
ზოგადი თარიღი აფორმებს თარიღისა და დროის ინფორმაციას თარიღის თანმიმდევრულ რიცხვად ამ კომპიუტერისთვის თარიღისა და დროის ფორმატის პარამეტრების გამოყენებით.
ხანგრძლივი პაემანი აფორმებს მხოლოდ თარიღის ნაწილს თანმიმდევრულ თარიღად, კომპიუტერის გრძელი თარიღის ფორმატის პარამეტრების გამოყენებით.
საშუალო თარიღი აფორმებს მხოლოდ თარიღის ნაწილს თანმიმდევრულ თარიღად, თქვენი კომპიუტერის საშუალო თარიღის ფორმატის პარამეტრების გამოყენებით.
მოკლე თარიღი აფორმებს მხოლოდ თარიღის შემცველ ნაწილს თანმიმდევრულ თარიღად, კომპიუტერის პარამეტრების გამოყენებით მოკლე თარიღის ფორმატისთვის.
Დიდი დრო აფორმებს მხოლოდ დროის ნაწილს თანმიმდევრულ თარიღად, კომპიუტერის Long time ფორმატის პარამეტრების გამოყენებით.
საშუალო დრო აფორმებს მხოლოდ დროის ნაწილს თანმიმდევრულ თარიღად, კომპიუტერის საშუალო დროის ფორმატის პარამეტრების გამოყენებით.
მოკლე დრო აფორმებს მხოლოდ დროის ნაწილს თანმიმდევრულ თარიღად, კომპიუტერის პარამეტრების გამოყენებით მოკლე დროის ფორმატისთვის.
ზოგადი ნომერი აფორმებს რიცხვს სტრიქონად სპეციალური სიმბოლოების გარეშე.
ვალუტა აფორმებს რიცხვს ვალუტის სიმბოლოთი, ათასობით გამყოფი და მხოლოდ ორი ათობითი ადგილი.
დაფიქსირდა აფორმებს რიცხვს ისე, რომ ყოველთვის იყოს მინიმუმ ერთი ციფრი ათწილადამდე და მინიმუმ ორი ციფრი მის შემდეგ.
სტანდარტული აფორმებს რიცხვს ათასობით გამყოფით ისე, რომ იყოს მინიმუმ ერთი ციფრი ათწილადის გამყოფამდე და მინიმუმ ორი ციფრი მის შემდეგ.
პროცენტი აფორმებს რიცხვს პროცენტულად მისი 100-ზე გამრავლებით და პროცენტის სიმბოლოს დამატებით.
Სამეცნიერო აფორმებს რიცხვს ჩვეულებრივ ექსპონენციალურ ფორმატში.
Კი არა სტრიქონი "დიახ" ბრუნდება, თუ ფორმატირებული რიცხვი არ არის ნულოვანი, წინააღმდეგ შემთხვევაში - "არა".
Ჭეშმარიტი და ცრუ სტრიქონი "True" ბრუნდება, თუ ფორმატირებული რიცხვი არ არის ნულოვანი, წინააღმდეგ შემთხვევაში - "False".
Ჩართვა გამორთვა სტრიქონი "On" ბრუნდება, თუ ფორმატირებული რიცხვი არ არის ნულოვანი, წინააღმდეგ შემთხვევაში - "Off".

პლაცჰოლდერები მორგებული ფორმატების შესაქმნელად

ჩანაცვლების სიმბოლო მოქმედება (მაგალითად 1234.45 ნომრის გამოყენებით)
0 რიცხვითი სიმბოლო, რომელიც აჩვენებს ციფრს, თუ რომელიმე ამ მდგომარეობაშია, ან 0-ს, თუ ის არ არის. თქვენ შეგიძლიათ გამოიყენოთ 0 სიმბოლო მთელი რიცხვებისთვის წამყვანი ნულების საჩვენებლად, ხოლო ათწილადებისთვის შემდეგი ნულები: 00000.000 აჩვენებს 01234.450
# რიცხვითი სიმბოლო აჩვენებს ციფრს, თუ არის ერთი ამ პოზიციაზე, წინააღმდეგ შემთხვევაში ის არაფერს აჩვენებს. # შემავსებლის სიმბოლო უდრის 0-ს, გარდა იმისა, რომ წინა და ბოლო ნულები არ არის ნაჩვენები: #####.### აჩვენებს 1234.45
$ აჩვენებს დოლარის ნიშანს: $###,###.00 აჩვენებს $1,234.45
. ათწილადი ჩანაცვლების სიმბოლო, აჩვენებს ათწილადის წერტილს მითითებულ პოზიციაზე 0 ჩანაცვლების სიმბოლოების სტრიქონში: #.##.## აჩვენებს 1234.45
% პროცენტის სიმბოლო, ამრავლებს მნიშვნელობას 100-ზე და ამატებს პროცენტის ნიშანს ადგილსამყოფელთა მიერ მითითებულ პოზიციაზე 0:#.#0.00% აჩვენებს რიცხვს 0.12345, როგორც 12.35% (დამრგვალება ხდება)
, ათასობით გამყოფი, ამატებს მძიმეებს, როგორც ათასობით გამყოფებს 0 და # ჩანაცვლების სტრიქონებში: ###,###,###.00 აჩვენებს 1,234.45
ე-ე- აჩვენებს მნიშვნელობას ექსპონენციალურ ფორმატში ექსპონენტით მხოლოდ უარყოფითი მნიშვნელობებისთვის: #.####E-00 აჩვენებს 1.23445E03
E+ e+ აჩვენებს მნიშვნელობას ექსპონენციალურ ფორმატში, როგორც უარყოფითი, ასევე დადებითი მნიშვნელობების მაჩვენებლით: #.####E+00 აჩვენებს 1.23445E+03
/ გამოყოფს დღე, თვე და წელი თარიღის მნიშვნელობების ფორმატირებისთვის.
განსაზღვრავს, თუ როგორ უნდა აჩვენოს თვეები თარიღებში: m აჩვენებს 1, მმ - 01, მმმ - იანვარს, მმმმ - იანვარს
განსაზღვრავს, როგორ გამოჩნდეს დღეები თარიღებში: d აჩვენებს 1, dd - 01, ddd - მზე, dddd - კვირა
აჩვენებს წელიწადის დღეს, როგორც რიცხვი 1-დან 366-მდე
წ.წ განსაზღვრავს, თუ როგორ უნდა აჩვენოს წლები თარიღებში: წ - 66, წწ - 1966 წ.
აჩვენებს წლის კვარტალს რიცხვის სახით 1-დან 4-მდე
აჩვენებს კვირის დღეს რიცხვად (1 - კვირა)
ww აჩვენებს წლის კვირას, როგორც რიცხვი 1-დან 54-მდე
: გამოყოფს საათებს, წუთებს და წამებს დროის ფორმატის მნიშვნელობებში: სთ:მმ:სს - 01:01:01, სთ:მ:წმ - 1:1:1
განსაზღვრავს საათების ჩვენებას: hh - 01, h - 1
განსაზღვრავს წუთების ჩვენებას: მმ - 01, m - 1
განსაზღვრავს წამების ჩვენებას: ss - 01, s - 1
ᲨᲣᲐᲓᲦᲔᲛᲓᲔ ᲨᲣᲐᲦᲐᲛᲔᲛᲓᲔ აჩვენებს დროს 12-საათიანი დროის ფორმატში დამატებული AM ან PM
@ სიმბოლოების ჩანაცვლება, რომელიც აჩვენებს სივრცეს, თუ ფორმატირებულ სტრიქონში შესატყვისი სიმბოლო არ არის.
აჩვენებს ყველა სიმბოლოს დიდი ასოებით.
> აჩვენებს ყველა სიმბოლოს მცირე ასოებით.
ქრ

Chr ფუნქცია

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

ფუნქცია ქრ(არაქტე ) საშუალებას გაძლევთ მიიღოთ სიმბოლო მისი ANSI ან Unicode რიცხვითი კოდის მნიშვნელობით

დაბრუნების ღირებულება

ფუნქციები ქრ, ChrB, ChrWდააბრუნეთ Variant ტიპის String ქვეტიპის მნიშვნელობა, რომელიც შეიცავს სიმბოლოს, რომელიც შეესაბამება მითითებულ ANSI ან Unicode სიმბოლოს კოდს. ფუნქციები Chr$, ChrB$, ChrW$შესაბამისად დააბრუნეთ String ტიპის მნიშვნელობა

შენიშვნა

ქრდა Chr$დააბრუნეთ სიმბოლო მისი ANSI კოდირებით
ChrBდა ChrB$დაბრუნების ერთი ბაიტიხაზი
ChrWაბრუნებს Unicode სიმბოლოს, თუმცა არა Unicode სისტემებზე მისი ქცევა მსგავსია ქრ
გამოიყენეთ პარამეტრებში ჩარკოდი 255-ზე მეტი მნიშვნელობები წარმოქმნის გაშვების შეცდომებს 5: არასწორი პროცედურის გამოძახება ან არგუმენტი ან 6: Overflow

Პარამეტრები CharCode საჭირო არგუმენტი არის Long მნიშვნელობა, რომელიც განსაზღვრავს სიმბოლოს. ჩვეულებრივ ფუნქცია ქრგამოიყენება ტექსტის სტრიქონებში დაუბეჭდავი სიმბოლოების ჩასმისას (გადაბრუნება, ხაზის მიწოდება, ტაბულატორი და ა.შ.). კოდები 0-31 შეესაბამება სტანდარტულ ASCII საკონტროლო სიმბოლოებს. Მაგალითად, ქრ(10) აბრუნებს ახალი ხაზის სიმბოლოს მაგალითი Dim retval retval = ქრ(65) Debug.Print retval " აბრუნებს A კატეგორია

განყოფილებაში კითხვაზე ხალხი, გთხოვთ, დეტალურად ახსნათ, რას ნიშნავს ფუნქცია ord(x) და მისი შებრუნებული chr(x) პასკალში? ავტორის მიერ მოცემული ნიკ ბრაუნისაუკეთესო პასუხია არსებობს სიმბოლოების სპეციალური ცხრილი (გაფართოებული ASCII კოდი, როდესაც თითოეულ სიმბოლოს აქვს რიცხვითი მნიშვნელობა, ცხრილში არის 255 მნიშვნელობა, ანუ თითოეულ სიმბოლოს ენიჭება ნომერი,
chr(0..254) გარდაქმნის რიცხვს (ერთი ბაიტი) სიმბოლოდ, რომელსაც ეს რიცხვი ეკუთვნის, მაგალითად chr(71) შედეგი იქნება ასო "G", ასევე კლავიატურაზე ღილაკების დაჭერით წარმოიქმნება საკუთარი კოდი. ეს არის ზუსტად კოდი ამ ოპერატორში მოთავსებისას და მისცემს შედეგს რომელი კლავიშის დაჭერა, ეს მე ვარ მაგალითად. მაგრამ ORD(x) ოპერატორი აკეთებს ამ პროცესს საპირისპირო თანმიმდევრობით.
ჩვენ ვაყენებთ მნიშვნელობის სიმბოლოს და ვიღებთ რიცხვს 0-დან 254-მდე (ერთი ბაიტი)
მაგალითად ORD("G") მოგვცემს შედეგს 71 (ათწილადი ფორმატით)
სულ ესაა როგორც ჩანს!!!

პასუხი ეხლა კატიონაჩიკი[ახალშობილი]
მარტივია, მართლა)
Ord ("X") - დააბრუნებს სიმბოლო X-ის კოდს ASKII ცხრილიდან.
შებრუნებული ფუნქციის შედეგი იქნება სიმბოლო, რომელიც შეესაბამება შეყვანილ კოდს (საიდანაც აღებულია ფუნქცია) იმავე ASCII ცხრილიდან.


პასუხი ეხლა ჯური[გურუ]
ეს არ არის ორმხრივი ფუნქციები!
Ord ფუნქცია აბრუნებს ჩამოთვლილი ტიპის რიგით მნიშვნელობას.
დათვლა იწყება ნულიდან.
ბაიტის ტიპისთვის ფუნქცია დააბრუნებს რეალურ მნიშვნელობას - რიგითი რიცხვი ემთხვევა მნიშვნელობას.
char ტიპისთვის ფუნქცია დააბრუნებს სიმბოლოს სერიულ ნომერს, რომელიც (რიცხვი შემთხვევითია) ემთხვევა ASCII კოდს.
chr ფუნქცია აბრუნებს სიმბოლოს მოცემული ASCII კოდით.
დასკვნა: უბრალოდ, სიმბოლურ ფასეულობებთან დაკავშირებით, ისინი მართლაც მოქმედებენ როგორც ერთმანეთის საპირისპირო...
მაშასადამე, შეგვიძლია ვთქვათ, რომ ord ფუნქცია არის chr ფუნქციის ინვერსია, მაგრამ არა პირიქით - chr ფუნქცია არ არის ord ფუნქციის შებრუნებული, ვინაიდან ord ფუნქციის ფარგლები არ შემოიფარგლება მხოლოდ სიმბოლოებთან მუშაობით!