VBA funksiyalaridan foydalanishga misollar. Satrlar bilan ishlash uchun Oracle Vba excel funksiyalarining o'rnatilgan funksiyalari

  • A.S.C. () - bu funksiya o'tgan belgining raqamli kodini qaytarish imkonini beradi. Masalan, ASC("D") 68 ni qaytaradi. Bu funksiya keyingi yoki oldingi harfni aniqlash uchun foydalidir. Odatda funksiya bilan birgalikda ishlatiladi Chr(), teskari amalni bajaradi - uzatilgan raqamli kodga muvofiq belgini qaytaradi. Bu funktsiyaning variantlari: AscB() Va AscW():
    • AscB () - belgi uchun raqamli kodning faqat birinchi baytini qaytaradi.
    • AscW () - Unicode kodlashda belgi kodini qaytaradi
  • Chr () - belgini raqamli kodi bilan qaytaradi. Asc() funktsiyasi bilan birgalikda foydalanish mumkin, lekin ko'pincha u xizmat belgisini chop etish kerak bo'lganda ishlatiladi. (masalan, tirnoq - "), chunki Siz VBA kodiga shunchaki tirnoq kirita olmaysiz (siz ikki marta qo'yishingiz kerak). Bu men odatda foydalanadigan funksiya.

    Qilichni satr sifatida xiralashtirish sWord = Chr(34) & "Qo'shtirnoq ichidagi so'z" va Chr(34)

    Ushbu funktsiya uchun variantlar mavjud - ChrB() Va ChrW(). Funktsiya uchun bir xil variantlarga o'xshash tarzda ishlang Asc().

  • InStr () Va InStrRev () - eng mashhur xususiyatlardan biri. Satr oʻzgaruvchisi tanasidagi belgi yoki belgilar ketma-ketligini aniqlash va ularning oʻrnini qaytarish imkonini beradi. Agar ketma-ketlik topilmasa, u holda 0 qaytariladi.

    Dim sStr As String sStr = "w" Agar InStr(1, "Salom, Dunyo!", sStr, vbTextCompare) > 0 Keyin MsgBox "Qidiruv so'zi mavjud!" Boshqa MsgBox "Qidirilgan so'z yo'q!" Agar tugaydi

    Funktsiyalar orasidagi farq shundaki, InStr() belgilangan so'zni satr boshidan, InStrRev() esa satr oxiridan qidiradi.

  • Chapga () , To'g'ri () , O'rta () - mos ravishda chap, o'ng yoki o'rtadagi mavjud satr o'zgaruvchisidan siz ko'rsatgan belgilar sonini olish imkoniyati.
    Dim sStr As String sStr = "Salom, dunyo!" MsgBox Mid(sStr, 1, 5)

    Dim sStr As String sStr = "Salom, dunyo!" MsgBox Mid(sStr, 1, 5)

  • Len () - qatordagi belgilar sonini olish qobiliyati. Ko'pincha looplar, almashtirish operatsiyalari va boshqalar bilan ishlatiladi.
  • LCase () Va UCase () - satrni mos ravishda kichik va katta harflarga aylantirish. Ko'pincha taqqoslashda holat muhim bo'lmasa, taqqoslash uchun qiymat tayyorlash uchun ishlatiladi (familiyalar, kompaniya nomlari, shaharlar va boshqalar).
  • Lset () Va RSset () - bir o'zgaruvchini uzunligini o'zgartirmasdan boshqasining belgilari bilan to'ldirish qobiliyati (mos ravishda chap va o'ng). Qo'shimcha belgilar kesiladi va etishmayotgan belgilar o'rniga bo'sh joylar qo'yiladi.
  • LTrim () , RTrim () , Kesish () - mos ravishda chap, o'ng yoki chap va o'ngdagi bo'shliqlarni olib tashlash qobiliyati.
  • O'zgartiring () - satrdagi bir belgilar ketma-ketligini boshqasiga almashtirish qobiliyati.
    Dim sStr As String sStr = "Salom, dunyo!" MsgBox almashtirish(sStr, "Salom", "Bay")

    Dim sStr As String sStr = "Salom, dunyo!" MsgBox almashtirish(sStr, "Salom", "Bay")

  • Kosmos () - siz ko'rsatgan bo'shliqlar sonidan qatorni oling;
    Yana bir shunga o'xshash funktsiya Spc () , bu konsol chiqishini formatlash uchun ishlatiladi. Buyruqlar satrining kengligi asosida bo'shliqlarni ko'paytiradi.
  • StrComp () - ikki qatorni solishtirish qobiliyati.
  • StrConv () - satrni aylantirish qobiliyati (Unicode va orqaga, katta va kichik harflarga, so'zlarning birinchi harfini bosh harfga yozing va hokazo):
    Dim sStr As String sStr = "Salom, dunyo!" MsgBox StrConv("Salom, Dunyo!", vbUpperCase)

    Dim sStr As String sStr = "Salom, dunyo!" MsgBox StrConv("Salom, Dunyo!", vbUpperCase)

    Konstantalar ikkinchi parametr parametri sifatida ishlatilishi mumkin:

    • vbUpperCase: Barcha matn belgilarini YUQO‘R XARFga o‘zgartiradi
    • vbLowerCase: Barcha matn belgilarini kichik harflarga o'zgartiradi
    • vbProperCase: Har bir so'zning birinchi belgisini Katta harfga o'zgartiradi
    • *vbWide: Satr belgilarini bir baytdan ikki baytga o'zgartiradi
    • *vbNarrow: Satr belgilarini ikki baytdan bir baytga o'zgartiradi
    • **vbKatakana: Hiragana belgilarini Katakana belgilariga aylantiradi
    • **vbHiragana: Katakana belgilarini Hiragana belgilariga aylantiradi
    • ***vbUnicode: Tizimning standart kod sahifasi yordamida satrni Unicode ga o'zgartiradi
    • ***vbFromUnicode: Unicode satrini tizimning standart kod sahifasiga o'zgartiradi
    • * Uzoq Sharqni mahalliylashtirish uchun amal qiladi
      ** Faqat Yaponiya uchun amal qiladi
      *** Macintosh operatsion tizimlarida qo'llab-quvvatlanmaydi

  • StrReverse () - belgilarni teskari tartibda joylashtirish orqali satrni “teskari” qilish. Funktsiya faqat Excel 2000 va undan yuqori versiyalarda ishlaydi. Funktsiyadan foydalanish misolini, shuningdek, so'zni aylantirishning boshqa usullarini ushbu maqolada topish mumkin: Qanday qilib so'zni aylantirish kerak?
  • Tab () konsol chiqishini formatlash uchun foydalaniladigan boshqa funksiyadir. Siz ko'rsatgan raqamdagi yorliq belgilarini takrorlaydi. Agar miqdor belgilanmagan bo'lsa, shunchaki yorliq belgisini kiritadi. Shuningdek, satr qiymatiga yorliq belgisini kiritish uchun doimiydan foydalanishingiz mumkin vbTab.
  • String () - belgilangan miqdordagi belgilar qatorini olish imkonini beradi (yana siz belgilagansiz). Odatda funktsiya bilan birgalikda chiqishni formatlash uchun ishlatiladi Len().

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

Variant 1

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

Variant

Bayt massividan ham foydalanishingiz mumkin:

Sub n() Dim Mass() Bayt sifatida, n As Long, Zam As String, TXT As String TXT = "="" DMITRY VLADIMIROVICH KOROTEEV" Mass = StrConv(TXT, vbFromUnicode) uchun n = 0 ga UBound(Mass) Agar Massa(n)<>34 va massa (n)<>61 Keyin Zam = Zam + Chr$(Mass(n)) Keyingi MsgBox Zam End Sub

Variant

Yoki o'rta bilan filtrlash:

Sub nn() Dim n As Long, TXT As String, L As String, Zam As String TXT = "="" DMITRY VLADIMIROVICH KOROTEEV" For n = 1 To Len(TXT) L = Mid$(TXT, n, 1) Agar L<>"""" Va L<>"=" Keyin Zam = Zam + L Keyingi MsgBox Zam End Sub

6-qator husky bilan almashtirilishi mumkin:
Visual Basic kodi
1
Agar L “[!””=]” yoqsa, Zam = Zam + L

Variant

Shuningdek, pozitsiyani qidirish va rekursiya orqali:

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 satr sifatida, qanday satr sifatida, ixtiyoriy Pos = 1) Dim n, agar Pos bo'lsa, uzunligi.<>0 Keyin 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

Siz oddiy iboralarni ham ishlatishingiz mumkin, lekin men ularni bilmayman.

Variant

O'ngdan chapga qidiruv va rekursiya orqali:

Visual Basic kodi
1 2 3 4 5 6 7 8 Funksiyani oʻzgartirish(txt satr sifatida, nima qator sifatida, ixtiyoriy pos kabi uzun) Dim n boʻlsa Pos = 0 boʻlsa, Pos = Len(txt) Agar Pos boʻlsa<>-1 Keyin n = InStrRev(txt, What, Pos) Change = Change(txt, What, IIf(n = 1, -1, n - 1)) + Mid$(txt, n + 1, Pos - n) End If End Function

Variant

Va yana bor Split Va Qo'shilish

Strb = Qo'shilish(Ajratish(Qo'shilish(Ajratish(strW, "="), ""), """), "")

Mavzudan tashqari: Ammo bu sadistlar uchun

Katta va kichik harflar

ActiveDocument.Range bilan "katta harf.Matn = Ucase(.Matn) "kichik harf.Matn = Lcase(.Matn) bilan tugaydi

yoki StrConv() - satrni aylantirish (Unicode va orqaga, katta va kichik harflarga, so'zlarning birinchi harfini bosh harfga yozish va hokazo) - pastga qarang.

String operatsiyalari

String tipidagi ma'lumotlar uchun faqat bitta operatsiya mavjud - birlashtirish (birlashma). Masalan, "Peter" & » » & "Ivanovich" uchta satr qiymatini birlashtirish natijasi "Pyotr Ivanovich" qatori bo'ladi. Birlashtirish operatsiyasi uchun boshqa operatordan ham foydalanish mumkin, masalan: “o'n” + “ming”. Ushbu iboralar orasidagi farq shundaki, birinchi holda, operandlar har qanday turdagi qiymatlar bo'lishi mumkin (ular oddiygina satrlarga aylantiriladi), ikkinchisida esa ikkala operand ham String tipida bo'lishi kerak. Satrlar bilan ishlash uchun juda ko'p sonli funktsiyalar mavjud (jadval. Satrlar bilan ishlash funktsiyalari).

Jadval "Stringlar bilan ishlash funktsiyalari"

Funktsiya Tavsif Misol
Len(koʻcha) Ipning uzunligini aniqlaydi a=len (“Belgilar”) dan a=9 kelib chiqadi
Chap (<строка>, <длина>) Argumentlardan ko'chirmalar<строка>chap tomonda belgilangan belgilar soni Left("1234string", 4) ="1234"
To'g'ri(<строка>, <длина>) Argumentlardan ko'chirmalar<строка>o'ng tomonda belgilangan belgilar soni O'ng(" 1234string", 6) "string"
O'rta(<строка>, <старт> [, <длина>]) Argumentlardan ko'chirmalar<строка>pozitsiyadan boshlab belgilangan belgilar soniga ega pastki qator<старт> Oʻrta("12345678", 4.3) "456"
O'rta(<строка>, <старт>) Joydan pastki qator chiqariladi<старт>qatorning oxirigacha Oʻrta("12345678", 4) "45678"
LTrim(<строка>) Satr boshidagi bo'shliqlarni olib tashlaydi LTrim("chop etish") ="chop etish"
RTrim (<строка>) Satr oxiridagi bo'shliqlarni olib tashlaydi RTrim("chop etish") = "chop etish"
qirqish(<строка>) Satrning boshida va oxiridagi bo'shliqlarni olib tashlaydi Trim("chop etish") ="chop etish"
InStr([<старт>, ] < строка1>, <строка2> [, <сравнение>]) Satrdagi pastki qatorni qidiradi. Satrning birinchi paydo bo'lishining o'rnini qaytaradi<строка2>qatorga<строка1>, <старт>— qidiruv boshlanadigan pozitsiya. Agar bu argument o'tkazib yuborilsa, qidiruv satr boshidan boshlanadi Instr("C:Temp test.mdb", "Test")=9 Agar qidiruv qatori belgilangan qatorda bo'lmasa, funksiya 0 ni qaytaradi
InStrRev([<старт>, ] <строка1>, <строка2> [, <сравнение>]) Satrdagi pastki qatorni qidiradi, lekin qidiruvni satr oxiridan boshlaydi va pastki qatorning oxirgi paydo bo'lish o'rnini qaytaradi. Ixtiyoriy argument<сравнение>ikki satr orasidagi taqqoslash turini belgilaydi
almashtiring(<строка>, <строкаПоиск>, <строкаЗамена>) Satrdagi bitta pastki qatorni boshqasiga almashtirish imkonini beradi. Bu funksiya argumentning barcha holatlarini qidiradi<строкаПоиск>bahsda<строка>va ularni almashtiradi<строкаЗамена>

Satr qiymatlarini solishtirish uchun oddiy raqamli taqqoslash operatorlaridan foydalanishingiz mumkin, chunki belgilarni taqqoslashda ularning ikkilik kodlari solishtiriladi. Like operatori qator qiymatlarini solishtirish uchun ham ishlatiladi, bu sizga noaniq moslikni aniqlash imkonini beradi, masalan, "Kiritish" Like "Kirish*" ifodasi True deb baholanadi, chunki taqqoslanayotgan qator "Kirish" so'zidan boshlanadi. Satrdagi yulduzcha (*) belgi ixtiyoriy sonli belgilarni almashtiradi. Taqqoslangan qatorda Like operatori tomonidan qayta ishlanadigan boshqa belgilar:

  • ? - har qanday belgi (bitta);
  • # - bitta raqam (0–9);
  • [<список>] – ro‘yxatdagi belgilardan biriga mos keladigan belgi;
  • [!<список>] – ro‘yxatdagi belgilarning birortasiga mos kelmaydigan belgi.
  • A.S.C.() - bu funksiya o'tgan belgining raqamli kodini qaytarish imkonini beradi. Masalan, ASC("D") 68 ni qaytaradi. Bu funksiya keyingi yoki oldingi harfni aniqlash uchun foydalidir. Odatda funksiya bilan birgalikda ishlatiladi Chr(), teskari amalni bajaradi - uzatilgan raqamli kodga muvofiq belgini qaytaradi. Bu funktsiyaning variantlari: AscB() Va AscW():
    • AscB() - belgi uchun raqamli kodning faqat birinchi baytini qaytaradi.
    • AscW() - Unicode kodlashda belgi kodini qaytaradi
  • Chr() - belgini raqamli kodi bilan qaytaradi. Asc() funktsiyasi bilan birgalikda foydalanish mumkin, lekin ko'pincha u xizmat belgisini chop etish kerak bo'lganda ishlatiladi. (masalan, tirnoq - "), chunki Siz VBA kodiga shunchaki tirnoq kirita olmaysiz (siz ikki marta qo'yishingiz kerak). Bu men odatda foydalanadigan funksiya.

    Qilichni satr sifatida xiralashtirish sWord = Chr(34) & "Qo'shtirnoq ichidagi so'z" va Chr(34)

    Ushbu funktsiya uchun variantlar mavjud - ChrB() Va ChrW(). Funktsiya uchun bir xil variantlarga o'xshash tarzda ishlang Asc().

  • InStr() Va InStrRev() - eng mashhur xususiyatlardan biri. Satr oʻzgaruvchisi tanasidagi belgi yoki belgilar ketma-ketligini aniqlash va ularning oʻrnini qaytarish imkonini beradi. Agar ketma-ketlik topilmasa, u holda 0 qaytariladi.

    Dim sStr As String sStr = "w" Agar InStr(1, "Salom, Dunyo!", sStr, vbTextCompare) > 0 Keyin MsgBox "Qidiruv so'zi mavjud!" Boshqa MsgBox "Qidirilgan so'z yo'q!" Agar tugaydi

    Funktsiyalar orasidagi farq shundaki, InStr() belgilangan so'zni satr boshidan, InStrRev() esa satr oxiridan qidiradi.

  • Chapga() , To'g'ri() , O'rta() - mos ravishda chap, o'ng yoki o'rtadagi mavjud satr o'zgaruvchisidan siz ko'rsatgan belgilar sonini olish imkoniyati.

    Dim sStr As String sStr = "Salom, dunyo!" MsgBox Mid(sStr, 1, 5)

  • Len() - qatordagi belgilar sonini olish qobiliyati. Ko'pincha looplar, almashtirish operatsiyalari va boshqalar bilan ishlatiladi.
  • LCase() Va UCase() - satrni mos ravishda kichik va katta harflarga aylantirish. Ko'pincha taqqoslashda holat muhim bo'lmasa, taqqoslash uchun qiymat tayyorlash uchun ishlatiladi (familiyalar, kompaniya nomlari, shaharlar va boshqalar).
  • Lset() Va RSset() - bir o'zgaruvchini uzunligini o'zgartirmasdan boshqasining belgilari bilan to'ldirish qobiliyati (mos ravishda chap va o'ng). Qo'shimcha belgilar kesiladi va etishmayotgan belgilar o'rniga bo'sh joylar qo'yiladi.
  • LTrim() , RTrim() , Kesish() - mos ravishda chap, o'ng yoki chap va o'ngdagi bo'shliqlarni olib tashlash qobiliyati.
  • O'zgartiring() - satrdagi bir belgilar ketma-ketligini boshqasiga almashtirish qobiliyati.

    Dim sStr As String sStr = "Salom, dunyo!" MsgBox almashtirish(sStr, "Salom", "Bay")

  • Kosmos() - siz ko'rsatgan bo'shliqlar sonidan qatorni oling;
    Yana bir shunga o'xshash funktsiya Spc() , bu konsol chiqishini formatlash uchun ishlatiladi. Buyruqlar satrining kengligi asosida bo'shliqlarni ko'paytiradi.
  • StrComp() - ikki qatorni solishtirish qobiliyati.
  • StrConv() - satrni aylantirish qobiliyati (Unicode va orqaga, katta va kichik harflarga, so'zlarning birinchi harfini bosh harfga yozing va hokazo):

    Dim sStr As String sStr = "Salom, dunyo!" MsgBox StrConv("Salom, Dunyo!", vbUpperCase)

    Konstantalar ikkinchi parametr parametri sifatida ishlatilishi mumkin:

      • vbUpperCase: Barcha matn belgilarini YUQO‘R XARFga o‘zgartiradi
      • vbLowerCase: Barcha matn belgilarini kichik harflarga o'zgartiradi
      • vbProperCase: Har bir so'zning birinchi belgisini Katta harfga o'zgartiradi
      • *vbWide: Satr belgilarini bir baytdan ikki baytga o'zgartiradi
      • *vbNarrow: Satr belgilarini ikki baytdan bir baytga o'zgartiradi
      • **vbKatakana: Hiragana belgilarini Katakana belgilariga aylantiradi
      • **vbHiragana: Katakana belgilarini Hiragana belgilariga aylantiradi
      • ***vbUnicode: Tizimning standart kod sahifasi yordamida satrni Unicode ga o'zgartiradi
      • ***vbFromUnicode: Unicode satrini tizimning standart kod sahifasiga o'zgartiradi

    *Uzoq Sharq mahalliylashtirishlari uchun amal qiladi
    ** Faqat Yaponiya uchun amal qiladi
    *** Macintosh operatsion tizimlarida qo'llab-quvvatlanmaydi

  • StrReverse() - belgilarni teskari tartibda joylashtirish orqali satrni “teskari” qilish. Funktsiya faqat Excel 2000 va undan yuqori versiyalarda ishlaydi. Funktsiyadan foydalanish misolini, shuningdek, so'zni aylantirishning boshqa usullarini ushbu maqolada topish mumkin: Qanday qilib so'zni aylantirish kerak?
  • Tab() konsol chiqishini formatlash uchun foydalaniladigan boshqa funksiyadir. Siz ko'rsatgan raqamdagi yorliq belgilarini takrorlaydi. Agar miqdor belgilanmagan bo'lsa, shunchaki yorliq belgisini kiritadi. Shuningdek, satr qiymatiga yorliq belgisini kiritish uchun doimiydan foydalanishingiz mumkin vbTab.
  • String() - belgilangan miqdordagi belgilar qatorini olish imkonini beradi (yana siz belgilagansiz). Odatda funktsiya bilan birgalikda chiqishni formatlash uchun ishlatiladi Len().

Quyidagi uchta funksiya sizga qatorlar massivi bilan ishlash imkonini beradi

Split (<строка> [, <разделитель>]) – satrni pastki qatorlar massiviga aylantiradi. Odatiy bo'lib, bo'sh joy ajratuvchi sifatida ishlatiladi. Ushbu funktsiya jumlani so'zlarga ajratish uchun qulaydir. Biroq, ushbu funktsiyada siz boshqa har qanday cheklovchini belgilashingiz mumkin. Masalan, Split(3, "Bu sinov jumlasi") uchta satr qiymatidan iborat massivni qaytaradi: "Bu", "test", "jumla". Qo'shilish (<массивСтрок> [, <разделитель>]) – satrlar massivini belgilangan chegaralovchi bilan bitta satrga aylantiradi. Filtr(<массивСтрок>, <строкаПоиск>[, <включение>] [, <сравнение>]) - qator qiymatlari qatorini skanerlaydi va berilgan satrga mos keladigan barcha pastki qatorlarni qidiradi. Ushbu funktsiya to'rtta argumentga ega:<строкаПоиск>- qidiruv qatori;<включение>– qaytarilgan satrlar izlanayotgan kichik satrni o‘z ichiga olishini yoki aksincha, faqat izlanayotgan qatorni pastki qator sifatida o‘z ichiga olmagan massiv qatorlari qaytarilishini ko‘rsatuvchi parametr (mantiqiy qiymat);<сравнение>– satrlarni taqqoslash usulini belgilovchi parametr. Yana uchta funktsiya string konvertatsiyasini ta'minlaydi: LCase(<строка>) – satrdagi barcha belgilarni kichik harflarga o‘zgartiradi, masalan, LCase("MAIL") funksiyasi "mail" qatorini qaytaradi; UCase(<строка>) – satrdagi barcha belgilarni bosh harfga o‘zgartiradi; StrConv(<строка>, <преобразование>) – ikkinchi parametrga qarab bir necha turdagi qatorlarni o‘zgartirishni amalga oshiradi. Ushbu parametr o'rnatilgan konstantalar bilan tavsiflanadi, masalan, StrConv("Rossiya", VbProperCase) funktsiyasi "Rossiya" qiymatini qaytaradi.

Va oxirgi ikkita funktsiya belgilar qatorlarini yaratadi

bo'sh joy(<число>) – belgilangan bo‘shliqlar sonidan iborat qator hosil qiladi; String(<число>, <символ>) – birinchi argumentda ko‘rsatilgan belgilar sonidan iborat qator hosil qiladi. Belgining o'zi ikkinchi argumentda ko'rsatilgan.

Misol

Satrli o'zgaruvchilar bilan ishlaydigan dastur yarating. Buning uchun teglarida quyidagi xabarlar bo'lgan forma yarating: 1 yorliq: birinchi matn maydoniga kiritilgan satr uzunligi haqida xabar beriladi (1 qator); 2 yorlig'i: uchinchi matn maydonining barcha belgilarini (3-qator) bosh harflarga o'zgartiradi; 3-yorliq: birinchi va ikkinchi matn maydonlarining mazmunini (1 va 2-qatorlar) birga ko'rsatadi.

Amalga oshirish texnologiyasi

  • Word dasturini oching, hujjatni saqlang va VBA muharririga o'ting.
  • Quyidagi rasmga o'xshash shakl yarating.
  • OK tugmasi uchun hodisa ishlov beruvchisini yozing.
  • Dasturni kompilyatsiya qilish.
  • Shaklni ishga tushiring.

Private Sub CommandButton1_Click() Dim a String As Dim b As String Dim c As Dim k As Dim d As String Dim n As Integer a=TextBox1.Text n=Len(a) Label7.Caption=“birinchisining uzunligi satr is” & n & "belgilar" c=TextBox3.Text k=Ucase(s) Label8.Caption=k b=TextBox2.Text d=a + " " + b Label9.Caption=d End Sub

Vazifa

Excelda A1 katakchasida A2 ustunida vergul bilan ajratilgan so'zlar bo'yicha qidiruv o'tkazilishi va natija va topilgan so'zlar qidirilayotgan matnda ularning takrorlanish soni (iloji bo'lsa) bilan yozilishi kerak. boshqa, uchinchi hujayrada. (birinchi katakchada ular qandaydir tarzda ajratib ko‘rsatilgan (yoki tagiga chizilgan) bo‘lsa, yanada yaxshi bo‘lardi... toki ular darhol ko‘rinib turadi. So‘zlarni massivga shunday joylashtirasiz:

Visual Basic kodi
1 2 3 4 5 6 Dim m() String sifatida If InStr(1, Cells(1, 2).Value, ","") > 0 Keyin m = Split(Replace(Cells(1, 2).Value, " ", ""), " ,"") Aks holda ReDim m(0): m(0) = Trim(Uyachalar(1, 2).Qiymat) End If

Va keyin tsiklda siz barcha so'zlarni qidirasiz (yana tsiklda, ichkarida) 23 daqiqadan so'ng qo'shiladi

Visual Basic kodi
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 Variant solishtiring Matn Variant Aniq Sub QWERT() Dim R, N, K Dim m() String sifatida InStr(1, Cells(1, 2).Value, ",") > 0 Keyin m = Split(Almashtirish(Cells() 1, 2).Qiymat, " ", ""), ",") Aks holda ReDim m(0): m(0) = Trim(Cells(1, 2).Value) End If For R = 0 To UBound( m) N = 1 Agar InStr(1, Cells(1, 1).Value, m(R)) > 0 bo'lsa, K = InStr(N, Cells(1, 1).Value, m(R)) Do COLOR K , Len(m(R)) N = K + Len(m(R)) K = InStr(N, Hujayralar(1, 1).Qiymat, m(R)) Loop while K > 0 End If Next R End Sub Sub COLOR(ST, LN) Yacheykalar bilan(1, 1). Belgilar(Start:=ST, Length:=LN). Shrift .Color = RGB(0, 0, 255) .Qalin = Haqiqiy End With End Sub

15 daqiqadan so'ng qo'shiladi Va shunday qilib u so'zning boshida qidiradi va butun so'zni tanlaydi

Visual Basic kodi
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).Value, ST + LN, 1)<>" " Yacheykalar bilan(1, 1). Belgilar(Start:=ST, Uzunlik:=LN). Shrift .Rang = RGB(0, 0, 255) .Qalin = Haqiqiy End With End Sub

Siz so'zning boshidan emas, balki so'zning bir qismi bo'yicha qidirishingiz mumkin. — boshqa Do-Loop tsiklini qo'shing. Boshlanishni (ST) faqat chapga bo'sh joyga o'tkazing (http://www.cyberforum.ru/vba/thread567588.html)

Qanday qilib: Qatorni naqshga moslashtirish (Visual Basic)

Muvofiqlikni tekshirish shablonga satrlar String Ma'lumotlar turi (Visual Basic) - Like operatori (Visual Basic) . Like operatorining chap operandi qatorli ifoda, o'ng operand esa shablon qatori Like operatori mantiqiy qiymatini qaytaradi.

Belgilarni tekshirish

? - har qanday belgi

  • myString W belgisidan keyin istalgan 2 ta belgidan iborat

    Dim sMatch As Boolean = myString "W??"

Roʻyxat va diapazondagi istalgan belgi

Har qanday belgi va keyin A, C yoki E belgilaridan biri

    Dim sMatch As Boolean = myString "?" harflar katta-kichikligiga sezgir

  • myString = num belgilar va keyin diapazondan bitta belgi: i, j, k, l, m yoki n:

    Dim sMatch As Boolean = myString "num" kabi harflar katta-kichikligiga sezgir

Xuddi nol uzunlikdagi qator qatori ("") bilan ishlaydi. satr bo'shligini tekshirish imkonini beradi

Roʻyxatdagi belgi yoki belgi yoʻq

  1. Like operatori ikki marta ishlatiladi va natijalar Or Operator (Visual Basic) yoki OrElse operatori (Visual Basic) yordamida birlashtiriladi.
  2. Birinchi bayonot shabloniga belgilar ro'yxatini kvadrat qavs ichiga kiriting ().
  3. Ikkinchi bayonot shablonida, tekshirish joyiga hech narsa qo'ymang.Misol: yetti xonali telefon raqamini tekshirish, telefon raqami aniq uchta raqamdan iborat bo'lishi kerak, keyin bo'sh joy, defis, nuqta yoki hech qanday belgi bo'lmasligi kerak. to'rtta raqam. (birinchi uchta raqam oxirgi to'rttadan ajratilmasligi mumkin - "belgi yo'q") Null , xatolik yuz beradi. Agar dalil keltirilsa solishtirish_turi , dalil boshlang'ich_pozitsiyasi majburiy hisoblanadi. qator_1 Majburiy. String ifodasi, qidirilmoqda. qator_2 Majburiy. Siz izlayotgan string ifodasi. solishtirish_turi Ixtiyoriy. Turini belgilaydi qatorlarni taqqoslash. Agar argumentning qiymati bo'lsa solishtirish_turi Null bo'lsa, xatolik yuz beradi. Agar argument bo'lsa solishtirish_turi o'tkazib yuborilgan, taqqoslash turi parametr bilan belgilanadi Ma'nosi Chorshanbahayrat. Til sozlamalarida ko'rsatilgan taqqoslash qoidalaridan foydalanish uchun joriy LCID (LocaleID) parametrini belgilang.

    Variantlar

    Dalil solishtirish_turi quyidagi parametrlardan foydalanadi:

    Qaytariladigan qiymatlar

    Eslatmalar

    Funktsiya InStrB satrdagi bayt ma'lumotlari bilan ishlatiladi. Funktsiya InStrB bir satrning ikkinchisida birinchi marta paydo bo'lishining belgilar o'rnini emas, balki bayt o'rnini qaytaradi.

    Misollar

    Ifodada InStr funksiyasidan foydalanish Har safar iboralarni ishlatganingizda funksiyadan foydalanishingiz mumkin InStr. Misol uchun, agar siz birinchi nuqtaning o'rnini aniqlamoqchi bo'lsangiz ( . ) IP-manzilni ("IPAddress" deb nomlangan) o'z ichiga olgan maydonda siz funksiyadan foydalanishingiz mumkin InStr uni topish uchun:

    InStr(1,,"")

    Funktsiya InStr"IPAddress" maydonidagi har bir qiymatga qaraydi va birinchi nuqta o'rnini qaytaradi. Shuning uchun, agar IP-manzilning birinchi oktet qiymati bo'lsa 10. , funktsiya 3 qiymatini qaytaradi.

    Funktsiya natijasini ishlatadigan boshqa funktsiyalardan foydalanishingiz mumkin InStr, birinchi nuqtadan oldingi IP manzili oktet qiymatini chiqarish uchun, masalan:

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

    Ushbu misolda funktsiya InStr(1,,"") birinchi nuqtaning holatini qaytaradi. 1 ni ayirish natijasida birinchi nuqtadan oldingi belgilar soni aniqlanadi, bu holda - 2. Keyin funksiya Chapga ushbu belgilarni "IPAdres" maydonining chap tomonidan chiqarib, 10 qiymatini qaytaradi.

    Funktsiyadan foydalanish InStr Visual Basic for Applications (VBA) kodida

    ESLATMA. Quyidagi misollar Visual Basic for Applications (VBA) modulidan foydalanishni ko'rsatadi. VBA bilan ishlash haqida qo'shimcha ma'lumot olish uchun tanlang Ishlab chiquvchi ma'lumotnomasi tugma yonidagi ochiladigan ro'yxatda Qidirmoq ni bosing va qidiruv maydoniga bir yoki bir nechta kalit so'zlarni kiriting.

    Ushbu misolda funktsiya InStr bir satrning ikkinchisida birinchi marta paydo bo'lish o'rnini olish uchun ishlatiladi.

    Dim SearchString, SearchChar, MyPos SearchString ="XXpXXpXXPXXP" " Izlash uchun qator. SearchChar = "P" " "P" ni qidiring. " 4-pozitsiyadan boshlanadigan matnli taqqoslash. Qaytadi 6. MyPos = Instr( 4, SearchString , Qidiruv Char , 1) " 1-pozitsiyadan boshlangan ikkilik taqqoslash. 9-ni qaytaradi. MyPos = Instr( 1, SearchString , Qidiruv Char , 0) " Taqqoslash sukut bo'yicha ikkilikdir " (oxirgi argument o'tkazib yuborilgan). MyPos = Instr( SearchString , Qidiruv Char ) " 9 qaytaradi. MyPos = Instr( 1, SearchString , "W" ) "0 qaytaradi.

Ko'pincha dasturdagi satrlar qatorning oxirida yoki boshida keraksiz bo'shliq belgilarini o'z ichiga oladi, chunki ularni olib tashlash kerak. qatordagi begona yetakchi yoki keyingi boʻshliqlar dastur bilan bogʻliq muammolarga olib kelishi mumkin.

VBA satrdan oldingi va keyingi bo'shliqlarni olib tashlash uchun mo'ljallangan uchta funktsiyaga ega: LTrim, RTrim, trim. Shuni yodda tutingki, bu funktsiyalar asl satrni o'zgartirmaydi, balki ortiqcha bo'shliqlar olib tashlangan qatorning nusxasini qaytaradi.

String uzunligini aniqlash

Odatda foydalanuvchi uchun xabarlarni formatlashda yoki protsedura orqali Excel ish varag'iga yoki Word hujjatiga kiritilgan qator ma'lumotlarini formatlashda siz odatda satr uzunligini bilishingiz kerak. VBA ushbu maqsadlar uchun funksiyadan foydalanadi Len. Quyidagi ro'yxatda qavslar va so'z o'rtasida ikkita bo'sh joy mavjud.



Ruxsat etilgan uzunlikdagi iplar bilan ehtiyot bo'lishingiz kerak. Ruxsat etilgan uzunlikdagi satr har doim bir xil uzunlikda bo'lganligi sababli, Len funktsiyasi satrning haqiqiy uzunligidan qat'i nazar, har doim satrning e'lon qilingan uzunligini qaytaradi. Misol uchun, agar 15 belgidan iborat bo'lgan StrokeName o'zgarmas uzunlikdagi satr o'zgaruvchisi aslida "quyosh" so'zini o'z ichiga olgan bo'lsa, u holda funktsiya Len(StrokeName) natijani qaytaradi 15. Bu holda satrning haqiqiy uzunligini bilish uchun (bizning holatimizda - 6), siz quyidagi funktsiyalar kombinatsiyasidan foydalanishingiz kerak: Ob'ektiv(Trim(StrokeName)).

Satrlarni solishtirish va qidirish

VBA satrlarni solishtirishga yordam beradigan ikkita funktsiyaga ega: StrComp, InStr.

Funktsiya StrComp

Sintaksis


StrComp(String1, String2[, solishtiring])


String1, String2 - solishtirish kerak bo'lgan har qanday ikkita satr ifodalari.

StrComp bajarilganda, quyidagi qiymatlardan biri qaytariladi:

  • -1 agar String1 String2 dan kichik bo'lsa;
  • 0 agar String1 va String2 teng bo'lsa;
  • 1 agar String1 String2 dan katta bo'lsa.


Yuqoridagi ro'yxat matn rejimida ikkita satrni taqqoslaydi: "Standart satr" va "Standart satr". Taqqoslash natijasi = 1, ya'ni. "Standart satr" "Standart satr" dan kattaroqdir.

StrComp funksiyasi qanday ishlashini yaxshiroq tushunish uchun turli qatorlar bilan tajriba o'tkazing.

Funktsiya InStr

InStr funksiyasi bitta satrda boshqa satr mavjudligini aniqlash imkonini beradi.

Sintaksis


StrComp(String1, String2[, solishtiring])


String1, String2 - har qanday haqiqiy satr ifodalari. Funktsiya String1-ning String2-da mavjudligini tekshiradi.

Taqqoslash ixtiyoriy argument bo‘lib, u quyidagi oldindan belgilangan konstantalardan biri bo‘lishi mumkin (agar o‘tkazib yuborilmagan bo‘lsa, joriy solishtirish parametri ishlatiladi):

  • vbBinaryCompare - ikki qatorni ikkilik taqqoslash;
  • vbTextCompare - ikki qatorni matn solishtirish;
  • vbDatabaseCompare - faqat Microsoft Access-da qo'llaniladi.

Boshlash - ixtiyoriy argument, raqamli ifoda bo'lib, tekshirish boshlanishi kerak bo'lgan String1-dagi belgi o'rnini belgilaydi.


InStr String2 topilgan String1-dagi belgi o'rnini ko'rsatadigan raqamni qaytaradi. Agar InStr String1-da String2-ni topmasa, u holda 0 qaytariladi.Agar String1 (yoki String2) Null bo'lsa, funksiya ham Nullni qaytaradi.



Chiziqni ajratish

Ba'zan satrni uning tarkibiy qismlariga bo'lish kerak bo'ladi. VBA-da uchta funktsiya bu muammoni hal qiladi: Chap, o'ng, o'rta.

Chap funksiya

Sintaksis


Chap (tor, uzunlik)


Funktsiya birinchi belgidan boshlab va Length tomonidan belgilangan belgilar sonini o'z ichiga olgan String nusxasini qaytaradi. Agar Uzunlik satrning haqiqiy uzunligidan kattaroq bo'lsa, u holda butun String ifodasi qaytariladi.

To'g'ri funktsiya

Sintaksis


O'ng (tor, uzunlik)


String har qanday yaroqli satr ifodasidir.

Uzunlik - har qanday raqamli qiymat.


Funktsiya oxirgi belgidan boshlab va o'ngdan chapga Length tomonidan belgilangan belgilar sonini o'z ichiga olgan String nusxasini qaytaradi. Agar Uzunlik satrning haqiqiy uzunligidan kattaroq bo'lsa, u holda butun String ifodasi qaytariladi. Right funksiyasi har doim belgilarni satr oxiridan boshigacha ko'chiradi.

O'rta funktsiya

Sintaksis


Oʻrta (String, Start, [, Length])


String har qanday yaroqli satr ifodasidir.

Uzunlik, Boshlash - har qanday raqamli qiymatlar.


Mid funksiyasi Start argumenti tomonidan belgilangan Stringdagi belgilar joyidan boshlangan String nusxasini qaytaradi. Ixtiyoriy Length argumenti Stringdan Midgacha nusxa ko'chirish uchun belgilar sonini belgilaydi. Agar Start satrning haqiqiy uzunligidan kattaroq raqamni o'z ichiga olsa, bo'sh qator qaytariladi.



Klaviaturadan kiritib bo'lmaydigan belgilar

Ko'pincha klaviaturada kalit bo'lmagan belgini kiritishingiz kerak bo'ladi (masalan, mualliflik huquqi belgisi). Yana bir holat - satrga VBA xizmat belgisini kiritish kerak bo'lganda (eng keng tarqalgan holat - qo'sh tirnoqlarni kiritish).

Klaviaturadan kiritib boʻlmaydigan yoki VBA uchun alohida maʼnoga ega boʻlgan belgilarni satrga kiritish uchun funksiyadan foydalaning. Chr.

Sintaksis


Chr (Charcode)


Charcode - kompyuter tomonidan ishlatiladigan belgilar to'plami uchun haqiqiy kod bo'lgan har qanday raqamli ifoda. 0 dan 255 gacha bo'lgan butun son bo'lishi kerak.

Chr funktsiyasi argument sifatida bitta belgi kodini oladi va shu kodga mos keladigan belgini o'z ichiga olgan qatorni qaytaradi. Ushbu funktsiya yuqoridagi ro'yxatlarda Chr (13) ekranida xabarni ko'rsatishda chiziqni uzatish uchun ishlatiladi.


Yangi qatorni boshlash uchun ishlatiladigan belgilar xabarlarni formatlashda va VBA tartiblari tomonidan boshqariladigan boshqa qator ma'lumotlarini formatlashda juda muhim bo'lganligi sababli, Chr funksiyasidan foydalanish zaruratini oldini olish uchun ushbu belgilar uchun bir nechta oldindan belgilangan konstantalar mavjud:

  • vbCr - karetani qaytarish belgisi. Chr(13) ga ekvivalent
  • vbLf - belgining bir qatorga siljishi. Chr(10) ga ekvivalent
  • vbCrLf - karetaning qaytishi + bir qatorga ofset belgisi. Chr(13)+ Chr(10) ga ekvivalent
  • vbTab - yorliq belgisi. Chr(9) ekvivalenti

Ro'yxatni ko'rish uchun kod belgisi so'rov bo'yicha VBA yordam tizimini ochishingiz kerak "belgilar to'plami" Tegishli jadval taqdim etiladi.



Ma'lumotlar qiymatlarini formatlash

Ko'pincha, biron bir sababga ko'ra, dasturning chiqishidagi ma'lumotlar formati bizga to'liq mos kelmaydi. Bu muammo funksiya yordamida hal qilinadi Format.

VBA Format funktsiyasi Exceldagi Format funksiyasi bilan bir xil bo'lib, bir xil ma'lumotlarni formatlash to'ldiruvchilaridan foydalanadi.

Sintaksis


Format (Ifoda [, Format[, Haftaning birinchi kuni [, Birinchi hafta]]])


Ifoda - har qanday to'g'ri ifoda (zarur argument).

Format nomli yoki foydalanuvchi tomonidan belgilangan formatning haqiqiy ifodasidir.

Haftaning birinchi kuni - haftaning birinchi kunini belgilaydigan doimiy ko'rsatkich.

Birinchi hafta - yilning birinchi haftasini belgilaydigan doimiy.


Format funksiyasidan foydalanish uchun siz ham kerak oldindan belgilangan formatni o'rnating, yoki muayyan formatdagi tasvirni yaratish, to'ldiruvchi belgilar yordamida.


Format funksiyasi bilan foydalanish uchun nomlangan formatlar

Nomlangan format Harakat
Umumiy sana Ushbu kompyuter uchun sana va vaqt formati sozlamalaridan foydalangan holda sana va vaqt ma'lumotlarini ketma-ket sana raqamiga formatlaydi.
Uzoq sana Kompyuterning Uzoq sana formati sozlamalaridan foydalanib, faqat sana qismini ketma-ket sanaga formatlaydi.
O'rta sana Kompyuteringizning Oʻrta sana formati sozlamalaridan foydalanib, faqat sana qismini ketma-ket sana sifatida formatlaydi.
Qisqa sana Qisqa sana formati uchun kompyuter sozlamalaridan foydalanib, faqat sanani o'z ichiga olgan qismni ketma-ket sanaga formatlaydi.
Uzoq vaqt Kompyuterning Uzoq vaqt formati sozlamalaridan foydalanib, faqat vaqt qismini ketma-ket sanaga formatlaydi.
O'rta vaqt Kompyuterning Oʻrta vaqt formati sozlamalaridan foydalanib, faqat vaqt qismini ketma-ket sanaga formatlaydi.
Qisqa vaqt Qisqa vaqt formati uchun kompyuter sozlamalaridan foydalanib, faqat vaqt qismini ketma-ket sanaga formatlaydi.
Umumiy raqam Raqamni maxsus belgilarsiz qatorga formatlaydi.
Valyuta Raqamni valyuta belgisi, minglik ajratuvchi va faqat ikkita kasr bilan formatlaydi.
Tugallangan Raqamni har doim kasrdan oldin kamida bitta raqam va undan keyin kamida ikkita raqam bo'lishi uchun formatlaydi.
Standart Raqamni minglik ajratuvchi bilan formatlaydi, shunday qilib oʻnli kasrdan oldin kamida bitta raqam va undan keyin kamida ikkita raqam boʻlsin.
Foiz Raqamni 100 ga ko'paytirish va foiz belgisini qo'shish orqali uni foiz sifatida formatlaydi.
Ilmiy Raqamni muntazam eksponensial formatga formatlaydi.
Ha yo'q Agar formatlangan raqam nolga teng bo'lmasa, "Ha" qatori qaytariladi, aks holda - "Yo'q".
Rost/noto‘g‘ri Agar formatlangan raqam nolga teng bo'lmasa, "True" qatori qaytariladi, aks holda - "False".
Yoqish/o‘chirish Formatlangan raqam nolga teng bo'lmasa, "On" qatori qaytariladi, aks holda - "O'chirish".

Maxsus formatlarni yaratish uchun joy egalari

To'ldiruvchi belgi Harakat (misol sifatida 1234.45 raqamidan foydalanish)
0 Raqam o'sha holatda bo'lsa, raqamni yoki bo'lmasa 0 ni ko'rsatadigan raqamli belgi. Butun sonlar uchun bosh nollarni va oʻnli kasrlar uchun keyingi nollarni koʻrsatish uchun 0 belgisidan foydalanishingiz mumkin: 00000.000 01234.450 koʻrsatadi
# Raqamli belgi, agar bu holatda bitta raqam bo'lsa, raqamni ko'rsatadi, aks holda u hech narsani ko'rsatmaydi. # to'ldiruvchi belgi 0 ga ekvivalent, faqat bosh va keyingi nollar ko'rsatilmaydi: #####.### 1234.45 ni ko'rsatadi.
$ Dollar belgisini ko'rsatadi: $###,###.00 ko'rsatadi $1,234,45
. O'nlik kasr belgisi, o'nli nuqtani 0 o'rinli belgilar qatorida belgilangan holatda ko'rsatadi: #.##.## 1234,45 ni ko'rsatadi.
% Foiz belgisi, qiymatni 100 ga ko'paytiradi va 0:# o'rinbosarlari tomonidan ko'rsatilgan joyga foiz belgisini qo'shadi.#0,00% 0,12345 raqamini 12,35% sifatida ko'rsatadi (yaxlitlash sodir bo'ladi)
, Minglik ajratuvchi, 0 va # toʻldiruvchi qatorlarida minglab ajratuvchi sifatida vergul qoʻyadi: ###,###,###.00 1234.45 ni koʻrsatadi
E-e- Qiymatni eksponensial formatda faqat salbiy qiymatlar uchun ko'rsatkich bilan ko'rsatadi: #.####E-00 1.23445E03 ni ko'rsatadi
E+ e+ Qiymatni eksponensial formatda manfiy va musbat qiymatlar uchun koʻrsatkich bilan koʻrsatadi: #.####E+00 1.23445E+03 ni koʻrsatadi.
/ Sana qiymatlarini formatlash uchun kun, oy va yilni ajratadi.
m Oylarni sanada qanday ko'rsatishni belgilaydi: m 1 ko'rsatadi, mm - 01, mmm - yanvar, mmmm - yanvar
d Sanalarda kunlarni qanday ko'rsatishni belgilaydi: d 1, dd - 01, gdd - quyosh, dddd - yakshanbani ko'rsatadi
y Yil kunini 1 dan 366 gacha raqam sifatida ko'rsatadi
yy Yillarni sanalarda qanday ko'rsatishni belgilaydi: yy - 66, yyyy - 1966
q Yil choragini 1 dan 4 gacha bo'lgan raqam sifatida ko'rsatadi
w Hafta kunini raqam sifatida ko'rsatadi (1 - yakshanba)
ww Yilning haftasini 1 dan 54 gacha raqam sifatida ko'rsatadi
: Vaqt formati qiymatlarida soat, daqiqa va soniyalarni ajratadi: hs:dd:ss - 01:01:01, h:m:s - 1:1:1
h Soatlarni qanday ko'rsatishni belgilaydi: hh - 01, h - 1
m Daqiqalarni ko'rsatish usulini belgilaydi: mm - 01, m - 1
s Soniyalarni qanday ko'rsatishni belgilaydi: ss - 01, s - 1
AM/PM AM yoki PM qo'shilgan vaqtni 12 soatlik vaqt formatida ko'rsatadi
@ Formatlangan satrda mos keladigan belgi bo'lmasa, bo'sh joyni ko'rsatadigan belgilar to'ldiruvchisi.
Barcha belgilarni katta harflar bilan ko'rsatadi.
> Barcha belgilarni kichik harflar bilan ko'rsatadi.
Chr

Chr funktsiyasi

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

Funktsiya Chr(Ch aracte r) ANSI yoki Unicode raqamli kodining qiymati bo'yicha belgi olish imkonini beradi

Qaytish qiymati

Funksiyalar Chr, ChrB, ChrW belgilangan ANSI yoki Unicode belgilar kodiga mos keladigan belgini o'z ichiga olgan Variant turidagi String pastki turi qiymatini qaytaring. Funksiyalar Chr$, ChrB$, ChrW$ mos ravishda String turi qiymatini qaytaring

Eslatma

Chr Va Chr$ ANSI kodlash orqali belgini qaytaring
ChrB Va ChrB$ qaytish bir bayt chiziq
ChrW Unicode belgisini qaytaradi, ammo Unicode bo'lmagan tizimlarda uning harakati o'xshash Chr
Parametrda foydalaning CharCode 255 dan katta qiymatlar ish vaqti xatosini keltirib chiqaradi 5: yaroqsiz protsedura chaqiruvi yoki argument yoki 6: to'lib ketish

Variantlar CharCode Kerakli argument belgini belgilaydigan Long qiymatdir. Odatda funktsiya Chr matn satrlariga bosib chiqarish mumkin bo'lmagan belgilarni kiritishda ishlatiladi (karetaning qaytishi, satr tasmasi, tabulator va boshqalar). 0-31 kodlari standart ASCII boshqaruv belgilariga mos keladi. Masalan, Chr(10) yangi qator belgisini qaytaradi Misol Dim retval retval = Chr(65) Debug.Print retval " A qaytaradi Turkum

Odamlar savoliga bag'ishlangan bo'limda ord(x) funksiyasi va uning teskari chr(x) funksiyasi Paskalda nimani anglatishini batafsil tushuntirib bering? muallif tomonidan berilgan Nik Braun eng yaxshi javob Belgilarning maxsus jadvali mavjud (kengaytirilgan ASCII kodi, har bir belgi raqamli qiymatga ega bo'lsa, jadvalda jami 255 ta qiymat mavjud, ya'ni har bir belgiga raqam beriladi,
chr(0..254) raqamni (bir bayt) ushbu raqam tegishli bo'lgan belgiga aylantiradi, masalan chr(71) natijada "G" harfi bo'ladi, klaviaturadagi tugmalarni bosish ham o'z kodini ishlab chiqaradi, bu operatorga qo'yilganda aynan shu kod va qaysi tugma bosilganligi natijasini beradi, bu men, masalan. Lekin ORD(x) operatori bu jarayonni teskari tartibda bajaradi.
Biz qiymat belgisini o'rnatamiz va 0 dan 254 gacha bo'lgan raqamni olamiz (bir bayt)
Masalan, ORD("G") bizga 71 natijani beradi (o'nlik formatda)
Hammasi shunday tuyuladi!!!

dan javob Katyonachik[yangi]
Bu oddiy, haqiqatan ham)
Ord ("X") - ASKII jadvalidan X belgi kodini qaytaradi.
Teskari funktsiyaning natijasi xuddi shu ASCII jadvalidan kiritilgan kodga (funktsiya olingan) mos keladigan belgi bo'ladi.


dan javob Juri[guru]
Bu o'zaro funktsiyalar emas!
Ord funksiyasi sanab o'tilgan turdagi tartib qiymatini qaytaradi.
Hisob noldan boshlanadi.
Bayt turi uchun funktsiya haqiqiy qiymatni qaytaradi - tartib raqami qiymatga to'g'ri keladi.
Char turi uchun funksiya belgining seriya raqamini qaytaradi, bu raqam (raqam tasodifiy) ASCII kodi bilan mos keladi.
chr funksiyasi berilgan ASCII kodi bilan belgini qaytaradi.
Xulosa: Oddiy qilib aytganda, ramziy qadriyatlarga kelsak, ular haqiqatan ham bir-biriga teskari bo'lib ishlaydi ...
Shuning uchun ord funksiyasi chr funksiyasiga teskari deb aytishimiz mumkin, lekin aksincha emas - chr funksiya ord funksiyasiga teskari emas, chunki ord funksiyasining amal qilish doirasi belgilar bilan ishlash bilan chegaralanmagan!