Forum

Forum (https://www.ms-office.gr/forum/)
-   Excel - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/)
-   -   [VBA] Όριο γραμμων σε TextBox (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/5166-orio-grammon-se-textbox.html)

gfevran 22-02-19 10:31

Όριο γραμμων σε TextBox
 
Καλημέρα,
Σε μια textbox με scrollbarsvertical θέλω να ελέγχω το πλήθος των γραμμών
της textbox Π.χ. μόλις συμπληρωθούν 5 γραμμές να μη σου επιτρέπει να γράφεις άλλο!

Ευχαριστώ για όποια βοήθεια

ChrisGT7 22-02-19 15:57

Καλησπέρα Γιώργο,

Αφού θέσεις τις ιδιότητες MultiLine=True και EnterKeyBehavior=True του textbox, στο γεγονός του KeyDown δοκίμασε το εξής:

Κώδικας:

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If TextBox1.LineCount >= 5 And KeyCode = 13 Then KeyCode = 0
End Sub


gfevran 22-02-19 17:51

1 Συνημμένο(α)
Καλησπέρα Χρήστο,
Σε' Ευχαριστώ για την άμεση απάντηση,
δεν ξέρω που κάνω λάθος και δεν δουλεύει,
ανεβάζω συνημμένο

ChrisGT7 22-02-19 19:14

2 Συνημμένο(α)
Γιώργο,

Το textbox έχει μια ιδιότητα (EnterKeyBehavior), η οποία αν είναι True δίνει τη δυνατότητα στο κουμπί Enter να δημιουργεί νέα γραμμή, όπως στους κειμενογράφους.

Απλά δεν την είχες θέσει σε True. Δοκίμασε το συνημμένο να δεις αν λειτουργεί τώρα.

Spirosgr 22-02-19 19:35

Καλησπέρα
Χρήστο, επειδή κάποιοι χρήστες μπορεί να «ξεχάσουν» τις ιδιότητες που απαιτούνται,
γράψε ό, τι χρειάζεται στο Initialize της φόρμας, και όλα καλά.

Spirosgr 22-02-19 19:49

Δείτε και μια ακόμα λύση, στο Change του TextBox.
Κώδικας:

Option Explicit
Const Rlimit As Byte = 5 'Καταχωρήστε το όριο γραμμών, ΕΔΩ
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Sub UserForm_Initialize()
    With Me.TextBox1
        .MultiLine = True
        .ScrollBars = fmScrollBarsVertical
        .EnterKeyBehavior = True
    End With
End Sub

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Sub TextBox1_Change()
Dim temp As String
    With Me.TextBox1
        If .CurLine > Rlimit - 1 Then
            MsgBox "Δεν Επιτρέπονται, Περισσότερες Από: " & Rlimit  & " Γραμμές."
            temp = .Text
                If Right(temp, 2) = vbCrLf Then
                    temp = Left(temp, Len(temp) - 2)
                Else
                    temp = Left(temp, Len(temp) - 1)
                End If
            .Text = temp
        End If
        'Προαιρετικά
        .Value = Application.WorksheetFunction.Proper(TextBox1.Value)
    End With
End Sub

Η τελευταία γραμμή ('Προαιρετικά)
εμφανίζει το κείμενο με πρώτο γραμμα κάθε λέξης κεφαλαίο.

ChrisGT7 22-02-19 19:54

1 Συνημμένο(α)
Σπύρο,

Ναι, όντως έχεις δίκιο! Καλύτερα με τη φόρτωση της φόρμας να τροποποιούνται οι απαιτούμενες ιδιότητες των ελεγκτηρίων.

Γιώργο,

Μια μικρή παραλλαγή του προηγούμενου αρχείου. Κάθε φορά που φορτώνεται η φόρμα, οι 3 ιδιότητες του textbox που χρειάζεσαι αρχικοποιούνται σύμφωνα με τις ανάγκες σου.

gfevran 22-02-19 19:59

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

ChrisGT7 22-02-19 20:17

Γιώργο,

Τότε χρειάζεσαι τον κώδικα του Σπύρου.

Ο δικός μου κώδικας θεωρεί τη νέα γραμμή κάθε φορά που πατάς Enter.

gfevran 23-02-19 08:02

Καλημέρα,
Χρήστο όπως το λες η πρόταση του Σπύρου είναι αυτή ακριβώς που θέλω.
Σας Υπέρ Ευχαριστώ και εσένα και το Σπύρο.

Να’ είστε καλά,
Καλή συνέχεια.


Η ώρα είναι 04:12.

Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.


Search Engine Optimization by vBSEO 3.3.2