| Excel - Ερωτήσεις / Απαντήσεις Ότι έχει σχέση με συναρτήσεις, μορφοποίηση, εκτυπώσεις γραφήματα κτλ. |
![]() |
| | Εργαλεία Θεμάτων | Τρόποι εμφάνισης |
|
#1
| |||
| |||
|
Καλησπερα παιδια, πρωτη φορα γραφω στο FORUM, το οποιο ειναι πολυ καλο, ωαρια δουλεια. Τεσπα θα ηθελα να κάνω μια ερώτηση. Εχω ενα excel και θέλω γράφωντας κατι στο Φυλλο1 στο κελί Α1 να περναει στο Φυλλο2 στην στηλη Α π.χ γραφω στο Φυλλο1 στο κελι Α1 123 θέλω να πηγαινει στο φυλλο2 στην στηλη Α και αν το κελι Α1 ειναι κενο να το γραφει εκει αλλιως να πηγαινει στο Α2 και ουτω καθ εξης.. Ευχαριστω Τελευταία επεξεργασία από το χρήστη gr8styl : 08-03-11 στις 23:50. Αιτία: Change prefix |
|
#2
|
|
Φίλε Αναστάση, για όλα υπάρχει μια αρχή, Καλώς όρισες λοιπόν στο φόρουμ μας. Για το ερώτημά σου τώρα, αν έχω καταλάβει καλά αυτό που ζητάς είναι: κάθε φορά που αλλάζουν τα περιεχόμενα του Φύλλο1!a1 να αντιγράφονται τα περιεχόμενα του στο πρώτο κενό κελί της στήλης Φύλλο2!a:a Χωρίς να ξέρω ποιές είναι οι γνώσεις σου σε σχέση με την VBA και τις μακροεντολές σου λέω ότι: Για να γίνεται αυτό αυτόματα θα πρέπει να χρησιμοποιήσεις το συμβάν Worksheet_Change. Από την άλλη, η αντιγραφή μπορεί να γίνει μόνο χρησιμοποιώντας κώδικα VBA Ο παρακάτω κώδικας λοιπόν στο συμβάν Worksheet_change του Φύλλο1 θα σου κάνει το ζητούμενο Πες μας αν τα κατάφερες. Θανάσης Κώδικας: Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
With Sheets("Φύλλο2")
.Cells(.Range("A1").End(xlDown).Row + 1, 1) = Target.Value
End With
Target.Select
End If
End Sub
|
|
#3
| |||
| |||
|
Φιλε θαναση οσον αναφορα το πρωτο ερωτημα δεν εχω μεγαλη σχεση με το VBA παρ ολα αυτα ασχολουμαι με VB και μπορω να καταλααβω καποια πραγματα μενει να μαθω πως να κανω αναφορεσσε κελια που ειναι πρωτογνωρα για μενα.. καθε αρχη και δυσκολη. Τεσπα εβαλα τον κωδικα που μου εδωσες αλλα μου χτυπαει error run time error 1004 application defined.... στο debug μου δινει το πρόβλημα στην γραμμη .Cells(.Range("A1").End(xlDown).Row + 1, 1) = Target.Value αν κανω κατι λαθος ενημερωστε με... ty |
|
#4
| |||
| |||
|
το δοκιμασα με αλλο τροπο και δουλεψε If Target.Address = "$A$1" Then .Cells(.Range("A65536").End(xlUp).Row + 1, 1) = Target.Value ελπιζω μην ειναι λαθός τροπος :) |
|
#5
| ||||
| ||||
|
Αναστάση καλησπέρα και καλωσόρισες στο φόρουμ! Ο κώδικας σου δεν έχει κάποιο συντακτικό λάθος. Σου γράφω τα παρακάτω σε θεωρητικό επίπεδο όπως το βλέπει ο προγραμματιστής : .....Cells(.Range("A65536") δεν θα λειτουργήσει σε 2007 αν τα κελιά έχουν ήδη φτάσει μέχρι τη γραμμή 65536. Για να μην αντιμετωπίσεις πρόβλημα σε περίπτωση που το φύλλο "Φύλλο2" μετονομαστεί ή το κελί A1 χρειαστεί να μετακινηθεί, δημιούργησε το όνομα "MyCell" με αναφορά το κελί A1 (στο φύλλο "Φύλλο1") και στο συμβάν Worksheet_Change() δοκίμασε το παρακάτω: Κώδικας: Private Sub Worksheet_Change(ByVal Target As Range)
Dim DestinationCell As Range
If Not Intersect(Target, Range("MyCell")) Is Nothing Then
With Sheet2 ' Sheet2=το εσωτερικό όνομα του φύλλου (CodeName)
'Eίναι πιο ασφαλές να χρησιμοποιούμε το εσωτερικό όνομα του φύλλου (CodeName)
'Επίσης καλό είναι να μήν υπάρχουν εσωτερικά ονόματα που περιέχουν ελληνικούς χαραχτήρες (πχ.Φύλλο1).
'Σ αυτή την περίπτωση μπορούμε να αλλάξουμε τα εσωτερικά ονόματα των φύλλων σε άλλα με λατινικούς χατακτήρες
If IsEmpty(.Range("A1")) Then .Range("A1").Value = Target.Value: Exit Sub
'Περνάει την τιμή στο A1 αν αυτό είναι κενό
Set DestinationCell = .Range("A" & Rows.Count).End(xlUp).Offset(1)
If IsEmpty(DestinationCell) Then
DestinationCell.Value = Target.Value
Else 'αν το τελευταίο κελί της στήλης περιέχει ήδη τιμή
MsgBox "Destination Sheet is Full", vbInformation
End If
End With
Target.Select
End If
End Sub
Φιλικά Τάσος
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών |
|
#6
|
|
Καλησπέρα σας, όπως το κατάλαβα εγώ το προβλήμα θεώρησα ότι το ζητούμενο είναι να γράψουμε στο πρώτο κενό κελί της στήλης Α του Φύλλο2 γι'αυτό και χρησιμοποίησα xldown και όχι xlup (Με το xlup αν το κελί Α10 είναι κενό, τότε δεν θα συμπληρωθεί ποτέ αν το Α11 δεν είναι κενό) Το λάθος μου είναι ότι θεώρησα πως τα Α1 και Α2 ΔΕΝ είναι κενά. ![]() Αν λοιπόν έχω καταλάβει σωστά το ζητούμενο, θα πρέπει να προστεθεί ένας έλεγχος για τα Α1 και Α2 και να χρησιμοποιηθεί xlup Δηλαδή μέσα στην With θα έχω: Κώδικας: ...
If IsEmpty(.Range("A1")) Then
.Range("A1").Value = Target.Value
ElseIf IsEmpty(.Range("A2")) Then
.Range("A2").Value = Target.Value
Else
.Cells(.Range("A1").End(xlDown).Row + 1, 1) = Target.Value
End If
...
Θα συμφωνήσω επίσης για το κωδικό όνομα των φύλλων σε ελληνικά, με τα οποία η VBA όχι μόνο δεν συνεργάζεται πλήρως, αλλά δημιουργεί και προβλήματα (ένα xls φτιαγμένο σε ελληνικό Excel αν περιέχει κώδικα VBA και κατόπιν το επεξεργαστούμε με Αγγλικό Excel δεν μπορούμε να το ξαναχρησιμοποιήσουμε σε περιβάλλον με ελληνικό Excel τουλάχιστον μέχρι την έκδοση 2003) Αυτά τα λίγα Θανάσης. |
|
#7
| |||
| |||
| Post 1: παιδια ευχαριστω με βοηθησατε πολυ με τις απαντησεις σας.. τωρα επεξεργαζομαι ολα αυτα που ειπατε και προσθετω και αλλα... αν χρειαστω τπτ θα επανερθω! ty! :) Post 2: .... και επανερχομαι λοιπον αρχισα λιγο το vba μου και εκανα μια φορμα που θα περναει απο εκει τα δεδομενα (μου φενεται καλυτερο).. τωρα το προβλημα μου ειναι οτι εχω 3 textboxes οπου θα γράφω μέσα τιμές πως γινεται. Στο ΦΥΛΛΟ 1 στην στηλη Α θα εχω καποια ονοματα π.χ Α1: Παπαδοπουλος Α2: Γεωργιου παταώ πανω σε ενα ονομα και μου εμφανιζεται η φορμα που εχω δημιουργησει γραφω στα κελια τα δεδομενα μου. Ταυτοχρονα στο Φυλλο 2 στην γραμμη 1 εχω Α1: Παπαδοπουλος D1 : Γεωργιου (οπου το καθενα απο αυτα τα κελια ειναι συγχωνευση τριων κελιων) θελω τωρα π.χ οταν πατησω πανω στον παπαδοπουλο και γραψω τα δεδομενα στην φορμα να ελεγχει (μαλλον με HLOOKUP) που εχει υπαρχει αυτο το ονομα στο φυλλο 2 και οταν το βρει να συμπληρωνει (για τον παπαδοπουλο) στα κελια Α2: textbox1.text B2:textbox2.text C2:textbox3.text στην ουσια θελω με το που βρει σε ποιο ονομα βρισκεται το ονομα να συμπληρωνει στην δευτερη γραμμη για 3 κελια τα δεδομενα.. Ελπιζω να καταλαβεται τι εννοω αλλιως να δωσω αλλο παραδειγμα Ευχαριστω! Τελευταία επεξεργασία από το χρήστη anastasiosz : 06-03-11 στις 00:46. |
|
#8
| |||
| |||
|
λοιπον βαζω και το excel για να το δειτε καλυτερα το παραδειγμα ελπιζω να σας βοιηθησει περισσοτερο να καταλαβεται τι θελω να κανω.
|
|
#9
| ||||
| ||||
|
Αγαπητέ Αναστάση, δεν είναι η Excel η εφαρμογή που ταιριάζει στην περίπτωση σου ειδικά όταν χρησιμοποιείς UserForm! Αυτό που θέλεις να κάνεις γίνεται σε Access πολύ πιο εύκολα και προϋποθέτει μόνο στοιχειώδεις γνώσεις προγραμματισμού. Αντίθετα, αυτό που θέλεις να κάνεις στην Excel, ναι μεν γίνεται αλλά πρέπει να είσαι γνώστης της Excel τόσο στην επιφάνεια εργασίας της όσο και στον προγραμματισμό της σε επίπεδο VBA. Δεν νομίζω ότι η Userform Αποτελεί την καλύτερη λύση. Η επιλογή όμως είναι καθαρά δική σου και είναι φυσικά σεβαστή. Ή αλήθεια είναι ότι δεν κατανόησα τον τρόπο που θέλεις να στήσεις τα δεδομένα σου αφού στο αρχείο σου βρήκα 4 - 5 κελιά με κάποιες τιμές που δεν υποδηλώνουν το ζητούμενο σου (για μένα τουλάχιστον). Βάλε μερικές τιμές στα κελιά σου καθώς και το αποτέλεσμα που επιθυμείς για να μπορέσουμε να σε βοηθήσουμε. Επίσης με τη φόρμα δεν θα μπορείς να έχεις τον πλήρη έλεγχο των δεδομένων σου. Λάβε υπόψη σου ότι τα πλαίσια κειμένου επιστρέφουν κείμενο που σημαίνει ότι θα πρέπει να μετατρέπονται οι τυχόν αριθμητικές τιμές τους σε αριθμό για να μπορούν να αποθηκευτούν με σωστά στα κελιά και να μπορούν να επεξεργαστούν αν χρειαστεί. Εκ των προτέρων σου προτείνω να χρησιμοποιήσεις τα στοιχεία της Excel (όχι τα ActiveX) κατευθείαν πάνω στο φύλλο. Περιμένουμε νέα σου. Φιλικά Τάσος
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών |
|
#10
| |||
| |||
|
φιλε και συνονοματε Τασο εχεις δικίο οτι θα ηταν καλυτερα και ποιο ευκολα να δουλεψω σε access αλλα το θέμα ειναι οτι δεν μπορω να εχω προσβαση στην access και εχω μονο σε excel. Ελπιζω να το κανω οπως θελω. Αυτο που θελω να πω είναι οτι σητν ουσια θελω την φορμα για ενα ευκολο τροπο εισαγωγης δεδομενων και δεν με νοιαζει τοσο αν μπορω να επεξεργαστω αριθμητικα τα δεδομενα μου (μονο καποια sum θα χρειαστω). Δινω το excel ξανα με καποιες σημειωσεις και στα φυλλα και πανω στην φορμα που δινουν ακριβως αυτο που θελω. Περιμενω συντομα νεα απο οποιον μπορει να βοηθησει και τον ευχαριστω εκ των προτερων..
|
![]() |
« Προηγούμενο Θέμα
|
Επόμενο Θέμα »
| |
| ||||
| Θέμα | Δημιουργός | Forum | Απαντήσεις | Τελευταίο Μήνυμα |
| [Συναρτήσεις] Ταυτόχρονη εισαγωγή δεδομένων σε 2 φύλλα | mantarinia | Excel - Ερωτήσεις / Απαντήσεις | 2 | 28-04-15 18:40 |
| [VBA] Μεταφορά δεδομένων από πολλά φύλλα | xristos | Excel - Ερωτήσεις / Απαντήσεις | 2 | 12-04-15 21:58 |
| [Excel07] Αυτόματη μεταφορά στοιχείων από διαφορετικά φύλλα Excel | ggatzos | Excel - Ερωτήσεις / Απαντήσεις | 0 | 28-06-13 21:07 |
| Σύγκριση πεδίων από ξεχωριστά φύλλα δεδομένων. | ajulax | Excel - Ερωτήσεις / Απαντήσεις | 8 | 08-04-11 20:39 |
Η ώρα είναι 09:46.



Αλλαγή σε γραμμικό τρόπο

