Forum

Forum (https://www.ms-office.gr/forum/)
-   Excel - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/)
-   -   [Excel07] Δημιουργία κουμπιού (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/4939-dimioyrgia-koympioi.html)

stam75 07-07-18 17:20

Δημιουργία κουμπιού
 
Καλησπέρα στο φόρουμ!
Έχω 2 βιβλία excel στα οποία δουλεύω στο γραφείο.
Σκέφτομαι να τα κάνω ένα για να είναι όλα τα δεδομένα της δουλειάς μου μαζί.
Η ερώτησή μου είναι η εξής, μπορώ να έχω ένα κουμπάκι (βασικά το ίδιο κουμπάκι) σε όλα τα φύλλα του βιβλίου; Ώστε όταν το πατάω να μου εμφανίζει σε λίστα όλες τις ονομασίες φύλλων του βιβλίου (αυτό γνωρίζω ότι είναι εύκολο με δεξί κλικ στα βελάκια κάτω αριστερά).
Όμως, σκέφτομαι πως θα μου ήταν πολύ πιο χρήσιμο πατώντας το κουμπί, να ανοίγει ένα παράθυρο το οποίο να περιλαμβάνει την ονομασία του κάθε φύλλου σε μία σειρά και κάτω από την ονομασία του κάθε φύλλου να έχω σε λίστα όλες τις περιοχές που έχω ονομάσει και κλικάροντας επάνω τους να με οδηγούν στον προορισμό.
Πόσο εφικτό είναι αυτό;
Ευχαριστώ

kapetang 08-07-18 13:08

1 Συνημμένο(α)
Καλησπέρα

Σταμάτη, δες μια πρόταση στο συνημμένο.

1) Στο Module1 έχω προσθέσει τη διαδικασία CreateLinks

2) Στο βιβλίο έχω προσθέσει το φύλλο Links.

3) Στα άλλα φύλλα πρόσθεσα ένα κουμπί.

Πατώντας το κουμπί εκτελείται ο κώδικας της διαδικασίας CreateLinks, ο οποίος κάνει ενεργό το φύλλο Links και το συμπληρώνει με υπερσυνδέσεις προς τις περιοχές των ονομάτων.

stam75 08-07-18 14:38

Καλησπέρα Γιώργο και σε ευχαριστώ πολύ για την πρόταση σου και τον χρόνο που διέθεσες.
Θα το δουλεύω στον υπολογιστή αργότερα και θα σε ενημερώσω.

stam75 08-07-18 17:30

Γιώργο πολύ ωραία η λύση που προτείνεις σε ευχαριστώ πολύ. Υπάρχει περίπτωση να δημιουργούνται ως σύνδεσμοι οι ονομασίες των περιοχών κι όχι τα διακριτικά των στηλών/σειρών;
Δηλαδή στο φύλλο Links αντί για A1:C11 να παίρνω Name1;
Εκτός κι αν θέλει αρκετή δουλίτσα όποτε το αφήνουμε.
Και πάλι σε ευχαριστώ πολύ

kapetang 08-07-18 18:17

1 Συνημμένο(α)
Σταμάτη, δες το συνημμένο.

stam75 08-07-18 18:42

Μπράβο Γιώργο άψογο είναι τέλειο! Σε υπέρ ευχαριστώ!

kapetang 08-07-18 18:58

Να είσαι καλά!

stam75 09-07-18 12:42

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

Runtime error '1004':
Method 'Range' of object '_Global' failed

και όταν πατάω debug
μου δείχνει το παρακάτω (με κίτρινο φόντο τα κόκκινα γράμματα.)

Κώδικας:

Private Sub lbxSheets_Click()
  Dim Nme As Name
  Me.lbxNamedRanges.Clear
  For Each Nme In ThisWorkbook.Names
    If Range(Nme).Parent.Name = Me.lbxSheets.Value Then Me.lbxNamedRanges.AddItem Nme.Name
  Next Nme
End Sub

Γνωρίζει κάποιος τι ακριβώς συμβαίνει;

Spirosgr 09-07-18 14:12

1 Συνημμένο(α)
Πήγαινε πίσω στην vba, πάτα το κουμπί της εικόνας και πες μου ποιές βιβλιοθήκες
είναι ενεργοποιημένες.

stam75 09-07-18 14:18

1 Συνημμένο(α)
Μόνο όσα είναι επιλεγμένα στην φωτογραφία!

Spirosgr 09-07-18 14:31

Δεν ξέρω τι άλλες ρουτίνες έχεις στο έργο σου,
αλλά σ' εμένα δεν χτυπάει πουθενά, με αυτές τις βιβλιοθήκες.
Δοκίμασε χωρίς την Ref Edit Control.(?)

stam75 09-07-18 14:38

Δεν άλλαξε κάτι με την αφαίρεση της.
Όταν μιλάς για ρουτίνες αναφέρεσαι σε κώδικα στην visual basic;
Αν ναι, έχω άλλο ένα Module με το οποίο μεταφέρω κάποια δεδομένα από πίνακες σε μια στήλη και μετά σβήνει κάποια άλλα δεδομένα από διάφορες περιοχές σε ένα άλλο φύλλο.
Αν βάλω τον κώδικα εδώ θα βοηθήσει;

Spirosgr 09-07-18 14:43

1 Συνημμένο(α)
Όχι ο κώδικας είναι της φόρμας και εκεί να παραμείνει...
Είδα οτι έχεις 2013 office στο profile σου.
Αν ισχύει,
δες την εικόνα και αν υπάρχουν, αντικατέστησε τις κυκλωμένες, με τις ίδιες αλλά 15.0 έκδοση.

Κατά τα άλλα δεν μπορώ να ξέρω τι συμβαίνει διότι όπως σου είπα
δεν μου χτυπάει σφάλμα με την παρούσα μορφή...

stam75 09-07-18 15:08

Όχι τα έχω αλλάξει σε 2016. Πρέπει να αλλάξω κάτι τώρα;

Spirosgr 09-07-18 17:29

Όχι όλα καλά.
Άλλαξε το και στο profile σου.

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

Spirosgr 09-07-18 17:39

Κάνε μια αλλαγή στον κώδικα με αυτό:
Κώδικας:

Private Sub lbxSheets_Click()
    Dim Nme As Name
    Me.lbxNamedRanges.Clear
    For Each Nme In ThisWorkbook.Names
        If Range(Nme).Parent.Name = Me.lbxSheets.List(Me.lbxSheets.ListIndex) _
          Then Me.lbxNamedRanges.AddItem Nme.Name
    Next Nme
End Sub

να μου πεις συμπεριφορά...

stam75 09-07-18 18:43

Έχω κάνει την αλλαγή στον κώδικα. Κάνω κλικ επάνω στην αριστερή λίστα αλλά δεν κάνει κάτι.
Δεν πειράζει μην ταλαιπωρείσαι άλλο με μια σειρά κώδικα, έτσι κι αλλιώς ο Γιώργος πιο πάνω έδωσε εξίσου βολική λύση. Να είσαι καλά για τον χρόνο που διέθεσες σε ευχαριστώ πολύ Σπύρο

Επίσης για την έκδοση του 2016 δεν έχει επιλογή στο προφίλ μου ώστε να το αλλάξω.

kapetang 09-07-18 20:11

1 Συνημμένο(α)
Καλησπέρα

Σταμάτη στο συνημμένο έκανα κάποιες βελτιώσεις.

1) Τροποποίησα τον κώδικα ώστε στο φύλλο Links να συμπληρώνονται και οι πίνακες που υπάρχουν στα φύλλα.

2) Επίσης τροποποίησα τον κώδικα, για να μη «χτυπάει» όταν ένα όνομα αναφέρεται σε τύπο.

stam75 09-07-18 20:39

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

Spirosgr 09-07-18 20:46

1 Συνημμένο(α)
Σταμάτη...
Στο δικό μου, η ρουτίνα δεν «χτυπούσε», γιατί δεν έχω ονομασίες που αφορούν τύπους.
Στο βιβλίο, υπάρχει ένα update στον κώδικα και στην φόρμα.
Αν η ονομασία αφορά τύπους, δεν επιλέγει περιοχή, αλλά βγάζει msgbox.
Οι ονομασίες με τύπους ακολουθούν όλα τα φύλλα.
Με την επιλογή φύλλου, μεταφερόμαστε στο φύλλο by default, πριν την επιλογή ονόματος.
Η επιλογή False ή True στην γραμμή:
Application.Goto Range(Me.Lst_NmRng.List(Me.Lst_NmRng.ListIndex)), False 'True
είναι επιλογή σου αν θέλεις να «έρχεται» η περιοχή στο πάνω αριστερά μέρος του φύλλου ή όχι.
Περισσότερα στο βιβλίο...

stam75 09-07-18 21:04

Ε λοιπόν είστε και οι δύο θεότρελοι και καταφέρατε αυτό που ζητούσα!
Θέλω να σας πω ένα τεράστιο ΕΥΧΑΡΙΣΤΩ για τον κόπο σας και για τον πολύτιμο σας χρόνο που ξοδέψατε για τη βοήθεια που μου προσφέρατε στο ζήτημά μου.
Και η δικιά σου Γιώργο είναι τρομέρη αλλά και η δικιά σου Σπύρο είναι αυτό που έψαχνα από την αρχή.
Επειδή λοιπόν δε ξέρω ποια να προτιμήσω τώρα, θα τις κρατήσω και τις δύο και θα τις πάω εναλλάξ :lol::lol:
Παρόλα αυτά Σπύρο όχι δεν είχα ονομασία που να αφορά τύπο στο βιβλίο μου.

Spirosgr 09-07-18 21:09

Να 'σαι καλά!
Αν θέλεις, κάνε μου μια εικόνα, με τις ονομασίες σου από τον name manager,
για να δω τι είδους ονομασίες υπάρχουν και να εντοπίσω το σφάλμα...

Spirosgr 09-07-18 21:19

2 Συνημμένο(α)
Σημείωση
Αν θέλει κάποιος μια λίστα (χωρίς κώδικα)
με τις ονοματοδοσίες ενός Χ βιβλίου, μπορεί να κάνει το εξής:
Επιλέγει ένα κελί, σε ένα φύλλο (υπάρχον ή νέο) που θέλει να «πάρει» την λίστα
και ακολουθεί τα βήματα στις εικόνες 1 & 2.
Η λίστα, αντιγράφεται στο κελί που επιλέχθηκε και προς τα κάτω.

Φυσικά δεν έχουμε navigation, παρά μόνο την λίστα...

stam75 09-07-18 21:19

1 Συνημμένο(α)
Αυτά εννοείς έτσι;

Spirosgr 09-07-18 21:21

Ναι αυτό, αν και δεν φαίνονται καλά τα πεδία...

Spirosgr 09-07-18 21:49

1 Συνημμένο(α)
Αν υπάρχουν ονομασίες, με περιοχές multi,
τότε είναι ένας λόγος για το σφάλμα που εμφάνιζε...
*βλέπε εικόνα

stam75 09-07-18 21:54

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

Spirosgr 09-07-18 22:05

Ok ευχαριστώ.
Είναι σημαντικό να δω γιατί «χτύπησε» (παρ' όλο που φαντάζομαι)
επειδή κρατάω αρχείο σφαλμάτων, εκτός από βιβλιοθήκες και πρότυπα.
Αν δεν θέλεις να φανούν τα ονόματά σου, βάλτα σε προσωπικό μνμ.
Καλό βράδυ.

kapetang 09-07-18 22:18

1 Συνημμένο(α)
Σταμάτη, στο συνημμένο έβαλα τα ονόματα των φύλλων σε γραμμή

stam75 10-07-18 11:32

Καλημέρα Γιώργο μόλις ενημέρωσα τον κώδικα στο βιβλίο μου, σε ευχαριστώ πολύ για ακόμη μια φορά!

kapetang 10-07-18 11:50

1 Συνημμένο(α)
Καλημέρα

Σταμάτη, στο συνημμένο:

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

2) Επίσης έκανα κάποιες αλλαγές, στην πολύ καλή πρόταση του Σπύρου, ώστε να εμφανίζονται στη φόρμα και οι πίνακες του βιβλίου και να μη εμφανίζονται τα ονόματα που αφορούν τύπους.

Πιστεύω ότι έτσι είναι πιο ολοκληρωμένες οι προτάσεις.

stam75 10-07-18 12:08

Μπράβο Γιώργο έχετε φτάσει και οι δυο σας το ζητούμενο σε άλλο επίπεδο πιστεύω.
Αφού υπάρχει βελτίωση αν μου επιτρέπετε να ρωτήσω κάτι ακόμη, γίνεται και στις δύο περιπτώσεις να μην εμφανίζονται οι PrintAreas; Όχι βέβαια ότι με ενοχλούν ιδιαίτερα.

kapetang 10-07-18 14:56

1 Συνημμένο(α)
Σταμάτη, δες το συνημμένο.

Σημείωση

Πρόσθεσα στο δεύτερο μέρος της πρότασης Like ένα «!» και έτσι δόθηκε η δυνατότητα να μη εμφανίζονται οι αυτόματες περιοχές Print_Area, αλλά να εμφανίζονται οι περιοχές με ονόματα που περιέχουν τη συμβολοσειρά "Print_Area"

Κλείσιμο «τρύπας» που επισήμανε στο post #37 ο Σπύρος

stam75 10-07-18 18:45

Καλησπέρα, Γιώργο είσαι φοβερός!!
Μία τελευταία δουλειά έμεινε τώρα ώστε να ολοκληρωθεί! Να ορίσετε να κάνει και καφέ μόνο του!
:drinks::drinks:

:respect:

kapetang 10-07-18 18:56

Χαίρουμε που φθάσαμε στο τέλος....

Να είσαι καλά!

stam75 10-07-18 19:08

Εγώ από μεριάς μου είμαι υπέρ καλυμμένος/ικανοποιημένος με το τελικό αποτέλεσμα. Να είστε καλά κι εσείς!

Spirosgr 10-07-18 22:23

Αμ δεν φτάσαμε στο τέλος...!
Φίλε Σταμάτη, (και για όσους μας διαβάζουν)
μπορεί να είσαι καλυμμένος ως προς το ζητούμενό σου,
όμως οφείλω να πω, ότι η μέθοδος Like... στους κώδικες του Γιώργου έχει παγίδες...

Εξηγούμαι
Μια περιοχή εκτύπωσης (Print Area)
όταν την δημιουργεί η εφαρμογή Excel πάντα είναι ονομασμένη ως: Print_Area
με κάτω παύλα ανάμεσα στις λέξεις.
Κάθε χρήστης, θα πρέπει να το γνωρίζει αυτό
και να ονομάζει τυχόν δικές του περιοχές,
με άλλο είδος ονομασίας πχ PrintArea, myPrint_Area κλπ

Αν λοιπόν εγώ επιλέξω την δεύτερη μορφή (myPrint_Area)
για να ονομάσω μια περιοχή που θα εκτυπώσω μέσω κώδικα,
ή γιατί έτσι θέλω(!) (χρήστης είμαι και οι χρήστες κάνουν άπειρα σφάλματα)
τότε δεν θα εμφανιστεί το όνομα στην φόρμα (κακώς),
παρ' όλο που δεν είναι γνήσια Print_Area,
αλλά κατασκευασμένη από τον χρήστη, για δικούς του λόγους...

Άρα λοιπόν η μέθοδος Like, δεν ευσταθεί και κάνει τον κώδικα να έχει «τρύπα»

Καλό είναι, να αντικαταστήσετε το Like,
με μια ισότητα, τροποποιόντας τις απαιτούμενες γραμμές στους κώδικες...

Spirosgr 10-07-18 22:49

1 Συνημμένο(α)
Οφείλω και μια απάντηση,
σχετική με το απόσπασμα από τον name manager με τις ονομασίες σου.

Παρ' όλο που δεν εμφανίζονται οι ονομασίες Print_Area,
και αφού δεν έχεις ονόματα που αφορούν τύπους,
τότε ο αρχικός κώδικας (post #8) «χτύπησε» γιατί πιθανόν
υπάρχει / ουν περιοχές εκτύπωσης σε ένα ή περισσότερα φύλλα
που δεν είναι ενιαίες...

Πχ
Μια Print_Area σε φύλλο Χ από a1 έως e50 λειτουργεί σωστά.
Μια Print_Area σε φύλλο Χ από a1 έως e30 και από a31 έως e50
μπορεί φαινομενικά να είναι ίδια σαν περιοχή κάλυψης αλλά αυτό
δημιουργεί σφάλμα, αφού λαμβάνεται ως multi περιοχή...

Πολλές φορές οι χρήστες, δημιουργούν μια περιοχή εκτύπωσης
και με την πρόοδο του έργου, προσθέτουν «κάτι» ακόμα (*βλέπε εικόνα)

Αυτό δεν επηρεάζει τις εκτυπώσεις από την tab ΑΡΧΕΙΟ, αλλά «χτυπάει» κάποιους κώδικες.

stam75 11-07-18 07:35

Καλημέρα, Σπύρο όσον αφορά τις ονομασίες στο συγκεκριμένο βιβλίο σίγουρα δεν ονόμασα κι ούτε θα ονομάσω με τις δύο λέξεις αλλά ούτε καν με μια από τις δύο. Τώρα για τις περιοχές, στο τελευταίο σου ποστ, πάλι θα σου δώσω αρνητική Απάντηση, δεν έχω επιλέξει 2 η περισσότερες φορές έστω και ένα κελί, είτε για να δώσω ονομασία είτε για να ορίσω print_area.

Spirosgr 11-07-18 08:12

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

Με όλα όσα είπαμε, μπορεί κάποιο μέλος, να θελήσει να κάνει ένα AddIn
και να «αντικαταστήσει» τον default name manager, προσθέτοντας το navigation
ή και άλλες λειτουργίες
και επομένως να θέλει και τα ονόματα των τύπων να εμφανίζονται
αλλά να μην έχουν link, αλλά και οι περιοχές εκτύπωσης, οι πίνακες, τα σχήματα* κλπ

Ας δούμε και κάτι άλλο...(*)
Αν σε ένα φύλλο, έχω μια εικόνα ή ένα σχήμα (Rectangle 1)
που εμπλέκεται σε κάποιον κώδικα και το έχω ονομάσει
(*βλέπε εικόνα) τότε δεν θα μου εμφανίσει η φόρμα το όνομα, ενω το θέλω...
Γι΄αυτό πρέπει νομίζω, αν κανείς θέλει να κάνει κάτι 100% σωστό, σε βάθος
θα πρέπει να στηριχθεί στον αρχικό μου κώδικα και να τον βελτιώσει
ανάλογα με τις ανάγκες του, προσθέτοντας ίσως ιδέες και από τον κώδικα του Γιώργου
αλλά με την αλλαγή του Like...όπως εξήγησα.

Με όλα αυτά που αναφέρω, θέλω μόνο να εξηγήσω, ότι κάποια
ερωτήματα, δεν είναι τόσο απλά και επιφανειακά όσο φαίνονται...

Όσο για το αρχικό σφάλμα, (που σε γενικές γραμμές ξεπεράστηκε),
προσπαθώ να δώσω ερμηνείες, στο τι μπορεί να φταίει και «χτύπησε» ο κώδικας...


Η ώρα είναι 15:49.

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


Search Engine Optimization by vBSEO 3.3.2