Μετάβαση στο περιεχόμενο

Excel - Για όσους θέλουν να ψάξουν παραπέρα ...


gvarth

Recommended Posts

επειτα ειδα οτι απο την μια πλευρα υπαρχει το προβλημα της αναγνωρισης των οριων εκτυπωσης τα οποια αλλαζουν συνεχως που μπορει να λυθει με τις κεφαλιδες και τα υποσελιδα αλλα μετα το θεμα που προεκυψε ειναι πως μπορω να βαλω να εκτελουνται πραξεις εντος του χωρου στις κεφαλιδες και υποσελιδα

 

Δοκίμασε κάτι σαν το παρακάτω :

 

>
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.

 

Θέλει μελέτη βέβαια αλλά κάπως έτσι φαντάζομαι να διαχειριστείς μεταβλητές στις κεφαλίδες και τα υποσέλιδα.

 

Κοίταξέ το , κάνε τις προσπάθειές σου και επανερχόμαστε.

 

Δόξα τω Θεώ , μπόλικο το διάβασμα :mrgreen:

  • Upvote 1
Link to comment
Share on other sites

:):):):):)

αλλα σε διαφορετικες σελιδες εκτυπωσης

αναλογα που ειναι τα ορια της εκτυπωσης να μπαινει το "απο μεταφορα" πρωτο πρωτο στην αρχη και τελευταιο κατω κατω το "σε μεταφορα"

 

επειτα ειδα οτι απο την μια πλευρα υπαρχει το προβλημα της αναγνωρισης των οριων εκτυπωσης τα οποια αλλαζουν συνεχως που μπορει να λυθει με τις κεφαλιδες και τα υποσελιδα

αλλα μετα το θεμα που προεκυψε ειναι πως μπορω να βαλω να εκτελουνται πραξεις εντος του χωρου στις κεφαλιδες και υποσελιδα

 

απο την αλλη όμως μπορει πολυ ευκολα να γινει η πραξη και μετα να πρεπει να βρεθει καποιος τροπος αυτη η πραξη να ακολουθει την οριζοντια γραμμη της περιοχης εκτυπωσης

 

Ιδέα!

α) κάνεις όλες τις γραμμές ισοπαχείς (πχ 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

 

θ) τρέχεις και τσεκάρεις...

 

...ελπιζω να σου κάνει κάτι τέτοιο

  • Upvote 2
Link to comment
Share on other sites

@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 :lol: )

αλλα και αυτος παιζει με τα ορια εκτυπωσης γιατι εχει εντος του χωρου εργασιας κουμπακι για εκτυπωση (κρυβει μεσα του VBA)

ενω αν χρησιμοποιηθει του excel δεν βγαινει το επιθυμητο

 

http://rapidshare.com/files/449417444/apo___se_metafora.rar

Link to comment
Share on other sites

Ασχολήθηκα λίγο ακόμα, και ιδού! νομίζω ότι λύνει τέλεια το ζητούμενο αφού μετά τις προσθήκες μεταφορών φτιάχνει και τα 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

  • Upvote 1
Link to comment
Share on other sites

  • 1 month later...

Καταρχας καλησπερα.

Το θέμα ειναι πολύ ενδιαφέρον και επειδη βλέπω ότι ξέρετε πολλά θα ηθελα να ρωτησω κατι.

Εχω μια στήλη στο excel που ειναι της μορφης =Χ+Υ και εμφανίζετε το αποτέλεσμα.

θέλω όμως να κάνω έναν ελεγχο για τυχων λαθη στη καταχωρηση και θα ηθελα να μου πειτε αν υπαρχει τροπος να εμφανιζετε στο κελι ολόκληρη η πράξη και όχι το συνολο. δηλαδη χωρις το =

 

Ευχαριστώ εκ των προτερων

Link to comment
Share on other sites

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

>=A1&" + "&B1&" = "&(A1+B1)

όπου Α1 το Χ και Β1 το Υ

Το αποτέλεσμα θα είναι της μορφής "Χ + Υ = Σ"

Link to comment
Share on other sites

σωστος ο gousgounis

 

μια ερωτηση σχετικη

 

το 2010 εχει την εντολη concatenate

 

υπαρχει η αντιστροφη σε VBA ή κατι αλλο

 

το ξερω οτι το πιο πιθανο ειναι να μην υπαρχει τιποτα

 

αλλα μια ερωτηση δεν ηταν κακο

Link to comment
Share on other sites

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, "-")

  • Upvote 1
Link to comment
Share on other sites

Gousgouni δεν το πιασα.

που το βαζω το =A1&" + "&B1&" = "&(A1+B1) ?

Η στηλη ειναι σημπληρωμενη και δεν θελω να την πειραξω γιατι ειναι παρα πολλα.

απλα θα ηθελα με καποιο τροπο να φυγει το = και να μου εμφανιζει πχ 10+5 και οχι το 15 που ειναι το συνολο

Link to comment
Share on other sites

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε προκειμένου να αφήσετε κάποιο σχόλιο

Πρέπει να είστε μέλος για να μπορέσετε να αφήσετε κάποιο σχόλιο

Δημιουργία λογαριασμού

Κάντε μια δωρεάν εγγραφή στην κοινότητά μας. Είναι εύκολο!

Εγγραφή νέου λογαριασμού

Σύνδεση

Εάν έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
×
×
  • Create New...

Σημαντικό

Χρησιμοποιούμε cookies για να βελτιώνουμε το περιεχόμενο του website μας. Μπορείτε να τροποποιήσετε τις ρυθμίσεις των cookie, ή να δώσετε τη συγκατάθεσή σας για την χρήση τους.