Forum

Forum (https://www.ms-office.gr/forum/)
-   Excel - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/)
-   -   [VBA] Αντιγραφη σε αλλο φύλλο προβλημα (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/5200-antigrafi-se-allo-fillo-problima.html)

kolekas 04-04-19 07:54

Αντιγραφη σε αλλο φύλλο προβλημα
 
1 Συνημμένο(α)
Καλήμερα
έχω το έξεις πρόβλημα. όταν κάνει την αντιγραφή από το ιστορικό στην θεραπεία
βγάζει λάθος
τι πρέπει να κάνω για να το κάνει κανονικά?
ευχαριστώ

Spirosgr 04-04-19 09:04

Καλημέρα
Βάλε τον παρακάτω κώδικα, στο κουμπί.
Κώδικας:

Private Sub CommandButton1_Click()
    Dim rngStart    As Range
    Dim rngDest    As Range
    Dim CellDest    As Range
    Set rngStart = ThisWorkbook.Sheets("1 ΙΣΤΟΡΙΚΟ").Range("at3:at18")
    Set rngDest = ThisWorkbook.Sheets("2 ΘΕΡΑΠΕΙΑ").Range("a29:a44")
    Set CellDest = ThisWorkbook.Sheets("2 ΘΕΡΑΠΕΙΑ").Range("a29")

    Application.ScreenUpdating = False

    rngDest.ClearContents
    rngStart.Copy
    CellDest.PasteSpecial Paste:=xlPasteValues

    Application.CutCopyMode = False
End Sub

Η διόρθωση, έγινε με βάση αυτά που βλέπω (περιοχές, φύλλα, copy-paste αντί ένα loop κλπ)
Θεωρώ, ότι πρέπει να μεταφέρει τιμές και όχι συνάρτηση.

kolekas 04-04-19 11:06

Ευχαριστώ Σπύρο για άλλη μια φορά
μια ακόμα ερώτηση
αν θέλω να πάνε στα κελιά από το A29 ΕΩΣ το I58 (Α29:Ι58)

Spirosgr 04-04-19 11:43

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

Στα σημεία:
Set rngStart = ThisWorkbook.Sheets("1 ΙΣΤΟΡΙΚΟ").Range("Περιοχή αντιγραφής")

Set rngDest = ThisWorkbook.Sheets("2 ΘΕΡΑΠΕΙΑ").Range("Περιοχή προορισμού")

Set CellDest = ThisWorkbook.Sheets("2 ΘΕΡΑΠΕΙΑ").Range("Πρώτο πάνω αριστερά κελί περιοχής προορισμού")

μπορεί να αλλάξει κανείς τις περιοχές, με ό,τι θέλει, αρκεί οι rngStart & rngDest, να είναι ίδιες
σε στήλες και γραμμές (με αυτή την μορφή του κώδικα τουλάχιστον).

kolekas 04-04-19 14:01

1 Συνημμένο(α)
αυτό θέλω φίλε Σπύρο

Spirosgr 04-04-19 15:11

Βασίλη, αυτό είναι «λίγο» διαφορετικό από το αρχικό ζητούμενο.

Να το επιβεβαιώσουμε, περιφραστικά, για να δούμε τι θα κάνει;

Παίρνει από το «Ιστορικό» από at2 και κάτω, όσο υπάρχουν τιμές
και πάει και τις βάζει στο «Θεραπεία» από a29 και κάτω μέχρι a58
και συνεχίζει στην b στήλη, αν έχει δεδομένα και μετά στην c,d...i58
Σωστά;

Spirosgr 04-04-19 15:36

1 Συνημμένο(α)
Δες πρώτα το παρακάτω βιβλίο, με τύπους...και μια πολύ απλή λύση.

Spirosgr 04-04-19 18:23

1 Συνημμένο(α)
Μια πιο σοβαρή λύση με τύπο και μια με κώδικα.

Συνδέστε τον κώδικα, σε όποιο κουμπί θέλετε, ή τρέξτε τον απλά,
αφού συμπληρώσετε και προσαρμόσετε τα στοιχεία με πράσινο.

kolekas 04-04-19 18:41

φίλε Σπύρο ο δεύτερο παράδειγμα μου κάνει και θέλω με κωδικά γιατί στα κελιά για να αλλάζω πράγματα στην θεραπεία άλλα κάτι δεν κάνω καλά στα πρώτα που πρέπει να βάλω τα νούμερα

Option Explicit
Const cellStart As Long = 46 'Φύλλο εκκίνησης κελιά από - έως
Const cellEnd As Long = 47
Const colDest As Long = 1 'Στήλη προορισμού (1 = a)
Const colPacks As Long = 9 'Φύλλο προορισμού «ντάνες» πχ 30
Const rowPacks As Long = 29 'Φύλλο προορισμού (που ξεκινάνε τα δεδομένα; γραμμή 29)

Spirosgr 04-04-19 18:53

Const cellStart As Long = 2 'Φύλλο εκκίνησης κελιά από
Const cellEnd As Long = 109 'Φύλλο εκκίνησης κελιά έως
Const colDest As Long = 1 'Στήλη προορισμού (1 = a)
Const colPacks As Long = 30 'Φύλλο προορισμού «ντάνες» πχ 30 γραμμών
Const rowPacks As Long = 29 'Φύλλο προορισμού (που ξεκινάνε τα δεδομένα; γραμμή 29)

*ξέχασα να πω σε αυτήν την γραμμή
wsDestn.Cells(j + rowPacks, h) = wsStart.Cells(i, 1)
στη θέση του 1 βάλε 46 που είναι ο αριθμός της at

Spirosgr 05-04-19 07:55

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

Συμπληρώνουμε στις παραμέτρους του κώδικα:
'Φύλλο εκκίνησης (όνομα)
'Φύλλο προορισμού (όνομα)
'Φύλλο εκκίνησης αριθμός πρώτου κελιού στήλης που θα μεταφερθεί
'Φύλλο εκκίνησης αριθμός στήλης που θα μεταφερθεί (1 = a)
'Φύλλο προορισμού αριθμός πρώτης στήλης που θα πάνε τα δεδομένα (1 = a)
'Φύλλο προορισμού «ντάνες» πχ των 30 γραμμών
'Φύλλο προορισμού στήλες που θα καταλάβουν οι ντάνες πχ 9
'Φύλλο προορισμού γραμμή που ξεκινάνε τα δεδομένα


Τρέχουμε τον κώδικα:
Ελέγχει αν τα δεδομένα στην στήλη που θα μεταφερθεί, «χωράνε» στην περιοχή
που έχουμε ορίσει.
Αν δεν χωράνε μας βγάζει ένα μνμ και σταματάει.

Αν όλα καλά, καθαρίζει τα παλιά δεδομένα και τοποθετεί στην προκαθορισμένη
στήλη τα δεδομένα, «σπάζοντάς» τα σε ντάνες όπως έχουμε ορίσει.

kolekas 05-04-19 11:16

ευχαριστώ πολύ Σπυρο για την πολύτιμη βοήθεια για άλλη μια φορά

Spirosgr 05-04-19 11:20

Καλημέρα Βασίλη, καλή συνέχεια.


Η ώρα είναι 04:43.

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


Search Engine Optimization by vBSEO 3.3.2