gvarth Δημοσιεύτηκε February 22, 2011 at 12:01 μμ Συγγραφέας Δημοσιεύτηκε February 22, 2011 at 12:01 μμ επειτα ειδα οτι απο την μια πλευρα υπαρχει το προβλημα της αναγνωρισης των οριων εκτυπωσης τα οποια αλλαζουν συνεχως που μπορει να λυθει με τις κεφαλιδες και τα υποσελιδα αλλα μετα το θεμα που προεκυψε ειναι πως μπορω να βαλω να εκτελουνται πραξεις εντος του χωρου στις κεφαλιδες και υποσελιδα Δοκίμασε κάτι σαν το παρακάτω : > ActiveSheet.PageSetup.PrintArea = "" With ActiveSheet.PageSetup .LeftHeader = "" .CenterHeader = "" [b] .RightHeader = "Από Μεταφορά : " & Format$(Num1,"######0.00")[/b] .LeftFooter = "" .CenterFooter = "" .[b]RightFooter = "Σε Μεταφορά :" & Format$(Num2,"######0.00")[/b] .LeftMargin = Application.InchesToPoints(0.75) .RightMargin = Application.InchesToPoints(0.75) .TopMargin = Application.InchesToPoints(1) .BottomMargin = Application.InchesToPoints(1) .HeaderMargin = Application.InchesToPoints(0.5) .FooterMargin = Application.InchesToPoints(0.5) End With Οι μεταβλητές Num1 & Num2 κρατούν ανά σελίδα , τα σύνολα που μεταφέρονται. Υπολογίζονται μέσω κατάλληλης υπορουτίνας σε VBA. Θέλει μελέτη βέβαια αλλά κάπως έτσι φαντάζομαι να διαχειριστείς μεταβλητές στις κεφαλίδες και τα υποσέλιδα. Κοίταξέ το , κάνε τις προσπάθειές σου και επανερχόμαστε. Δόξα τω Θεώ , μπόλικο το διάβασμα 1
apostolos55 Δημοσιεύτηκε February 22, 2011 at 10:30 μμ Δημοσιεύτηκε February 22, 2011 at 10:30 μμ :):)αλλα σε διαφορετικες σελιδες εκτυπωσης αναλογα που ειναι τα ορια της εκτυπωσης να μπαινει το "απο μεταφορα" πρωτο πρωτο στην αρχη και τελευταιο κατω κατω το "σε μεταφορα" επειτα ειδα οτι απο την μια πλευρα υπαρχει το προβλημα της αναγνωρισης των οριων εκτυπωσης τα οποια αλλαζουν συνεχως που μπορει να λυθει με τις κεφαλιδες και τα υποσελιδα αλλα μετα το θεμα που προεκυψε ειναι πως μπορω να βαλω να εκτελουνται πραξεις εντος του χωρου στις κεφαλιδες και υποσελιδα απο την αλλη όμως μπορει πολυ ευκολα να γινει η πραξη και μετα να πρεπει να βρεθει καποιος τροπος αυτη η πραξη να ακολουθει την οριζοντια γραμμη της περιοχης εκτυπωσης Ιδέα! α) κάνεις όλες τις γραμμές ισοπαχείς (πχ row heigh=15 ) β) διορθώνεις τις πάνω πάνω που έχουν τις επικεφαλίδες (ωσ και τα νούμερα στήλης) γ) ορίζεις εκτύπωση με τις γραμμές του β) ως επικεφαλίδες (page setup / sheet / [rows at top]=$1:$8 ) δ) κάνεις δοκιμαστική εκτύπωση ή προεπισκόπηση για να δείς που κόβει. Λογικά το κόψιμο θα είναι ανά σταθερό αριθμό γραμμών ε) πας vba (Alt+F11) και New Module ... copy paste το παρακάτω Sub MakeMySheets() Dim RowI As Long, ApoI As Long, seI As Long, RowsInSheet As Long, InPageI As Long Dim Ka8arh As Double, Posofpa As Double, Synolo As Double Dim Cellval As Double ' Dwse tis dikes sou times sta tria epomena RowI = 9: InPageI = 9 RowsInSheet = 40 Do Cellval = Cells(RowI, 9) If Cellval = 0 Then Exit Do Ka8arh = Ka8arh + Cells(RowI, 9) Posofpa = Posofpa + Cells(RowI, 10) Synolo = Synolo + Cells(RowI, 12) If InPageI = RowsInSheet Then Rows(RowI + 1).Select Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove Cells(RowI + 1, 8 ) = "Se metafora": Cells(RowI + 1, 9) = Ka8arh: Cells(RowI + 1, 10) = Posofpa: Cells(RowI + 1, 12) = Synolo Cells(RowI + 2, 8 ) = "Apo metafora": Cells(RowI + 2, 9) = Ka8arh: Cells(RowI + 2, 10) = Posofpa: Cells(RowI + 2, 12) = Synolo RowI = RowI + 3: InPageI = 1 Else RowI = RowI + 1 InPageI = InPageI + 1 End If Loop End Sub ζ) Σώζεις με 2 διαφορετικά ονόματα (ότι αλλαγές γίνονται με VBA δεν έχουν undo) η) μέσα στο VBA SUB αλλάζεις το "' Dwse tis dikes sou times sta tria epomena ... " από 40 σε ότι βρήκες με βήμα δ), και αντίστοιχα τα RowI, InPageI θ) τρέχεις και τσεκάρεις... ...ελπιζω να σου κάνει κάτι τέτοιο 2
st2 Δημοσιεύτηκε February 23, 2011 at 09:11 πμ Δημοσιεύτηκε February 23, 2011 at 09:11 πμ @apostolos55 σε ευχαριστω αλλα υπαρχουν μερικα προβληματακια με τις επικεφαλιδες ενεργοποιημενες δεν μπορουσα να υπολογισω των πληθος των γραμμων για να το γραψω στην sub οποτε το δοκιμασα χωρις επικεφαλιδες αλλα προκυπτουν προβληματακια στην δικια μου περιπτωση αφου τα τακτοποιησα (υψος γραμμων κλπ) απο προεπισκοπηση αλλαγων σελιδας ειδα οτι αλλαγη γινεται ανα 32 γραμμες (1ως33,34ως66,67ως99,100ως τελος) και πετυχαινω την σωστη εισαγωγη αλλαζοντας το 40(δικο σου) σε 32 αλλα σωστα μονο στην 1-2 σελιδα μετα μπερδευεται στην 2-3 παει στην 3 και εισαγει τις 2γραμμες apo metafora και se metafora πανω πανω στην αρχη της 3 και οχι το apo metafora στο τελος 2 και το se metafora στην αρχη 3 αλλα και τις δυο στην 3 και στις 3-4 παει και κανει την εισαγωγη μετα απο μια γραμμη με τιμολογιο απο οτι καταλαβαινω το 40 το δικο σου(32στην δικια μου περιπτωση) πρεπει να αποκτησει μια μεταβλητοτητα του τυπου : (40*(αριθμος σελιδας) - 1) ή καπως ετσι θα το ψαξω σε ευχαριστω πολυ που ασχοληθηκες ----------------------------------- χτες βραδυ σκεφτομουν και εγω μηπως μπορουσα να παιξω με τις επαναλαμβανομενες επικεφαλιδες ανα σελιδα εκτυπωσης και απο το planetexcel.gr βρηκα τα επισυναπτομενα εδω ο συντακτης χρησιμοποιει μονο functions του excel και απο το λιγο που τις διαβασα η κρισιμη πρεπει να ειναι η INDIRECT (gousgounis ) αλλα και αυτος παιζει με τα ορια εκτυπωσης γιατι εχει εντος του χωρου εργασιας κουμπακι για εκτυπωση (κρυβει μεσα του VBA) ενω αν χρησιμοποιηθει του excel δεν βγαινει το επιθυμητο http://rapidshare.com/files/449417444/apo___se_metafora.rar
apostolos55 Δημοσιεύτηκε February 23, 2011 at 09:49 πμ Δημοσιεύτηκε February 23, 2011 at 09:49 πμ Ασχολήθηκα λίγο ακόμα, και ιδού! νομίζω ότι λύνει τέλεια το ζητούμενο αφού μετά τις προσθήκες μεταφορών φτιάχνει και τα PageBreaks (τα οποία είναι πολύ δύστροπα!!!) Δες επισυναπτόμενο. Πατάει στο προηγούμενο αλλά με βελτιώσεις και προσθήκες, οπότε καλύτερα φτιάξε τα κελιά όπως σου είπα (δες πως τα έχω στο επισυναπτόμενο) και αντικατέστησε ολόκληρη τη ρουτίνα Αλλαγές στη VBA κάνεις μόνο στα αρχικά "HeaderPrntLines" και "RowsInSheet" όπως σε βολεύει (καλύτερα να βάλεις λίγο μικρότερα από τα μέγιστα). Ο κώδικας ήταν ελλιπής, βλέπεις με pagebreaks δεν έχω ξαναδουλέψει... Τώρα νομίζω είναι ΟΚ και για πολύ μεγάλα αρχεία, και σε Landscape Στη VBA αλλάξτε την προτελευταία γραμμή στη Sub MakeMySheets από ActiveSheet.VPageBreaks(1).DragOff Direction:=xlToRight, RegionIndex:=1 σε If ActiveSheet.VPageBreaks.Count > 0 Then ActiveSheet.VPageBreaks(1).DragOff Direction:=xlToRight, RegionIndex:=1 Michanikos - Page transitions etc Office 07.zip Michanikos - Page transitions etc Office 03.zip 1
deminio Δημοσιεύτηκε April 5, 2011 at 12:47 μμ Δημοσιεύτηκε April 5, 2011 at 12:47 μμ Καταρχας καλησπερα. Το θέμα ειναι πολύ ενδιαφέρον και επειδη βλέπω ότι ξέρετε πολλά θα ηθελα να ρωτησω κατι. Εχω μια στήλη στο excel που ειναι της μορφης =Χ+Υ και εμφανίζετε το αποτέλεσμα. θέλω όμως να κάνω έναν ελεγχο για τυχων λαθη στη καταχωρηση και θα ηθελα να μου πειτε αν υπαρχει τροπος να εμφανιζετε στο κελι ολόκληρη η πράξη και όχι το συνολο. δηλαδη χωρις το = Ευχαριστώ εκ των προτερων
Gousgounis Δημοσιεύτηκε April 5, 2011 at 02:36 μμ Δημοσιεύτηκε April 5, 2011 at 02:36 μμ Για έλεγχο μπορείς να κάνεις το εξής: >=A1&" + "&B1&" = "&(A1+B1) όπου Α1 το Χ και Β1 το Υ Το αποτέλεσμα θα είναι της μορφής "Χ + Υ = Σ"
st2 Δημοσιεύτηκε April 5, 2011 at 03:25 μμ Δημοσιεύτηκε April 5, 2011 at 03:25 μμ σωστος ο gousgounis μια ερωτηση σχετικη το 2010 εχει την εντολη concatenate υπαρχει η αντιστροφη σε VBA ή κατι αλλο το ξερω οτι το πιο πιθανο ειναι να μην υπαρχει τιποτα αλλα μια ερωτηση δεν ηταν κακο
Gousgounis Δημοσιεύτηκε April 5, 2011 at 08:03 μμ Δημοσιεύτηκε April 5, 2011 at 08:03 μμ H Concatenate υπάρχει και σε παλαιότερες εκδόσεις αν και το "&" το βρίσκω πιο εύχρηστο. Αν θέλεις να χωρίσεις μια φράση με μία λέξη ή χαρακτήρα κλειδί μπορείς να χρησιμοποιήσεις τις Left και Right παράδειγμα: Έχεις στη στήλη Α δεδομένα της μορφής "Όνομα - Τηλέφωνο" Στη στήλη Β βάζεις: >=LEFT(A1,FIND("-",A1,1)-2) Στη στήλη C: >=RIGHT(A1,LEN(A1)-LEN(B1)-1) Σε VBA μάλλον θα έπρεπε να χρησιμοποιήσεις την split: >newVar = Split(Range("A1").Value, "-") 1
deminio Δημοσιεύτηκε April 6, 2011 at 06:36 πμ Δημοσιεύτηκε April 6, 2011 at 06:36 πμ Gousgouni δεν το πιασα. που το βαζω το =A1&" + "&B1&" = "&(A1+B1) ? Η στηλη ειναι σημπληρωμενη και δεν θελω να την πειραξω γιατι ειναι παρα πολλα. απλα θα ηθελα με καποιο τροπο να φυγει το = και να μου εμφανιζει πχ 10+5 και οχι το 15 που ειναι το συνολο
st2 Δημοσιεύτηκε April 6, 2011 at 08:33 πμ Δημοσιεύτηκε April 6, 2011 at 08:33 πμ αν τα δεδομενα σου ειναι εστω στισ στηλες Α και Β βαζεις αυτο =A1&" + "&B1&" = "&(A1+B1) στην C και γινεται αυτο που θες
Recommended Posts
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε προκειμένου να αφήσετε κάποιο σχόλιο
Πρέπει να είστε μέλος για να μπορέσετε να αφήσετε κάποιο σχόλιο
Δημιουργία λογαριασμού
Κάντε μια δωρεάν εγγραφή στην κοινότητά μας. Είναι εύκολο!
Εγγραφή νέου λογαριασμούΣύνδεση
Εάν έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα