Παραδείγματα χρήσης συναρτήσεων VBA. Ενσωματωμένες λειτουργίες των λειτουργιών Oracle Vba excel για εργασία με χορδές

  • A.S.C. () - αυτή η λειτουργία σάς επιτρέπει να επιστρέψετε τον αριθμητικό κωδικό για τον χαρακτήρα που περάσατε. Για παράδειγμα, το ASC("D") θα επιστρέψει 68. Αυτή η συνάρτηση είναι χρήσιμη για τον προσδιορισμό του επόμενου ή του προηγούμενου γράμματος. Συνήθως χρησιμοποιείται σε συνδυασμό με τη συνάρτηση Ο Χρ(), που εκτελεί την αντίστροφη πράξη - επιστρέφει έναν χαρακτήρα σύμφωνα με τον αριθμητικό του κωδικό που μεταδίδεται. Παραλλαγές αυτής της συνάρτησης είναι AscB() Και AscW():
    • AscB () - επιστρέφει μόνο το πρώτο byte του αριθμητικού κώδικα για τον χαρακτήρα.
    • AscW () - επιστρέφει τον κωδικό για τον χαρακτήρα στην κωδικοποίηση Unicode
  • Ο Χρ () - επιστρέφει έναν χαρακτήρα με τον αριθμητικό του κωδικό. Μπορεί να χρησιμοποιηθεί σε συνδυασμό με τη συνάρτηση Asc(), αλλά τις περισσότερες φορές χρησιμοποιείται όταν χρειάζεται να εκτυπώσετε έναν χαρακτήρα υπηρεσίας (για παράδειγμα εισαγωγικά - "), επειδή Δεν μπορείτε απλώς να εισάγετε εισαγωγικά στον κώδικα VBA (πρέπει να βάλεις διπλά). Αυτή είναι η λειτουργία που χρησιμοποιώ συνήθως.

    Dim sWord As String sWord = Chr(34) & "Word in εισαγωγικά" & Chr(34)

    Υπάρχουν επιλογές για αυτή τη λειτουργία - ChrB() Και ChrW(). Λειτουργήστε παρόμοια με τις ίδιες επιλογές για τη λειτουργία Asc().

  • InStr () Και InStrRev () - ένα από τα πιο δημοφιλή χαρακτηριστικά. Σας επιτρέπει να εντοπίσετε έναν χαρακτήρα ή μια ακολουθία χαρακτήρων στο σώμα μιας μεταβλητής συμβολοσειράς και να επιστρέψετε τη θέση τους. Εάν η ακολουθία δεν βρεθεί, τότε επιστρέφεται το 0.

    Dim sStr As String sStr = "w" Αν InStr(1, "Hello, World!", sStr, vbTextCompare) > 0 Τότε MsgBox "Η λέξη αναζήτησης είναι παρούσα!" Άλλο MsgBox "Η λέξη που αναζητήσατε λείπει!" Τέλος εαν

    Η διαφορά μεταξύ των συναρτήσεων είναι ότι η InStr() αναζητά την καθορισμένη λέξη από την αρχή της γραμμής και η InStrRev() από το τέλος της γραμμής

  • Αριστερά () , σωστά () , Στα μέσα () - τη δυνατότητα λήψης του αριθμού των χαρακτήρων που καθορίζετε από μια υπάρχουσα μεταβλητή συμβολοσειράς στα αριστερά, δεξιά ή στη μέση, αντίστοιχα.
    Dim sStr As String sStr = "Γεια σου Κόσμε!" MsgBox Mid(sStr, 1, 5)

    Dim sStr As String sStr = "Γεια σου Κόσμε!" MsgBox Mid(sStr, 1, 5)

  • Len () - δυνατότητα λήψης του αριθμού των χαρακτήρων σε μια γραμμή. Συχνά χρησιμοποιείται με βρόχους, λειτουργίες αντικατάστασης κ.λπ.
  • 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")

  • Χώρος () - λάβετε μια συμβολοσειρά από τον αριθμό των κενών που καθορίζετε.
    Μια άλλη παρόμοια λειτουργία είναι Spc () , το οποίο χρησιμοποιείται για τη διαμόρφωση της εξόδου της κονσόλας. Πολλαπλασιάζει τα κενά με βάση το πλάτος της γραμμής εντολών.
  • StrComp () - ικανότητα σύγκρισης δύο χορδών.
  • StrConv () - δυνατότητα μετατροπής μιας συμβολοσειράς (σε Unicode και πίσω, σε κεφαλαία και πεζά, κεφαλαία το πρώτο γράμμα των λέξεων κ.λπ.):
    Dim sStr As String sStr = "Γεια σου Κόσμε!" MsgBox StrConv ("Hello, World!", vbUpperCase)

    Dim sStr As String sStr = "Γεια σου Κόσμε!" MsgBox StrConv ("Hello, World!", vbUpperCase)

    Οι σταθερές μπορούν να χρησιμοποιηθούν ως παράμετρος δεύτερης παραμέτρου:

    • vbUpperCase:Μετατρέπει όλους τους χαρακτήρες κειμένου σε κεφαλαία
    • vbLowerCase:Μετατρέπει όλους τους χαρακτήρες κειμένου σε πεζούς
    • vbProperCase:Μετατρέπει τον πρώτο χαρακτήρα κάθε λέξης σε κεφαλαία
    • *vbWide:Μετατρέπει χαρακτήρες συμβολοσειράς από ένα byte σε διπλό byte
    • *vbNarrow:Μετατρέπει χαρακτήρες συμβολοσειράς από διπλό byte σε ένα byte
    • **vbKatakana:Μετατρέπει χαρακτήρες Hiragana σε χαρακτήρες Katakana
    • **vbHiragana:Μετατρέπει χαρακτήρες Katakana σε χαρακτήρες Hiragana
    • ***vbUnicode:Μετατρέπει μια συμβολοσειρά σε Unicode χρησιμοποιώντας την προεπιλεγμένη κωδικοσελίδα του συστήματος
    • ***vbFromUnicode:Μετατρέπει μια συμβολοσειρά Unicode στην προεπιλεγμένη κωδικοσελίδα του συστήματος
    • * ισχύει για τον εντοπισμό της Άπω Ανατολής
      ** Ισχύει μόνο για την Ιαπωνία
      *** δεν υποστηρίζεται σε λειτουργικά συστήματα Macintosh

  • StrReverse () - «αντιστρέφετε» μια συμβολοσειρά τοποθετώντας τους χαρακτήρες της με αντίστροφη σειρά. Η συνάρτηση λειτουργεί μόνο από Excel 2000 και νεότερη έκδοση. Ένα παράδειγμα χρήσης της συνάρτησης, καθώς και άλλων μεθόδων για τη μετατροπή μιας λέξης, μπορείτε να βρείτε σε αυτό το άρθρο: Πώς να γυρίσετε μια λέξη;
  • Αυτί () είναι μια άλλη λειτουργία που χρησιμοποιείται για τη διαμόρφωση της εξόδου της κονσόλας. Αναπαράγει χαρακτήρες καρτέλας στον αριθμό που καθορίζετε. Εάν δεν έχει καθοριστεί ποσότητα, απλώς εισάγετε έναν χαρακτήρα καρτέλας. Μπορείτε επίσης να χρησιμοποιήσετε τη σταθερά για να εισαγάγετε έναν χαρακτήρα καρτέλας σε μια τιμή συμβολοσειράς vbTab.
  • Σειρά () - σας επιτρέπει να λάβετε μια συμβολοσειρά με έναν καθορισμένο αριθμό χαρακτήρων (που και πάλι προσδιορίζονται από εσάς). Συνήθως χρησιμοποιείται για τη διαμόρφωση της εξόδου σε συνδυασμό με τη συνάρτηση Len().

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

Επιλογή 1

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

Επιλογή

Μπορείτε επίσης να χρησιμοποιήσετε έναν πίνακα byte:

Sub n() Dim Mass() As Byte, n As Long, Zam As String, TXT As String TXT = "="" DMITRY VLADIMIROVICH KOROTEEV" Mass = StrConv(TXT, vbFromUnicode) Για n = 0 To UBound(Mas) Αν Μάζα(n)<>34 Και μάζα(n)<>61 Τότε Zam = Zam + Chr$(Mass(n)) Επόμενο MsgBox Zam End Sub

Επιλογή

Ή φιλτράρισμα με mid:

Sub nn() Dim n όσο μήκος, TXT ως συμβολοσειρά, L ως συμβολοσειρά, Zam ως συμβολοσειρά TXT = "="" DMITRY VLADIMIROVICH KOROTEEV" Για n = 1 To Len(TXT) L = Mid$(TXT, n, 1) Αν ο Λ<>"""" Και εγώ<>"=" Τότε Zam = Zam + L Επόμενο MsgBox Zam End Sub

Η γραμμή 6 μπορεί να αντικατασταθεί με χάσκι:
Κώδικας της Visual Basic
1
Αν L Like “[!””=]” Τότε Zam = Zam + L

Επιλογή

Επίσης μέσω αναζήτησης θέσης και αναδρομής:

Sub test() Dim n As Long, txt As String txt = "=""DMITRY VLADIMIROVICH KOROTEEV" txt = Change(txt, "=") txt = Change(txt, """") MsgBox txt Τέλος δευτερεύουσας αλλαγής( txt Ως συμβολοσειρά, Τι ως συμβολοσειρά, Προαιρετική θέση = 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 ως συμβολοσειρά, τι ως συμβολοσειρά, προαιρετική θέση για όσο διάστημα) 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) "lowcase.Text = Lcase(.Text) Τέλος με

ή StrConv() - μετατροπή μιας συμβολοσειράς (σε Unicode και πίσω, σε κεφαλαία και πεζά, κεφαλαία στο πρώτο γράμμα των λέξεων κ.λπ.) - βλέπε παρακάτω

Λειτουργίες συμβολοσειρών

Για δεδομένα τύπου String, υπάρχει μόνο μία λειτουργία - συνένωση (ένωση). Για παράδειγμα, το αποτέλεσμα της λειτουργίας συνένωσης τριών τιμών συμβολοσειράς "Peter" & »» & "Ivanovich" θα είναι η συμβολοσειρά "Peter Ivanovich". Είναι επίσης δυνατό να χρησιμοποιήσετε έναν άλλο τελεστή για τη λειτουργία συνένωσης, για παράδειγμα: "ten" + "thousand". Η διαφορά μεταξύ αυτών των εκφράσεων είναι ότι στην πρώτη περίπτωση, οι τελεστές μπορούν να είναι τιμές οποιουδήποτε τύπου (απλώς θα μετατραπούν σε συμβολοσειρές) και στη δεύτερη, και οι δύο τελεστές πρέπει να είναι τύπου String. Υπάρχει ένας μεγάλος αριθμός συναρτήσεων για εργασία με συμβολοσειρές (πίνακας. Λειτουργίες για εργασία με συμβολοσειρές).

Πίνακας "Λειτουργίες για εργασία με χορδές"

Λειτουργία Περιγραφή Παράδειγμα
Len(str) Καθορίζει το μήκος της χορδής Από το a=len(«Χαρακτήρες») ακολουθεί το a=9
αριστερά (<строка>, <длина>) Αποσπάσματα από το επιχείρημα<строка>καθορισμένο αριθμό χαρακτήρων στα αριστερά Left("1234string", 4)="1234″
Σωστά(<строка>, <длина>) Αποσπάσματα από το επιχείρημα<строка>καθορισμένο αριθμό χαρακτήρων προς τα δεξιά Right(" 1234string", 6)="string"
Στα μέσα(<строка>, <старт> [, <длина>]) Αποσπάσματα από το επιχείρημα<строка>υποσυμβολοσειρά με τον καθορισμένο αριθμό χαρακτήρων, ξεκινώντας από τη θέση<старт> Mid("12345678″, 4.3) ="456"
Στα μέσα(<строка>, <старт>) Εξάγεται μια υποσυμβολοσειρά από τη θέση<старт>μέχρι το τέλος της γραμμής Mid("12345678″, 4) ="45678"
LTrim(<строка>) Αφαιρεί τα κενά στην αρχή μιας γραμμής LTrim("print") ="print"
RTrim (<строка>) Αφαιρεί τα κενά στο τέλος μιας συμβολοσειράς RTrim("print") = "print"
Περικοπή (<строка>) Αφαιρεί τα κενά στην αρχή και το τέλος μιας συμβολοσειράς Trim("print") ="print"
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() - επιστρέφει μόνο το πρώτο byte του αριθμητικού κώδικα για τον χαρακτήρα.
    • AscW() - επιστρέφει τον κωδικό για τον χαρακτήρα στην κωδικοποίηση Unicode
  • Ο Χρ() - επιστρέφει έναν χαρακτήρα με τον αριθμητικό του κωδικό. Μπορεί να χρησιμοποιηθεί σε συνδυασμό με τη συνάρτηση Asc(), αλλά τις περισσότερες φορές χρησιμοποιείται όταν χρειάζεται να εκτυπώσετε έναν χαρακτήρα υπηρεσίας (για παράδειγμα εισαγωγικά - "), επειδή Δεν μπορείτε απλώς να εισάγετε εισαγωγικά στον κώδικα VBA (πρέπει να βάλεις διπλά). Αυτή είναι η λειτουργία που χρησιμοποιώ συνήθως.

    Dim sWord As String sWord = Chr(34) & "Word in εισαγωγικά" & Chr(34)

    Υπάρχουν επιλογές για αυτή τη λειτουργία - ChrB() Και ChrW(). Λειτουργήστε παρόμοια με τις ίδιες επιλογές για τη λειτουργία Asc().

  • InStr() Και InStrRev() - ένα από τα πιο δημοφιλή χαρακτηριστικά. Σας επιτρέπει να εντοπίσετε έναν χαρακτήρα ή μια ακολουθία χαρακτήρων στο σώμα μιας μεταβλητής συμβολοσειράς και να επιστρέψετε τη θέση τους. Εάν η ακολουθία δεν βρεθεί, τότε επιστρέφεται το 0.

    Dim sStr As String sStr = "w" Αν InStr(1, "Hello, World!", sStr, vbTextCompare) > 0 Τότε MsgBox "Η λέξη αναζήτησης είναι παρούσα!" Άλλο MsgBox "Η λέξη που αναζητήσατε λείπει!" Τέλος εαν

    Η διαφορά μεταξύ των συναρτήσεων είναι ότι η InStr() αναζητά την καθορισμένη λέξη από την αρχή της γραμμής και η InStrRev() από το τέλος της γραμμής

  • Αριστερά() , σωστά() , Στα μέσα() - τη δυνατότητα λήψης του αριθμού των χαρακτήρων που καθορίζετε από μια υπάρχουσα μεταβλητή συμβολοσειράς στα αριστερά, δεξιά ή στη μέση, αντίστοιχα.

    Dim sStr As String sStr = "Γεια σου Κόσμε!" MsgBox Mid(sStr, 1, 5)

  • Len() - δυνατότητα λήψης του αριθμού των χαρακτήρων σε μια γραμμή. Συχνά χρησιμοποιείται με βρόχους, λειτουργίες αντικατάστασης κ.λπ.
  • LCase() Και UCase() - μετατρέψτε τη συμβολοσειρά σε πεζό και κεφαλαίο αντίστοιχα. Συχνά χρησιμοποιείται για την προετοιμασία μιας τιμής για σύγκριση, όταν η κεφαλαία δεν είναι σημαντική κατά τη σύγκριση (επώνυμα, ονόματα εταιρειών, πόλεων κ.λπ.).
  • LSset() Και RSset() - τη δυνατότητα πλήρωσης μιας μεταβλητής με σύμβολα μιας άλλης χωρίς αλλαγή του μήκους της (αριστερά και δεξιά αντίστοιχα). Οι επιπλέον χαρακτήρες αποκόπτονται και τα κενά αντικαθίστανται για χαρακτήρες που λείπουν.
  • LTrim() , RTrim() , Τακτοποίηση() - δυνατότητα αφαίρεσης κενών αντίστοιχα αριστερά, δεξιά ή και αριστερά και δεξιά.
  • Αντικαθιστώ() - τη δυνατότητα αντικατάστασης μιας ακολουθίας χαρακτήρων σε μια συμβολοσειρά με μια άλλη.

    Dim sStr As String sStr = "Γεια σου Κόσμε!" MsgBox Replace(sStr, "Hello", "Bay")

  • Χώρος() - λάβετε μια συμβολοσειρά από τον αριθμό των κενών που καθορίζετε.
    Μια άλλη παρόμοια λειτουργία είναι Spc() , το οποίο χρησιμοποιείται για τη διαμόρφωση της εξόδου της κονσόλας. Πολλαπλασιάζει τα κενά με βάση το πλάτος της γραμμής εντολών.
  • StrComp() - ικανότητα σύγκρισης δύο χορδών.
  • StrConv() - δυνατότητα μετατροπής μιας συμβολοσειράς (σε Unicode και πίσω, σε κεφαλαία και πεζά, κεφαλαία το πρώτο γράμμα των λέξεων κ.λπ.):

    Dim sStr As String sStr = "Γεια σου Κόσμε!" MsgBox StrConv ("Hello, World!", vbUpperCase)

    Οι σταθερές μπορούν να χρησιμοποιηθούν ως παράμετρος δεύτερης παραμέτρου:

      • vbUpperCase:Μετατρέπει όλους τους χαρακτήρες κειμένου σε κεφαλαία
      • vbLowerCase:Μετατρέπει όλους τους χαρακτήρες κειμένου σε πεζούς
      • vbProperCase:Μετατρέπει τον πρώτο χαρακτήρα κάθε λέξης σε κεφαλαία
      • *vbWide:Μετατρέπει χαρακτήρες συμβολοσειράς από ένα byte σε διπλό byte
      • *vbNarrow:Μετατρέπει χαρακτήρες συμβολοσειράς από διπλό byte σε ένα byte
      • **vbKatakana:Μετατρέπει χαρακτήρες Hiragana σε χαρακτήρες Katakana
      • **vbHiragana:Μετατρέπει χαρακτήρες Katakana σε χαρακτήρες Hiragana
      • ***vbUnicode:Μετατρέπει μια συμβολοσειρά σε Unicode χρησιμοποιώντας την προεπιλεγμένη κωδικοσελίδα του συστήματος
      • ***vbFromUnicode:Μετατρέπει μια συμβολοσειρά Unicode στην προεπιλεγμένη κωδικοσελίδα του συστήματος

    * Ισχύει για τοπικοποιήσεις Άπω Ανατολής
    ** Ισχύει μόνο για την Ιαπωνία
    *** δεν υποστηρίζεται σε λειτουργικά συστήματα Macintosh

  • StrReverse() - «αντιστρέφετε» μια συμβολοσειρά τοποθετώντας τους χαρακτήρες της με αντίστροφη σειρά. Η συνάρτηση λειτουργεί μόνο από Excel 2000 και νεότερη έκδοση. Ένα παράδειγμα χρήσης της συνάρτησης, καθώς και άλλων μεθόδων για τη μετατροπή μιας λέξης, μπορείτε να βρείτε σε αυτό το άρθρο: Πώς να γυρίσετε μια λέξη;
  • Αυτί() είναι μια άλλη λειτουργία που χρησιμοποιείται για τη διαμόρφωση της εξόδου της κονσόλας. Αναπαράγει χαρακτήρες καρτέλας στον αριθμό που καθορίζετε. Εάν δεν έχει καθοριστεί ποσότητα, απλώς εισάγετε έναν χαρακτήρα καρτέλας. Μπορείτε επίσης να χρησιμοποιήσετε τη σταθερά για να εισαγάγετε έναν χαρακτήρα καρτέλας σε μια τιμή συμβολοσειράς vbTab.
  • Σειρά() - σας επιτρέπει να λάβετε μια συμβολοσειρά με έναν καθορισμένο αριθμό χαρακτήρων (που και πάλι προσδιορίζονται από εσάς). Συνήθως χρησιμοποιείται για τη διαμόρφωση της εξόδου σε συνδυασμό με τη συνάρτηση Len().

Οι ακόλουθες τρεις συναρτήσεις σάς επιτρέπουν να εργαστείτε με μια σειρά από συμβολοσειρές

Διαίρεση (<строка> [, <разделитель>]) – μετατρέπει μια συμβολοσειρά σε μια σειρά από υποσυμβολοσειρές. Από προεπιλογή, το διάστημα χρησιμοποιείται ως οριοθέτης. Αυτή η λειτουργία είναι βολική στη χρήση για τη διάσπαση μιας πρότασης σε λέξεις. Ωστόσο, μπορείτε να καθορίσετε οποιοδήποτε άλλο οριοθέτη σε αυτή τη συνάρτηση. Για παράδειγμα, το Split(3, "Αυτή είναι δοκιμαστική πρόταση") επιστρέφει έναν πίνακα με τρεις τιμές συμβολοσειρών: "This", "test", "sentence". Συμμετοχή (<массивСтрок> [, <разделитель>]) – μετατρέπει έναν πίνακα συμβολοσειρών σε μία μόνο συμβολοσειρά με τον καθορισμένο οριοθέτη. Φίλτρο(<массивСтрок>, <строкаПоиск>[, <включение>] [, <сравнение>]) – σαρώνει έναν πίνακα τιμών συμβολοσειρών και αναζητά όλες τις υποσυμβολοσειρές που ταιριάζουν με τη δεδομένη συμβολοσειρά. Αυτή η συνάρτηση έχει τέσσερα ορίσματα:<строкаПоиск>– συμβολοσειρά αναζήτησης.<включение>– μια παράμετρος (τιμή Boole) που καθορίζει εάν οι επιστρεφόμενες σειρές θα περιλαμβάνουν την υποσυμβολοσειρά που αναζητήθηκε ή, αντίθετα, θα επιστραφούν μόνο εκείνες οι σειρές πίνακα που δεν περιέχουν τη συμβολοσειρά που αναζητήθηκε ως υποσυμβολοσειρά.<сравнение>– παράμετρος που καθορίζει τη μέθοδο σύγκρισης συμβολοσειρών. Τρεις ακόμη συναρτήσεις παρέχουν μετατροπή συμβολοσειρών: 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.Text d=a + " " + b Label9.Caption=d End Sub

Εργο

Είναι απαραίτητο στο Excel στο κελί A1 να πραγματοποιηθεί αναζήτηση για λέξεις γραμμένες διαχωρισμένες με κόμμα στη στήλη A2 και το αποτέλεσμα και οι λέξεις που βρέθηκαν, με τον αριθμό των επαναλήψεών τους (αν είναι δυνατόν) στο κείμενο που αναζητήθηκε, να γράφονται σε άλλο, τρίτο, κελί. (θα ήταν ακόμα καλύτερα να τονίζονταν (ή να υπογραμμίζονται) με κάποιο τρόπο στο πρώτο κελί... ώστε να είναι αμέσως ορατές. Έτσι βάζετε λέξεις σε έναν πίνακα:

Κώδικας της Visual Basic
1 2 3 4 5 6 Dim m() Ως συμβολοσειρά Αν 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() Ως συμβολοσειρά Αν InStr(1, Cells(1, 2).Value, ",") > 0 Στη συνέχεια m = Split(Replace(Cells( 1, 2).Τιμή, " ", ""), ",") Διαφορετικά ReDim m(0): m(0) = Trim(Cells(1, 2).Value) End If For R = 0 To UBound( m) N = 1 Εάν InStr(1, Cells(1, 1).Τιμή, m(R)) > 0 Τότε K = InStr(N, Cells(1, 1).Τιμή, m(R)) Κάντε COLOR K , Len(m(R)) N = K + Len(m(R)) K = InStr(N, Cells(1, 1).Value, m(R)) Loop while K > 0 End If Next R End Sub Δευτερεύον ΧΡΩΜΑ(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).Value, ST + LN, 1)<>" " Με κελιά(1, 1).Χαρακτήρες(Έναρξη:=ST, Μήκος:=LN).Γραμματοσειρά .Χρώμα = RGB(0, 0, 255) . Έντονη = Αληθινό Τέλος με Τέλος Υπο

Μπορείτε να κάνετε μια αναζήτηση όχι από την αρχή της λέξης, αλλά από μέρος της λέξης. — προσθέστε έναν άλλο κύκλο Do-Loop. Μετακινήστε μόνο την αρχή (ST) προς τα αριστερά σε ένα διάστημα (http://www.cyberforum.ru/vba/thread567588.html)

Πώς να: Αντιστοιχίσετε μια συμβολοσειρά με ένα μοτίβο (Visual Basic)

Έλεγχος συμμόρφωσηςσυμβολοσειρές στο πρότυπο Τύπος δεδομένων συμβολοσειράς (Visual Basic) - Όμοιος τελεστής (Visual Basic) . ο αριστερός τελεστής του τελεστή Like είναι μια έκφραση συμβολοσειράς και ο δεξιός τελεστής είναι μια συμβολοσειρά προτύπου Το Like επιστρέφει μια Boolean τιμή

Έλεγχος χαρακτήρων

? - οποιοδήποτε σύμβολο

  • Το myString αποτελείται από τον χαρακτήρα W ακολουθούμενο από οποιουσδήποτε 2 χαρακτήρες

    Dim sMatch As Boolean = myString Όπως "W??"

Οποιοσδήποτε χαρακτήρας από τη λίστα και το εύρος

Οποιοσδήποτε χαρακτήρας και μετά ένας από τους χαρακτήρες A, C ή E

    Dim sMatch As Boolean = myString Όπως "?" διάκριση πεζών-κεφαλαίων

  • myString = num χαρακτήρες και μετά ένας χαρακτήρας από το εύρος: i, j, k, l, m ή n:

    Dim sMatch As Boolean = myString Όπως "num" διάκριση πεζών-κεφαλαίων

Όπως λειτουργεί και με μια συμβολοσειρά συστοιχίας συμβολοσειρών μηδενικού μήκους (""). σας επιτρέπει να ελέγξετε ότι μια συμβολοσειρά είναι κενή

Ένας χαρακτήρας από τη λίστα ή κανένας χαρακτήρας

  1. Ο τελεστής Like χρησιμοποιείται δύο φορές και τα αποτελέσματα συνδυάζονται χρησιμοποιώντας τον τελεστή Or (Visual Basic) ή OrElse Operator (Visual Basic).
  2. Στο πρώτο πρότυπο δήλωσης, εισαγάγετε μια λίστα χαρακτήρων σε αγκύλες ().
  3. Στο δεύτερο πρότυπο δήλωσης, μην τοποθετείτε τίποτα στη θέση ελέγχου. Παράδειγμα: έλεγχος ενός επταψήφιου αριθμού τηλεφώνου phoneNum, ο οποίος πρέπει να περιέχει ακριβώς τρία ψηφία, ακολουθούμενο από ένα κενό, μια παύλα, μια τελεία ή χωρίς χαρακτήρα και, στη συνέχεια, τέσσερα ψηφία. (τα τρία πρώτα ψηφία ενδέχεται να μην διαχωρίζονται από τα τελευταία τέσσερα - "χωρίς χαρακτήρα") Μηδενικό, παρουσιάζεται σφάλμα. Αν δοθεί επιχείρημα σύγκριση_τύπου , διαφωνία αρχική_θέση ειναι υποχρεωτικό. γραμμή 1 Απαιτείται. Έκφραση χορδών, το οποίο αναζητείται. γραμμή 2 Απαιτείται. Η έκφραση συμβολοσειράς που αναζητάτε. σύγκριση_τύπου Προαιρετικός. Καθορίζει τον τύπο συγκρίσεις χορδών. Αν η τιμή του επιχειρήματος σύγκριση_τύπου είναι Null, παρουσιάζεται σφάλμα. Αν το επιχείρημα σύγκριση_τύπου παραλείπεται, ο τύπος σύγκρισης καθορίζεται από την παράμετρο Εννοια Νυμφεύομαιδέος. Καθορίστε μια έγκυρη παράμετρο LCID (LocaleID) για να χρησιμοποιήσετε τους κανόνες σύγκρισης που καθορίζονται στις ρυθμίσεις γλώσσας.

    Επιλογές

    Διαφωνία σύγκριση_τύπου χρησιμοποιεί τις ακόλουθες παραμέτρους:

    Επιστρεφόμενες τιμές

    Σημειώσεις

    Λειτουργία InStrBχρησιμοποιείται με δεδομένα byte που περιέχονται σε μια συμβολοσειρά. Λειτουργία InStrBεπιστρέφει τη θέση byte, όχι τη θέση χαρακτήρων, της πρώτης εμφάνισης μιας συμβολοσειράς σε μια άλλη.

    Παραδείγματα

    Χρήση της συνάρτησης 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, Trim. Λάβετε υπόψη ότι αυτές οι συναρτήσεις δεν τροποποιούν στην πραγματικότητα την αρχική συμβολοσειρά, αλλά επιστρέφουν ένα αντίγραφο της συμβολοσειράς με τα επιπλέον κενά που έχουν αφαιρεθεί.

Προσδιορισμός μήκους χορδής

Συνήθως πρέπει να γνωρίζετε το μήκος μιας συμβολοσειράς κατά τη μορφοποίηση μηνυμάτων για έναν χρήστη ή κατά τη μορφοποίηση δεδομένων συμβολοσειράς που εισάγονται από μια διαδικασία σε ένα φύλλο εργασίας του Excel ή σε έγγραφο του Word. Η VBA χρησιμοποιεί τη συνάρτηση για αυτούς τους σκοπούς Len. Στην παρακάτω λίστα, υπάρχουν δύο κενά μεταξύ των παρενθέσεων και της λέξης.



Θα πρέπει να είστε προσεκτικοί με χορδές σταθερού μήκους. Επειδή μια συμβολοσειρά σταθερού μήκους έχει πάντα το ίδιο μήκος, η συνάρτηση 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 εάν η συμβολοσειρά1 και η συμβολοσειρά2 είναι ίσες.
  • 1 εάν το String1 είναι μεγαλύτερο από το String2.


Η παραπάνω λίστα συγκρίνει δύο συμβολοσειρές σε λειτουργία κειμένου: "Προεπιλεγμένη συμβολοσειρά" και "Προεπιλεγμένη συμβολοσειρά". Αποτέλεσμα σύγκρισης = 1, δηλ. Το "Default String" είναι μεγαλύτερο από το "Default String".

Πειραματιστείτε με μια ποικιλία συμβολοσειρών για να κατανοήσετε καλύτερα πώς λειτουργεί η συνάρτηση StrComp.

Λειτουργία InStr

Η συνάρτηση InStr σάς επιτρέπει να προσδιορίσετε εάν μια συμβολοσειρά περιέχει μια άλλη συμβολοσειρά.

Σύνταξη


StrComp(String1, String2[, Σύγκριση])


String1, String2 - οποιεσδήποτε έγκυρες εκφράσεις συμβολοσειράς. Η συνάρτηση ελέγχει εάν το String1 περιέχεται στο String2.

Το Compare είναι ένα προαιρετικό όρισμα που μπορεί να είναι οποιαδήποτε από τις ακόλουθες προκαθορισμένες σταθερές (εάν παραλειφθεί, χρησιμοποιείται η τρέχουσα ρύθμιση Option Compare):

  • vbBinaryCompare - δυαδική σύγκριση δύο συμβολοσειρών.
  • vbTextCompare - σύγκριση κειμένου δύο συμβολοσειρών.
  • vbDatabaseCompare - χρησιμοποιείται μόνο στη Microsoft Access.

Έναρξη - ένα προαιρετικό όρισμα, είναι μια αριθμητική έκφραση και καθορίζει τη θέση του χαρακτήρα στο String1 από την οποία θα πρέπει να ξεκινήσει ο έλεγχος.


Το InStr επιστρέφει έναν αριθμό που υποδεικνύει τη θέση του χαρακτήρα στο String1 όπου βρέθηκε το String2. Εάν το InStr δεν βρει το String2 στο String1, τότε επιστρέφεται το 0. Εάν το String1 (ή το String2) είναι Null, τότε η συνάρτηση επιστρέφει επίσης Null.



Διαίρεση γραμμής

Μερικές φορές καθίσταται απαραίτητο να χωριστεί μια συμβολοσειρά στα συστατικά μέρη της. Στο VBA, τρεις λειτουργίες λύνουν αυτό το πρόβλημα: Αριστερά, Δεξιά, Μεσ.

Αριστερή λειτουργία

Σύνταξη


Αριστερά (Χορδή, Μήκος)


Η συνάρτηση επιστρέφει ένα αντίγραφο της συμβολοσειράς, ξεκινώντας από τον πρώτο χαρακτήρα και συμπεριλαμβάνοντας τον αριθμό των χαρακτήρων που καθορίζεται από το Μήκος. Εάν το Length είναι ένας αριθμός μεγαλύτερος από το πραγματικό μήκος της συμβολοσειράς, τότε επιστρέφεται ολόκληρη η έκφραση String.

Σωστή λειτουργία

Σύνταξη


Δεξιά (Χορδή, Μήκος)


Η συμβολοσειρά είναι οποιαδήποτε έγκυρη έκφραση συμβολοσειράς.

Μήκος - οποιαδήποτε αριθμητική τιμή.


Η συνάρτηση επιστρέφει ένα αντίγραφο της συμβολοσειράς, ξεκινώντας από τον τελευταίο χαρακτήρα και συμπεριλαμβάνοντας, από δεξιά προς τα αριστερά, τον αριθμό των χαρακτήρων που καθορίζεται από το Μήκος. Εάν το Length είναι ένας αριθμός μεγαλύτερος από το πραγματικό μήκος της συμβολοσειράς, τότε επιστρέφεται ολόκληρη η έκφραση String. Η συνάρτηση Right αντιγράφει πάντα χαρακτήρες από το τέλος μιας συμβολοσειράς στην αρχή.

Μεσαία λειτουργία

Σύνταξη


Mid (String, Start, [, Length])


Η συμβολοσειρά είναι οποιαδήποτε έγκυρη έκφραση συμβολοσειράς.

Μήκος, Έναρξη - τυχόν αριθμητικές τιμές.


Η συνάρτηση Mid επιστρέφει ένα αντίγραφο της συμβολοσειράς που ξεκινά από τη θέση χαρακτήρων στη συμβολοσειρά που καθορίζεται από το όρισμα Έναρξη. Το προαιρετικό όρισμα Length καθορίζει τον αριθμό των χαρακτήρων που θα αντιγραφούν από το String στο Mid. Εάν το Start περιέχει μεγαλύτερο αριθμό από το πραγματικό μήκος του String, τότε επιστρέφεται μια κενή συμβολοσειρά.



Χαρακτήρες που δεν μπορούν να εισαχθούν από το πληκτρολόγιο

Συμβαίνει συχνά να χρειάζεται να εισαγάγετε έναν χαρακτήρα για τον οποίο δεν υπάρχει πλήκτρο στο πληκτρολόγιο (για παράδειγμα, ένα σύμβολο πνευματικών δικαιωμάτων). Μια άλλη περίπτωση είναι όταν πρέπει να συμπεριλάβετε έναν χαρακτήρα υπηρεσίας VBA σε μια συμβολοσειρά (η πιο συνηθισμένη περίπτωση είναι η συμπερίληψη διπλών εισαγωγικών).

Για να συμπεριλάβετε χαρακτήρες σε μια συμβολοσειρά που δεν μπορούν να εισαχθούν από το πληκτρολόγιο ή που έχουν ιδιαίτερη σημασία για το VBA, χρησιμοποιήστε τη συνάρτηση Ο Χρ.

Σύνταξη


Chr (Charcode)


Charcode - οποιαδήποτε αριθμητική έκφραση που είναι έγκυρος κωδικός για το σύνολο χαρακτήρων που χρησιμοποιείται από έναν υπολογιστή. Πρέπει να είναι ακέραιος μεταξύ 0 και 255.

Η συνάρτηση Chr παίρνει έναν κωδικό χαρακτήρα ως όρισμα και επιστρέφει μια συμβολοσειρά που περιέχει τον χαρακτήρα που αντιστοιχεί σε αυτόν τον κώδικα. Αυτή η λειτουργία χρησιμοποιείται στις παραπάνω λίστες για την τροφοδοσία μιας γραμμής όταν εμφανίζεται ένα μήνυμα στην οθόνη Chr (13).


Επειδή οι χαρακτήρες που χρησιμοποιούνται για την έναρξη μιας νέας γραμμής είναι τόσο σημαντικοί κατά τη μορφοποίηση μηνυμάτων και άλλων δεδομένων συμβολοσειρών που χειρίζονται ρουτίνες VBA, υπάρχουν αρκετές προκαθορισμένες σταθερές για αυτούς τους χαρακτήρες για να αποφευχθεί η ανάγκη χρήσης της συνάρτησης Chr:

  • Το vbCr είναι ένας χαρακτήρας επιστροφής μεταφοράς. Ισοδυναμεί με Chr(13)
  • vbLf - μετατόπιση χαρακτήρα κατά μία γραμμή. Ισοδυναμεί με Chr(10)
  • vbCrLf - επιστροφή μεταφοράς + μετατόπιση χαρακτήρα κατά μία γραμμή. Ισοδυναμεί με Chr(13)+ Chr(10)
  • vbTab - χαρακτήρας καρτέλας. Χρ(9) ισοδύναμο

Για να δείτε τη λίστα κωδικός-σύμβολοπρέπει να ανοίξετε το σύστημα βοήθειας VBA και κατόπιν αιτήματος "σύνολο χαρακτήρων"Θα παρουσιαστεί ο αντίστοιχος πίνακας.



Μορφοποίηση τιμών δεδομένων

Πολύ συχνά, για τον ένα ή τον άλλο λόγο, η μορφή δεδομένων στην έξοδο ενός προγράμματος δεν μας ταιριάζει απόλυτα. Αυτό το πρόβλημα επιλύεται από τη συνάρτηση Μορφή.

Η συνάρτηση Μορφή VBA είναι πανομοιότυπη με τη συνάρτηση Μορφοποίηση στο Excel και χρησιμοποιεί τα ίδια σύμβολα κράτησης θέσης μορφοποίησης δεδομένων.

Σύνταξη


Μορφή (Έκφραση [, Μορφή[, Πρώτη ημέρα της εβδομάδας [, Πρώτη εβδομάδα του έτους]]])


Έκφραση - οποιαδήποτε έγκυρη έκφραση (απαιτούμενο όρισμα).

Η μορφή είναι μια έγκυρη έκφραση μιας μορφής με όνομα ή καθορισμένη από το χρήστη.

Firstdayofweek είναι μια σταθερά που καθορίζει την πρώτη ημέρα της εβδομάδας.

Firstweekofyear - μια σταθερά που ορίζει την πρώτη εβδομάδα του έτους.


Για να χρησιμοποιήσετε τη συνάρτηση Μορφοποίηση, πρέπει είτε ορίστε μια προκαθορισμένη μορφή, ή δημιουργήστε μια εικόνα συγκεκριμένης μορφής, χρησιμοποιώντας χαρακτήρες κράτησης θέσης.


Επώνυμες μορφές για χρήση με τη συνάρτηση Μορφοποίηση

Επώνυμη μορφή Δράση
Γενική Ημερομηνία Μορφοποιεί τις πληροφορίες ημερομηνίας και ώρας σε έναν διαδοχικό αριθμό ημερομηνίας χρησιμοποιώντας τις ρυθμίσεις μορφής ημερομηνίας και ώρας για αυτόν τον υπολογιστή.
Μεγάλο ραντεβού Μορφοποιεί μόνο το τμήμα ημερομηνίας σε διαδοχική ημερομηνία, χρησιμοποιώντας τις ρυθμίσεις μορφής Μεγάλης ημερομηνίας του υπολογιστή.
Μέση ημερομηνία Μορφοποιεί μόνο το τμήμα ημερομηνίας ως διαδοχική ημερομηνία, χρησιμοποιώντας τις ρυθμίσεις μορφής μεσαίας ημερομηνίας του υπολογιστή σας.
Σύντομη ημερομηνία Μορφοποιεί μόνο το τμήμα που περιέχει την ημερομηνία σε διαδοχική ημερομηνία, χρησιμοποιώντας τις ρυθμίσεις του υπολογιστή για τη μορφή Σύντομη ημερομηνία.
Πολύς καιρός Μορφοποιεί μόνο το χρονικό τμήμα σε διαδοχική ημερομηνία, χρησιμοποιώντας τις ρυθμίσεις μορφής Long time του υπολογιστή.
Μέσος χρόνος Μορφοποιεί μόνο το χρονικό τμήμα σε διαδοχική ημερομηνία, χρησιμοποιώντας τις ρυθμίσεις μορφής μεσαίας ώρας του υπολογιστή.
Σύντομο χρονικό διάστημα Μορφοποιεί μόνο το χρονικό τμήμα σε διαδοχική ημερομηνία, χρησιμοποιώντας τις ρυθμίσεις του υπολογιστή για Μορφή σύντομου χρόνου.
Γενικός Αριθμός Μορφοποιεί έναν αριθμό σε συμβολοσειρά χωρίς ειδικούς χαρακτήρες.
Νόμισμα Μορφοποιεί έναν αριθμό με σύμβολο νομίσματος, διαχωριστικό χιλιάδων και μόνο δύο δεκαδικά ψηφία.
Σταθερός Μορφοποιεί έναν αριθμό έτσι ώστε να υπάρχει πάντα τουλάχιστον ένα ψηφίο πριν από την υποδιαστολή και τουλάχιστον δύο ψηφία μετά από αυτήν.
Πρότυπο Μορφοποιεί έναν αριθμό με διαχωριστικό χιλιάδων έτσι ώστε να υπάρχει τουλάχιστον ένα ψηφίο πριν από το δεκαδικό διαχωριστικό και τουλάχιστον δύο ψηφία μετά από αυτό.
Τοις εκατό Μορφοποιεί έναν αριθμό ως ποσοστό πολλαπλασιάζοντάς τον επί 100 και προσθέτοντας ένα σύμβολο τοις εκατό.
Επιστημονικός Μορφοποιεί έναν αριθμό σε κανονική εκθετική μορφή.
Ναι όχι Η συμβολοσειρά "Ναι" επιστρέφεται εάν ο μορφοποιημένος αριθμός δεν είναι μηδενικός, διαφορετικά - "Όχι".
Σωστό Λάθος Η συμβολοσειρά "True" επιστρέφεται εάν ο μορφοποιημένος αριθμός δεν είναι μηδενικός, διαφορετικά - "False".
On/Off Η συμβολοσειρά "On" επιστρέφεται εάν ο μορφοποιημένος αριθμός δεν είναι μηδενικός, διαφορετικά - "Off".

Placeholders για τη δημιουργία προσαρμοσμένων μορφών

Χαρακτήρας θέσης Ενέργεια (χρησιμοποιώντας τον αριθμό 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-e- Εμφανίζει την τιμή σε εκθετική μορφή με εκθέτη μόνο για αρνητικές τιμές: #.####E-00 εμφανίζει 1.23445E03
E+ e+ Εμφανίζει την τιμή σε εκθετική μορφή με εκθέτη τόσο για αρνητικές όσο και για θετικές τιμές: #.####E+00 εμφανίζει 1.23445E+03
/ Διαχωρίζει την ημέρα, τον μήνα και το έτος για τη μορφοποίηση των τιμών ημερομηνίας.
Μ Καθορίζει τον τρόπο εμφάνισης μηνών σε ημερομηνίες: m εμφανίζει 1, mm - 01, mmm - Ιαν, mmmm - Ιανουάριο
ρε Καθορίζει τον τρόπο εμφάνισης των ημερών σε ημερομηνίες: d εμφανίζει 1, dd - 01, ddd - Sun, dddd - Sunday
y Εμφανίζει την ημέρα του έτους ως αριθμό από το 1 έως το 366
εεε Καθορίζει τον τρόπο εμφάνισης των ετών σε ημερομηνίες: εε - 66, εεεε - 1966
q Εμφανίζει το τρίμηνο του έτους ως αριθμό από το 1 έως το 4
w Εμφανίζει την ημέρα της εβδομάδας ως αριθμό (1 - Κυριακή)
ww Εμφανίζει την εβδομάδα του έτους ως αριθμό από το 1 έως το 54
: Διαχωρίζει τις ώρες, τα λεπτά και τα δευτερόλεπτα σε τιμές μορφής ώρας: ωω:λλ:δ - 01:01:01, ω:λ:δ - 1:1:1
η Καθορίζει τον τρόπο εμφάνισης των ωρών: ωω - 01, ω - 1
Μ Καθορίζει τον τρόπο εμφάνισης των λεπτών: mm - 01, m - 1
μικρό Καθορίζει τον τρόπο εμφάνισης των δευτερολέπτων: ss - 01, s - 1
Π.Μ. Μ.Μ Εμφανίζει την ώρα σε μορφή ώρας 12 ωρών με προσθήκη ΠΜ ή ΜΜ
@ Ένα σύμβολο κράτησης θέσης χαρακτήρων που εμφανίζει ένα κενό αν δεν υπάρχει αντίστοιχος χαρακτήρας στη μορφοποιημένη συμβολοσειρά.
Εμφανίζει όλους τους χαρακτήρες με κεφαλαία.
> Εμφανίζει όλους τους χαρακτήρες με πεζά.
Ο Χρ

Λειτουργία Χρ

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

Λειτουργία Ο Χρ(Ch aracte r) σας επιτρέπει να λάβετε έναν χαρακτήρα με βάση την τιμή του αριθμητικού κώδικα ANSI ή Unicode του

Επιστρεφόμενη αξία

Λειτουργίες Ο Χρ, ChrB, ChrWεπιστρέψτε μια τιμή του υποτύπου String τύπου Variant που περιέχει τον χαρακτήρα που αντιστοιχεί στον καθορισμένο κωδικό χαρακτήρων ANSI ή Unicode. Λειτουργίες Χρ$, ChrB$, ChrW$επιστρέψτε μια τιμή τύπου String ανάλογα

Σημείωση

Ο ΧρΚαι Χρ$να επιστρέψει έναν χαρακτήρα με την κωδικοποίηση ANSI
ChrBΚαι ChrB$ΕΠΙΣΤΡΟΦΗ ενός byteγραμμή
ChrWεπιστρέφει έναν χαρακτήρα Unicode, ωστόσο σε μη Unicode συστήματα η συμπεριφορά του είναι παρόμοια Ο Χρ
Χρήση στην παράμετρο CharCodeτιμές μεγαλύτερες από 255 δημιουργούν σφάλματα χρόνου εκτέλεσης 5: Μη έγκυρη κλήση διαδικασίας ή όρισμα ή 6: Υπερχείλιση

Επιλογές CharCode Το απαιτούμενο όρισμα είναι μια τιμή Long που καθορίζει τον χαρακτήρα. Συνήθως η συνάρτηση Ο Χρχρησιμοποιείται κατά την εισαγωγή μη εκτυπώσιμων χαρακτήρων σε συμβολοσειρές κειμένου (επιστροφή μεταφοράς, τροφοδοσία γραμμής, πίνακας, κ.λπ.). Οι κωδικοί 0-31 αντιστοιχούν σε τυπικούς χαρακτήρες ελέγχου ASCII. Για παράδειγμα, Ο ΧρΤο (10) επιστρέφει χαρακτήρα νέας γραμμής Παράδειγμα Dim retval retval = Ο Χρ(65) Επαναφορά Debug.Print " επιστρέφει το A Κατηγορία

Στην ενότητα για την ερώτηση Άνθρωποι, εξηγήστε λεπτομερώς τι σημαίνει η συνάρτηση ord(x) και το αντίστροφό της chr(x) στον Pascal; δίνεται από τον συγγραφέα Νικ Μπράουνη καλύτερη απάντηση είναι Υπάρχει ένας ειδικός πίνακας χαρακτήρων (εκτεταμένος κωδικός ASCII, όταν κάθε χαρακτήρας έχει μια αριθμητική τιμή, συνολικά υπάρχουν 255 τιμές στον πίνακα, δηλαδή σε κάθε χαρακτήρα εκχωρείται ένας αριθμός,
Το chr(0..254) μετατρέπει έναν αριθμό (ένα byte) στον χαρακτήρα στον οποίο ανήκει αυτός ο αριθμός, για παράδειγμα chr(71) το αποτέλεσμα θα είναι το γράμμα "G", επίσης το πάτημα των πλήκτρων στο πληκτρολόγιο δημιουργεί τον δικό του κωδικό, αυτός είναι ακριβώς ο κωδικός όταν τοποθετηθεί σε αυτόν τον τελεστή και θα δώσει το αποτέλεσμα ποιο πλήκτρο θα πατηθεί, αυτός είμαι εγώ για παράδειγμα. Αλλά ο τελεστής ORD(x) κάνει αυτή τη διαδικασία με αντίστροφη σειρά.
Ορίζουμε τον χαρακτήρα τιμής και παίρνουμε έναν αριθμό από το 0 έως το 254 (ένα byte)
για παράδειγμα το ORD("G") θα μας δώσει το αποτέλεσμα 71 (σε δεκαδική μορφή)
Μόνο αυτό φαίνεται!!!

Απάντηση από Κατιονάτσικ[αρχάριος]
Είναι απλό, πραγματικά)
Ord ("X") - θα επιστρέψει τον κωδικό του χαρακτήρα X από τον πίνακα ASKII.
Το αποτέλεσμα της αντίστροφης συνάρτησης θα είναι ένα σύμβολο που αντιστοιχεί στον εισαγόμενο κωδικό (από τον οποίο λαμβάνεται η συνάρτηση) από τον ίδιο πίνακα ASCII.


Απάντηση από Juri[γκουρού]
Αυτές δεν είναι αμοιβαίες λειτουργίες!
Η συνάρτηση Ord επιστρέφει την τακτική τιμή ενός απαριθμημένου τύπου.
Η καταμέτρηση ξεκινά από το μηδέν.
Για τον τύπο byte, η συνάρτηση θα επιστρέψει την πραγματική τιμή - ο τακτικός αριθμός συμπίπτει με την τιμή.
Για τον τύπο χαρακτήρων, η συνάρτηση θα επιστρέψει τον σειριακό αριθμό του χαρακτήρα, ο οποίος (ο αριθμός είναι τυχαίος) συμπίπτει με τον κωδικό ASCII.
Η συνάρτηση chr επιστρέφει τον χαρακτήρα με τον δεδομένο κωδικό ASCII.
Συμπέρασμα: Απλώς, όσον αφορά τις συμβολικές αξίες, λειτουργούν πραγματικά ως το αντίστροφο του άλλου...
Επομένως, μπορούμε να πούμε ότι η συνάρτηση ord είναι το αντίστροφο της συνάρτησης chr, αλλά όχι το αντίστροφο - η συνάρτηση chr δεν είναι το αντίστροφο της συνάρτησης ord, αφού το εύρος της συνάρτησης ord δεν περιορίζεται στην εργασία με σύμβολα!