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/2917-emfanisi-periexomenoy-energoi-kelioi-se-allo-fillo.html)

ggatzos 12-01-14 00:37

Εμφάνιση περιεχόμενου ενεργού κελιού σε άλλο φύλλο
 
1 Συνημμένο(α)
Καλημέρα ,χρονια πολλά και καλή χρονια σε όλους. Θα ήθελα την βοήθεια σας στο παρακατω : Αν θα μπορούσε να γινει εμφανιση περιεχομενου ενος οπoιουδηποτε κελιου (Α1 ή Α2 ή Α3 ή Α4 .......) της στιλης Α ,του φυλλου 1 , απο την στιγμη που θα κανω κλικ πάνω του , δηλαδη απο την στιγμη που θα γινει ενεργο αυτο το κελι, στο κελι Α1 του φίλλου 2 του ιδιου βιβλιου.
Δηλαδή οποιο κελί και να επιλέξω από την στήλη A του φύλλου 1 να εμφανίζεται το περιεχόμενο του, στο κελί A1 του φίλου 2
Ευχαριστω .

Tasos 12-01-14 12:49

Καλημέρα Γιώργο!
Πέρασε στο κελί Α2 του φύλλου 'Φύλλο2' τον τύπο:
Κώδικας:

=IF(CELL("col")=COLUMN();IF(CELL("row")=ROW();Φύλλο1!A2;"");"")
Για να λειτουργήσει όμως αυτός ο τύπος αποτελεσματικά θα πρέπει προκληθεί υπολογισμός τουλάχιστον στο φύλλο όπου περιέχεται κάθε φορά που επιλέγεται ένα κελί στο φύλλο 'Φύλλο2'.

Ο επανυπολογισμός δεν προκαλείται αυτόματα όταν απλά ο χρήστης επιλέξει ένα κελί.

Για να επιτύχεις τον υπολογισμό επιλέγοντας ένα κελί μπορείς να κάνεις τα εξής:

Να πατάς το πλήκτρο F9 κάθε φορά που επιλέγεις ένα κελί από τη στήλη Α (Ίσως να είναι πρακτικό - Ίσως όχι).

Να χρησιμοποιήσεις τη συνάρτηση =SELECTION() σε ένα ορισμένο όνομα (ξεπερασμένη μέθοδος...)

Να μετατρέψεις το βιβλίο σου σε *.xlsm και να περάσεις τον παρακάτω κώδικα VBA στη λειτουργική μονάδα του φύλλου 'Φύλλο2' :

Κώδικας:

Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.CountLarge > 1 Then Exit Sub
    Me.Range("A1").Dirty
End Sub

Για να μεταβείς στη λειτουργική μονάδα του φύλλου 'Φύλλο2', κάνε δεξί κλικ στην καρτέλα του
και επίλεξε την εντολή: Προβολή κώδικα.

Καλή συνέχεια!

Τάσος

Thanosp 12-01-14 13:41

1 Συνημμένο(α)
Καλησπέρα Γιώργο
Με VBa, αρχείο .xlsm με μεταφορά τιμών από την στήλη Α, δες το συνημμένο.
Θανάσης

Spirosgr 12-01-14 13:55

Καλησπέρα
Μια ερώτηση πολλές λύσεις...
Μια κι από εμένα με έλεγχους επιλογής και επιλογή αν θα τρέχει ή όχι ο κώδικας
Αν θέλετε διαγράψτε τις πράσινες γραμμές με τις επεξηγήσεις

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Όπου Sheet1,Sheet2 οι κωδικές ονομασίες των φύλλων
'Όπου Range("A2:A25") η περιοχή που θέλουμε να εκτελείται ο κώδικας
'------------------------------------------------------------------
'Επειδή θέλουμε να εκτελείται με απλή επιλογή
'και δεν θα μπορούμε να επιλέξουμε κάποιο κελί της περιοχής A2:A25
'για να το επεξεργαστούμε χωρίς να τρέξει ο κώδικας
'τότε βάζουμε στο κελί b1 μια λίστα με true, false και επιλέγουμε ανάλογα
'Αν το κελί b1 δεν είναι true τότε δεν κάνει τίποτε

If Range("b1").Value = False Then
Exit Sub
'άλλως
Else
'ΕΛΕΓΧΟΙ
'δεν εκτελείται ο κώδικας αν από λάθος:
'1. δεν επιλέξουμε κελί της περιοχής A2:A25 του Sheet1
'2. επιλέξουμε περισσότερα του ενός κελιά στην περιοχή A2:A25 του Sheet1
'3. επιλέξουμε κελί της περιοχής A2:A25 του Sheet1 αλλά είναι κενό

If Intersect(Target, Sheet1.Range("A2:A25")) Is Nothing Then Exit Sub
If Target.CountLarge > 1 Then Exit Sub
If Target.Value = vbNullString Then Exit Sub
'αν όλα οκ τότε αντιγράφει την τιμή του κελιού επιλογής στο A1 του Sheet2
Sheet2.Range("A1").Value = Target.Value
End If
'τέλος ενεργοποιεί το φύλλο Sheet2 για να δούμε το αποτέλεσμα
'Αυτήν την γραμμή μπορούμε να την απενεργοποιήσουμε
'αν θέλουμε να παραμείνει στην οθόνη το Sheet1

Sheet2.Activate
End Sub

Tasos 12-01-14 15:13

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

Κώδικας στη λειτουργική μονάδα του φύλλου 'Φύλλο1' :

Κώδικας:

Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.CountLarge > 1 Then Exit Sub
    If Target.Column = 1 Then
        If Target.Row > 1 Then
            Range("A1") = Target.Value
        End If
    End If
End Sub

Τύπος στο κελί A1 του φύλλου 'Φύλλο2' : =Φύλλο1!A1

Η διαφορά είναι ότι δεν χάνεται το ιστορικό Αναίρεσης (Undo) στο φύλλο 'Φύλλο2'

Συγγνώμη αν σας κούρασα.

Τάσος

ggatzos 12-01-14 16:50

Καλησπέρα , σας ευχάριστω παρα πολύ όλους για τις άμεσες απαντήσεις.
Θα ήθελα άλλη μια βοήθεια ,κάποιος που εχει την υπομονη να διακρίνει από της απαντήσεις την πιο σωστή για μένα μιας και είμαι λίγο άσχετος στο excel και ίδιος σε Vba, αλλα και να με βοηθησει στην διαδικασία εφαρμογης (δηλαδη που θα βαλω τι και πως)αυτων των προτασεων σε άλλο βιβλίο εργασίας όπου υπάρχουν πραγματικά στοιχεια και για ευνόητους λόγους δεν θα ήθελα να τα εκθέσω στο foroom.
Σας ευχάριστω παρα πολύ ολους....

ggatzos 16-01-14 09:59

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

Thanosp 16-01-14 10:38

Καλημέρα
Υπάρχουν σε δύο θέσεις, η 1η είναι στο Φύλλο1 πατώντας με το δεξί πλήκτρο επάνω κάνεις προβολή Κώδικα, και η 2η Alt+f11 μπαίνεις σε περιβάλλον Vba, όπου βλέπεις το Module1 το οποίο ανοίγοντας το βλε΄πεις τον κώδικα, σε περίπτωση που δεν φαίνεται το Module1, πατάς το εικονίδιο project Explorer, σε αυτό το περιβάλλον μπορείς να κάνεις εισαγωγή απο το Μενού Insert νέο Module.


Η ώρα είναι 14:34.

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


Search Engine Optimization by vBSEO 3.3.2