Καλημέρα
Γιώργο (gfevran)...θα στα πω για μια φορά, όσο πιο απλά μπορώ...
εφ' όσον με τα θέματα, αναζήτησης και μεταφοράς, έχουμε ασχοληθεί πάρα πολλές φορές...
Ξέχνα το επάνω μέρος, του φύλλου και δες
μόνο τον
πίνακα...
Έχει μια στήλη, «Ονοματεπώνυμο», ok?
Την
επιλέγεις και την ονομάζεις, FullName.
Η ονομασία γίνεται, όπως θα ονόμαζες, ένα κελί, μια περιοχή κλπ
στην διαχείριση ονομάτων (Namemanager),
ή στο «κουτάκι»
αριστερά από την μπάρα των τύπων...στην κορδέλα.
Στο
φύλλο, βάλε τον κώδικα (συμβάν διπλό κλικ)
Κώδικας:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim NRow As Integer
Application.ScreenUpdating = False
NRow = Sheet3.Cells(Rows.Count, 3).End(xlUp).Row + 1
If Intersect(Target, Sheet1.Range("FullName")) Is Nothing Then
Exit Sub
Else
If Target.Value <> vbNullString Then
Sheet3.Cells(NRow, 3).Value = Sheet1.Cells(Target.Row, Target.Column).Value
Sheet3.Cells(NRow, 6).Value = Sheet1.Cells(Target.Row, Target.Column + 3).Value
Sheet3.Cells(NRow, 7).Value = Sheet1.Cells(Target.Row, Target.Column + 4).Value
Sheet1.Activate
Sheet1.Range("Rest").Activate
Application.CutCopyMode = False
End If
End If
Cancel = True
End Sub
Τον τροποποίησα και τον έγραψα, πολύ
αναλυτικά, για να τον καταλάβεις...
Εδώ λοιπόν, βάζουμε την περιοχή που ονομάσαμε...FullName, ok?
If Intersect(Target, Sheet1.Range("
FullName")) Is Nothing Then
Μετά από αυτήν την γραμμή
If Target.Value <> vbNullString Then (8η από πάνω)
Βάζουμε, κάποιες
ισότητες...
Τι είναι αυτές: Αριστερό μέρος (πριν το =)
Εκεί που
θα πάει η μεταφορά (
προορισμός) ...
Sheet3.Cells(NRow, 3).Value
Φύλλο.Κελί(τελευταία γραμμή, 3η κολώνα).τιμή
όπου NRow η τελευταία γραμμή.
Έτσι ορίζεις
ΠΟΥ θα πάνε τα «πράγματα»
Δεξί μέρος (μετά το =)
Τι θα πάρει για να μεταφέρει και
από που (αφετηρία) ...
Sheet1.Cells(Target.Row, Target.Column).Value
Φύλλο.Κελί(η γραμμή του target, η στήλη του target,).τιμή
target είναι ο
στόχος, το
κελί που κάνουμε το διπλό κλικ...
Τα +3, +4 κλπ δηλώνουν, πόσες στήλες μετά την στήλη του target.
Με αυτόν τον τρόπο, γράψε όσες γραμμές κώδικα θέλεις,
για να μεταφέρεις, όποιες τιμές σε βολεύουν...
Σημαντικό: Πάντα, όταν έχουμε διπλό κλικ,
δεν ξεχνάμε να βάλουμε
Cancel = True
Αν δεν το βάλουμε, ο κέρσορας
μένει μέσα στο κελί και όλα γίνονται «μαντάρα»
ειδικά αν το κελί έχει
τύπο...
Προαιρετικά:
Έχουμε ονομάσει
Sheet1.Range("
Rest").Activate
ένα κελί Rest, για να πάει να «αράξει» το ενεργό κελί,
αφού τελειώσει ο κώδικας την δουλειά του...
Αυτό μπορείς να το αλλάξεις ή να το παραλήψεις...
Ελπίζω τώρα να τα καταφέρεις...
Δεν ξέρω, αν θα μπορέσω να είμαι στο μέλλον, τόσο αναλυτικός...