st2 Δημοσιεύτηκε Νοέμβριος 7 , 2011 Δημοσιεύτηκε Νοέμβριος 7 , 2011 Σας ευχαριστώ πάρα πολύ παιδιά!! Τα ρύθμισα όλα μια χαρα Ευχαριστω...
apostolos55 Δημοσιεύτηκε Νοέμβριος 22 , 2011 Δημοσιεύτηκε Νοέμβριος 22 , 2011 Βελτίωση κώδικα προβολής Σχολίων όταν υπάρχουν παγωμένα κελιά (show comments ignoring frozen cells) ο κώδικας είναι: Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) Application.DisplayCommentIndicator = xlCommentIndicatorOnly If Not (Target.Comment Is Nothing) Then doThings Target End Sub Χαίρετε συνάδελφοι επανέρχομαι με μια βελτίωση προκειμένου να δουλεύει και με merged-cells. Απλά αντικαταστήστε τη ρουτίνα που έχω σε παράθεση με τη παρακάτω: Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) Application.DisplayCommentIndicator = xlCommentIndicatorOnly ' Fix to work on merged cells!!! Dim StrPos As Integer If Target.Cells.Count > 1 Then StrPos = InStr(Target.AddressLocal, ":") - 1 Set a = Range(Left(Target.AddressLocal, StrPos)) Else Set a = Target End If If Not (a.Comment Is Nothing) Then doThings Target End Sub ελπίζω να βοηθηθούν κάποιοι. 2
apostolos55 Δημοσιεύτηκε Νοέμβριος 29 , 2011 Δημοσιεύτηκε Νοέμβριος 29 , 2011 (edited) Καλημέρα, ξεκίνησα από μια απλή αλλαγή για να δουλεύει με πολύπλοκες επιλογές κελιών (πχ γραμμών ή στηλών) που πριν κόλλαγε, και τελικά με λίγες δοκιμές έφτασα στο απίστευτο!!! Υπάρχουν πλέον 2 ρουτίνες, η SimpleVersion και η ExtremeVersion. H απλή κάνει τα παραπάνω με την διόρθωση ώστε να μην κολλάει πλέον. Άλλαξα και την doThings ώστε να μην περιορίζεται στο activeCell αλλά να δουλεύει με το Target. Σημειώνω μόνο ότι οι ρουτίνες SimpleVersion και ExtremeVersion τρέχουν αυτόματα μόνο αν αφαιρεθεί το header από την 1η τους γραμμή (όχι τα σχόλια) και μετονομαστούν σε Workbook_SheetSelectionChange. Αρχικά θα τρέχει η Simple αλλά με την εν-λόγω μετονομασία τρέχεί όποια θέλετε. Ενδέχεται να κολλήσει αν ξεχαστείτε και έχετε 2 Workbook_SheetSelectionChange(...) ταυτόχρονα. Δοκιμάστε την Extreme με επιλογή που έχει πολλά κελιά με σχόλια.... και πείτε μου τα σχόλιά σας... Ιδού ο νέος κώδικας: ' Simple version //HEADER:SimpleVERSION_ Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) Application.DisplayCommentIndicator = xlCommentIndicatorOnly ' Will only work on 1st Cell of any selection-merged ect!!! If Target.Cells.Count > 1 Then Set a = Range(Target.Cells(1, 1).AddressLocal) Else Set a = Target End If If Not (a.Comment Is Nothing) Then doThings Target End Sub ' Extreme Version //HEADER:ExtremeVERSION_ Private Sub ExtremeVERSION_Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) Application.DisplayCommentIndicator = xlCommentIndicatorOnly Dim CountMyComments As Integer ' Fix to work on 1st item or ALL items of any selection of cells!!! If Target.Cells.Count >= 1 Then For Each b In Target If Not (b.Comment) Is Nothing Then doThings Range(b.AddressLocal), CountMyComments CountMyComments = CountMyComments + 1 'Exit For ' Remove Comment at begin for processing of 1st Comment only End If Next End If End Sub ' Uppon click move Comment to center of window (almost center) ' ' Edited to Clarify code, Transfer to Workbook (original worked in sheets only) ' so that same code performs for all sheets... ' ' Send SINGLE-CELL Ranges only for the following to work ' ' Original from www.contextures.com/xlcomments03.html ' Edited by Apostolos Goulandris Sub doThings(ByVal Target As Range, Optional ByVal CmntCount As Integer) Dim cTop As Long, cWidth As Long, HeightAdd As Long, WidthAdd As Long If Not (Target.Comment Is Nothing) Then With ActiveWindow.VisibleRange cTop = .Top + .Height / 2 cWidth = .Left + .Width / 2 End With With Target.Comment.Shape If CmntCount > 0 Then HeightAdd = .Height / 4 * (Int((11) * Rnd - 7)) WidthAdd = .Width / 4 * (Int((11) * Rnd - 6)) End If .Top = cTop - .Height / 2 + HeightAdd .Left = cWidth - .Width / 2 + WidthAdd End With Target.Comment.Visible = True End If End Sub Edited Νοέμβριος 29 , 2011 by apostolos55 1
st2 Δημοσιεύτηκε Δεκέμβριος 2 , 2011 Δημοσιεύτηκε Δεκέμβριος 2 , 2011 παιδια να ρωτησω κατι δεν πρεπει να ειναι δυσκολο αλλα δεν το βρηκα εχω 3 φυλλα στο 1 βαζω στοιχεια τα αλλα 2 τραβανε τα δεδομενα απο το πρωτο θελω να κλειδωσω την μορφοποίηση των 2 τελευταιων φυλλων για να μπορω να εχω και μια επισκοπηση της εκτυπωσης εν κατακλειδι θελω να κλειδωσω το zoom in/out και τις αλλαγες στο πλατος στηλης και στο ύψος γραμμης πως το κανω ρε παιδια; (πολυ χρησιμος ο νεος κωδικας apostolos55, το δοκιμασα ελπιζω να χρησιμευσει αμεσα keep on good working)
Samdreamth Δημοσιεύτηκε Δεκέμβριος 3 , 2011 Δημοσιεύτηκε Δεκέμβριος 3 , 2011 θελω να κλειδωσω την μορφοποίηση των 2 τελευταιων φυλλων για να μπορω να εχω και μια επισκοπηση της εκτυπωσης εν κατακλειδι θελω να κλειδωσω το zoom in/out και τις αλλαγες στο πλατος στηλης και στο ύψος γραμμης Κλειδώνεις τα 2 τελευταία φύλλα ολόκληρα και όταν κάνεις την προστασία φύλλου απεπιλέγεις τα: format rows, columns, ίσως και τα insert rows, columns. Όταν κλειδωθεί το φύλλο τότε κανείς δεν θα μπορεί να αλλάξει το πλάτος ή το ύψος των κελλιών. Σου γράφω να κλειδώσεις ολόκληρο το φύλλο για τον εξής απλό λόγό: αν έχω κλειδωμένα πχ τα κελλιά A1:B2, και έχω αποεπιλέξει τα format rows, columns, και τα insert rows, columns κατά το κλείδωμα του φύλλου, τότε θα δω ότι δεν μπορώ να αλλάξω το πλάτος ή το ύψος των κελιών (με τον σταυρό που εμφανίζεται στις γραμμές και τις στήλες). Όμως, αν κάποιος πάει στο κελλί Α3 και πχ μεγαλώσει την γραμματοσειρά, τότε θα αλλάξει το ύψος της γραμμής. Δεν ξέρω αν έγινα πλήρως κατανοητός... Όσο για το zoom, μια σκέψη είναι να βάλεις πχ έναν κώδικα (event για την ακρίβεια) στο φύλλο ώστε όταν πχ κάποιος πάει να αλλάξει κάτι αυτό να επιστρέψει στο zoom που θα του έχεις προδιαγράψει: Private Sub Worksheet_Change(ByVal Target As Range) ActiveWindow.Zoom = 80 End Sub Δεν ξέρω αν σε βοήθησα καθόλου.... 2
st2 Δημοσιεύτηκε Δεκέμβριος 5 , 2011 Δημοσιεύτηκε Δεκέμβριος 5 , 2011 τα κλειδωματα τα ανακαλυψα ποια με βολευουν καλυτερα με δοκιμες για το ζοομ δεν ειχα απαντηση αλλα να που υπαρχει λυση (μεσω VBA) θα δοκιμασω και θα επανελθω Samdreamth σε ευχαριστω
thed1969 Δημοσιεύτηκε Ιανουάριος 26 , 2012 Δημοσιεύτηκε Ιανουάριος 26 , 2012 Καλησπέρα σας, Έχω ένα πίνακα με 3 στήλες και 200 γραμμές. Η 2η στήλη περιέχει όνομα στα Ελληνικά και η 3η στήλη τιμή. 1) Θέλω μέσω list οταν επιλέγεται ένα όνομα από τη 2η στήλη να μου εμφανίζεται στο διπλανό κελί η αντίστοιχη τιμή. 2) Υπάρχει τρόπος τα δεδομένα για τη List να τα παίρνω από άλλο φύλλο? Για να γίνω πιο σαφής έχω 20 φύλλα και πρέπει να χρησιμποιήσω και στα 20 τα ίδια στοιχεία του πίνακα και δε θέλω να τον ενσωματώσω σε κάθε φύλλο καθώς αυτός ο πίνακας θα ενημερώνεται συχνά και θα έιναι δύσκολο να επεμβαίνω σε όλα τα φύλλα. Μπορεί κάποιος να βοηθήσει?
gvarth Δημοσιεύτηκε Ιανουάριος 26 , 2012 Συγγραφέας Δημοσιεύτηκε Ιανουάριος 26 , 2012 (edited) Καλησπέρα και σε σας. Στο 1ο σκέλος του ερωτήματός σας , την απάντηση δίνει η VLOOKUP η οποία μάλιστα μπορεί να συνδυαστεί με περιοχή δεδομένων που ΔΕΝ ανήκει στο ίδιο φύλλο με τα "πρωτογενή" δεδομένα . Ουσιαστικά , η απάντηση στο 2ο σκέλος είναι ΝΑΙ . Μάλιστα , μπορεί να υπάρχει ένα ξεχωριστό φύλλο π.χ. DATA_TAB και εκεί να υπάρχει η λίστα των δεδομένων απ' όπου θα "διαβάζονται" και θα αντλούνται τα στοιχεία που επιθυμείτε. Η λίστα αυτή θα πρέπει να είναι ταξινομημένη κατ' αύξουσα σειρά με βάση την αριστερή στήλη της. Καλό θα είναι να είναι ορισμένη με δυναμικό τρόπο έτσι ώστε όταν προσθέτετε δεδομένα , να υπάρχει αυτόματη ενημέρωση ώστε να μην χρειάζεται να δηλώσετε νέα περιοχή λήψης δεδομένων σε κάθε ενημέρωση των δεδομένων σας. Για δυναμικές περιοχές στο Excel , διαβάστε εδώ ή εδώ κατευθείαν από την επίσημη βοήθεια της Microsoft. Πληροφορίες καθώς και κάποιο παράδειγμα για την VLOOKUP θα βρείτε εδώ. Επίσης και εδώ. Αν θέλετε , "ανεβάστε" σαν συνημμένο κάποιο τμήμα του αρχείου σας μήπως και υπάρξει πιο συγκεκριμένη βοήθεια. Edited Ιανουάριος 26 , 2012 by gvarth Dynamic Ranges
thed1969 Δημοσιεύτηκε Ιανουάριος 26 , 2012 Δημοσιεύτηκε Ιανουάριος 26 , 2012 Ευχαριστώ για την άμεση ανταπόκριση. Όσον αφορά το πρώτο σκέλος με τη βοήθεια σας τα κατάφερα. Για το δεύτερο όμως δεν πως αντλούνται τα δεδομένα από τη στιγμή που η εντολή validation-->list παίζει μόνο με δεδομένα από το ίδιο φύλλο?
gvarth Δημοσιεύτηκε Ιανουάριος 27 , 2012 Συγγραφέας Δημοσιεύτηκε Ιανουάριος 27 , 2012 (edited) Καλημέρα. Δεν παίζει μόνο με δεδομένα από το ίδιο φύλλο . Ουσιαστικά , ΔΕΝ υπάρχει περιορισμός . Δεν είναι όμως προφανές το πως επιτυγχάνεται αυτό. Τα δεδομένα θα είναι σε ξεχωριστό φύλλο εργασίας . Η περιοχή στο φύλλο όπου αντλούνται τα δεδομένα , και ειδικά τα στοιχεία που ανήκουν στην 1η στήλη, έχει ξεχωριστό όνομα (λέγεται DataColumn και φαίνεται στην 1η εικόνα) και σ' αυτό το όνομα αναφερόμαστε στη λίστα επικύρωσης άσχετα αν καλούμε τα στοιχεία της λίστας από το Sheet1 , Sheet2 κ.λ.π. Δείτε τις εικόνες που επισυνάπτω και ειδικά την 2η , παρατηρείστε το σύμβολο του "=" πριν από το όνομα της περιοχής των δεδομένων της 1ης στήλης και πειραματιστείτε με το αρχείο που ανέβασα (αφού το αποσυμπιέσετε). Προς το παρόν , δεν έχει γίνει κλήση της VLOOKUP , αυτό που σας ανέβασα είναι απλά ένα παράδειγμα. Δείτε το και θα επανέλθουμε. Edit : Πρόσθεσα άλλο ένα αρχείο όπου υπάρχει μια απλή δοκιμή με τη χρήση της VLOOKUP . Δείτε τους τύπους που υπάρχουν ώστε να γίνει περισσότερο κατανοητή η διαδικασία. Example-ReadData.zip Example with VLOOKUP.zip Edited Ιανουάριος 27 , 2012 by gvarth Προσθήκη νέου παραδείγματος 1
Recommended Posts
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε προκειμένου να αφήσετε κάποιο σχόλιο
Πρέπει να είστε μέλος για να μπορέσετε να αφήσετε κάποιο σχόλιο
Δημιουργία λογαριασμού
Κάντε μια δωρεάν εγγραφή στην κοινότητά μας. Είναι εύκολο!
Εγγραφή νέου λογαριασμούΣύνδεση
Εάν έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα