Forum

Αναζήτηση στο ms-office.gr

Πάμε!

Visual Basic for Applications (VBA) Ερωτήσεις / Απαντήσεις σε σχέση με τη χρήση της VBA.

Απάντηση στο θέμα

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 07-01-10, 16:57
Όνομα: Αντώνης
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 06-01-2010
Μηνύματα: 10
Προεπιλογή InputBox Cancel

Καλησπέρα.

Σε περιβάλλον Access θέλω να χρησιμοποιήσω το παρακάτω:

Κώδικας:
Sub test()
    Dim x As String
    x = InputBox("test", "test")
    If x = "" Then
        MsgBox "No Value"
    Else
        MsgBox x
    End If
End Sub
Μ αυτό τον τρόπο το πρόγραμμα αναγνωρίζει αν ο χρήστης πληκτρολόγησε κάτι στο Inputbox ή όχι.

Αν ο χρήστης πατήσει άκυρο ή απλά κλείσει το παράθυρο, το x είναι πάλι ““ οπότε η VBA δεν μπορεί να επιστρέψει την πληροφορία ότι ακυρώθηκε δηλ δεν αναγνωρίζει την ακύρωση.

Μήπως γνωρίζετε κάτι πάνω σ αυτό;

Με άλλα λόγια, θέλω με κάποιο τρόπο να επισημαίνεται η ακύρωση του Inputbox από τη VBA.

Ευχαριστώ

Αντώνης
Απάντηση με παράθεση
  #2  
Παλιά 07-01-10, 17:16
Όνομα: Γιώργος Καψάλης
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 18-11-2009
Μηνύματα: 126
Προεπιλογή

καλησπερα


απο οτι τουλαχιστον γνωριζω εγω δεν υπάρχει τροπος αναγνωρισεις του cancel η το ok..!

και τα δουλεύω αρκετα.. απλα προσαρμοζω τον κωδικα αντιστοιχα..

Γιώργος
Απάντηση με παράθεση
  #3  
Παλιά 07-01-10, 18:26
Όνομα: Αντώνης
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 06-01-2010
Μηνύματα: 10
Προεπιλογή

Γιώργο καλησπέρα.
Σ ευχαριστώ για την άμεση ανταπόκριση.

Το ΟΚ το βρίσκω αν το x του κώδικα δεν είναι κενό ("")
Το πρόβλημα μου είναι το Cancel!!!

Φιλικά

Αντώνης
Απάντηση με παράθεση
  #4  
Παλιά 07-01-10, 18:43
Όνομα: Γιώργος Καψάλης
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 18-11-2009
Μηνύματα: 126
Προεπιλογή

Γεια σου Αντωνη

ουτε το ok βρίσκεις ουσιαστικα..

Γιατι ειτε οκ πατησεις ειτε cancel το ιδιο επιστρεφει

Επιστρεφει ότι έχεισ καταχωρήσει..

Αρα είτε το ένα είτε το άλλο ειναι το ίδιο.. εκτος και εαν υπάρχει κατι που δεν το ξέρω..!

Γιώργος
Απάντηση με παράθεση
  #5  
Παλιά 07-01-10, 19:37
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 1.328
Προεπιλογή

Υπάρχει η συνάρτηση StrPtr, στην κλάση της VBA_HiddenModule“ που είναι καλά κρυμμένη και μας επιστρέφει μια τιμή Long που αντικατοπτρίζει την διεύθυνση της μνήμης (RAM) του υπολογιστή που έχει κρατηθεί για ένα συγκεκριμένο κείμενο (String).
Έτσι λοιπόν δίνοντας την εντολή StrPtr(x), όπου x = το InputBox, η τιμή που θα μας επιστραφεί θα είναι:
  • Είτε 0 αν ο χρήστης πατήσει Cancel ή κλείσει το Inputbox (δεν θα φορτωθεί τίποτα στη μνήμη)
  • Είτε κάποιος άλλος αριθμός (που σημαίνει ότι κάτι έχει φορτωθεί άρα δεν έχει ακυρωθεί).

Στην πράξη γίνεται έτσι:

Κώδικας:
Sub test1()
    Dim x As String
    x = InputBox("test", "test")
    If StrPtr(x) = 0 Then
        MsgBox "Aborted from User"
    ElseIf x = vbNullString Then
        MsgBox "No Value"
    Else
        MsgBox x
    End If
End Sub
Τα λέμε...

Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών σε VB.Net, Access, Excel, Outlook, Word

Τελευταία επεξεργασία από το χρήστη Tasos : 07-01-10 στις 19:44.
Απάντηση με παράθεση
  #6  
Παλιά 08-01-10, 06:03
Όνομα: Αντώνης
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 06-01-2010
Μηνύματα: 10
Προεπιλογή

Καλημέρα σε όλους.
Σας ευχαριστώ για τις απαντήσεις και το χρόνο σας.
Μια ερώτηση μόνο.
Που υπάρχει αυτή η StrPtr;
Όσο κι αν έψαξα στη βοήθεια δεν μπόρεσα να βρώ κάτι.
φιλικά

Αντώνης
Απάντηση με παράθεση
  #7  
Παλιά 08-01-10, 15:02
Το avatar του χρήστη editolis
Super Moderator
Όνομα: Τολης
Έκδοση λογισμικού Office: Ms-Office 2000, Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 02-01-2010
Περιοχή: ATHENS-GREECE
Μηνύματα: 190
Προεπιλογή

Εδω μπορεις να βρεις καποιες πληροφοριες:

Visual Basic Secrets
Απάντηση με παράθεση
  #8  
Παλιά 08-01-10, 22:33
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 1.328
Προεπιλογή

Καλησπέρα σε όλους!

Φίλε Τόλη καλωσόρισες στο φόρουμ!

Τις συναρτήσεις αυτές θα τις βρούμε στον Object Browser του VBE (άνοιγμα με το πλήκτρο F2).

Θα πρέπει να τσεκάρουμε την επιλογή "Show hidden Members" και να κάνουμε αναζήτηση (βλ. εικόνα).

InputBox Cancel-strptr.jpg

Φιλικά

Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών σε VB.Net, Access, Excel, Outlook, Word
Απάντηση με παράθεση
  #9  
Παλιά 09-01-10, 13:51
Όνομα: Αντώνης
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 06-01-2010
Μηνύματα: 10
Προεπιλογή

Αγαπητοί μου φίλοι καλησπέρα.

Σας ευχαριστώ πολύ για τις απαντήσεις!

Φίλε Τόλη σ ευχαριστώ πολύ για το Link είχα διαβάσει ήδη σχετικά
στη Microsoft - Not So Lightweight .

Αυτό που μου είχε κάνει εντύπωση ήταν που δεν εμφανιζόταν στο intelicense στον VBE.

Τώρα, ξέρω που θα το βρώ αυτό και πολλά άλλα "κρυμμένα".

Φίλε Τάσο, σ ευχαριστώ για την πληροφορία με τα Hidden members στον VBE.

Φιλικά

Αντώνης
Απάντηση με παράθεση
Απάντηση στο θέμα

Εργαλεία Θεμάτων
Τρόποι εμφάνισης

Δικαιώματα - Επιλογές
Δε μπορείτε να δημοσιεύσετε νέα μηνύματα
Δε μπορείτε να δημοσιεύσετε απαντήσεις
Δεν μπορείτε να επισυνάψετε αρχεία
Δεν μπορείτε να επεξεργαστείτε τα μηνύματα σας

Ο κώδικας ΒΒ είναι σε λειτουργία
Τα Smilies είναι σε λειτουργία
Ο κώδικας [IMG] είναι σε λειτουργία
Ο κώδικας HTML είναι εκτός λειτουργίας
Trackbacks are εκτός λειτουργίας
Pingbacks are εκτός λειτουργίας
Refbacks are εκτός λειτουργίας



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