Μετάβαση στο περιεχόμενο
Newsletter: Ημερήσια τεχνική ενημέρωση από το Michanikos.gr ×

apostolos55

Members
  • Περιεχόμενα

    72
  • Εντάχθηκε

  • Τελευταία επίσκεψη

  • Days Won

    5

Everything posted by apostolos55

  1. Βάζω τον κώδικα εδώ για να αποφύγουν οι συνάδελφοι και φίλοι το download/insert module κλπ. και να κάνουν τις δοκιμές τους πιο εύκολα. Δυο παρακλήσεις ωστόσο: 1) Διαβάστε τα αρχικά σχόλια και τη περιγραφή πριν από ερωτήσεις, και αν κάτι δεν σας τρέχει κάντε download και δείτε τις εφαρμογές που έχω στο excel 2) Κατά την αντιγραφή του κώδικα μην σβήσετε τίποτα (πληροφορίες/στοιχεία κλπ) ούτε από τα σχόλια. Το διαθέτω τελείως ελεύθερο προς χρήση και μεταβολή αλλά με την υποχρέωση να διατηρείτε και να ενημερώνετε με τις αλλαγές σας τα σχόλια (edit_4 κλπ) με τα στοιχεία σας. Καλό είναι να ξέρουμε ποιος κάνει τι... ακολουθεί ο κώδικας: ' EDIT_3 (Jun 2012): Few MAJOR changes. ' Added "Optional ArraySize As Long = 1" ' now: a = range to look into for match (could be range/ranges/array/name) ' b = lime to look for OR lime with comparison elements (ex: >=2) ' c Optional: If c exists then GetIf will return items from c (range/array...) where b matches a ' if c is missing then GetIf returns the indexes of matches found ' ArraySize Optional: Default = 1 : return 1 result ' special = -1 : find quantity of matches through CountIF and return so many results ' normal 1 to...: find as many as exist in an array as big as Asked! ' When covering an array of N elements with GetIf it is especially useful to send an ' Arraysize of N since it will return 0 elemements in empty slots while (-1) or a ' smaller number will return #N/A in empty slots. ' GetIf will always return a Vertical Array of elements according to ArraSize {getif(N,1)}. Can be used normaly ' for one result (default) without Array experience. Use Traspose() of Excel to convert to Horizontal ' ex: transpose( GetIf(N,1) ) = GetIf(1,N) ' ' TIPS: Use with excel formulas: Offset(),Index(),Smaller(),Larger(),Rows(1:N),Columns(1:N) for unlimited usage. ' See examples ' ' Goylandris Apostolos ' ' EDIT_2 (Jun 2012): c (range2) made Optional. If c is missing then return ' the Counter found so that range1(Counter)=b, then use Counter with Offset function!!! ' GoRandom has gone bye bye... complicated things ' ' Goylandris Apostolos ' ' EDIT_1 ' H Optional-> GoRandom proste8hke gia tyxaio gemisma pinaka - mperdema, sto IKA ' to b egine b as string ka8ws se merikes periptwseis den edeine ta anamenomena. Pleon doyleyei kalytera ' ' Goylandris Apostolos ' ' Original (Apr 2008) ' Syntax exactly like SUMIF, that is "GetIf (Range1;Criteria;Range2)" ' and finds range2(i) so that range1(i)=criteria ' No controls/checks, no speed or other improvements made by function ' ' Goylandris Apostolos ' Public Function GetIf(a, b As String, Optional c, Optional ArraySize As Long = 1) Dim Counter As Long, Counter2 As Long, Counter3 As Long, dum1, EvalFL As Boolean, matchFL As Boolean Dim Counters() As Long, Holder() ' Fix ArraySize If ArraySize = 0 Then ArraySize = Evaluate(Application.WorksheetFunction.CountIf(a, ) If ArraySize < 1 Then ArraySize = 1 ' Restore to 1 even if evaluate finds 0 to avoid errors ' properly allocate arrays for VERTICAL results. Use TRANSPOSE() in excel fo HORIZONTAL ReDim Counters(1 To ArraySize, 1 To 1), Holder(1 To ArraySize, 1 To 1) ' Enable trapping for Greater than or Smaller than functions If InStr(b, ">") > 0 Then EvalFL = True If InStr(b, "<") > 0 Then EvalFL = True Counter = 0: Counter2 = 0: Counter3 = 0 For Each dum1 In a ' Search for index Counter = Counter + 1: matchFL = False If EvalFL Then If Evaluate(Format(dum1, "#0") + Then matchFL = True Else If b = Trim(dum1) Then matchFL = True End If If matchFL Then Counter3 = Counter3 + 1 Counters(Counter3, 1) = Counter If Counter3 = ArraySize Then Exit For 'Search only as many as asked for End If Next If Counter3 > 0 Then ' if something was found If IsMissing(c) Then ' Edit:Jun2012 Ommitting range2 (c) returns Position within range GetIf = Counters Else Counter = 1 For Each dum1 In c ' Use index to find equivalent Counter2 = Counter2 + 1 If Counter2 = Counters(Counter, 1) Then Holder(Counter, 1) = dum1 Counter = Counter + 1 If Counter > Counter3 Then Exit For 'Search only as many as asked for End If Next GetIf = Holder End If Else GetIf = "-": End If End Function
  2. καλησπέρα, προτείνω και εγώ μια πιο κομψή λύση, χωρίς χρήση της αγαπημένης μου VBA αλλά με "πίνακες": =SMALL(IF({1,5;2,5;4;6}-F3>=0;{1,5;2,5;4;6};10);1) εισαγωγή με ctrl+shift+enter όπου στο κελί F3 έχω την τιμή προς σύγκριση. Το 10 μπορεί να είναι οτιδήποτε θες να σου βγάζει όταν είσαι πάνω από το τελευταίο (εδώ το 6) όπως καταλαβαίνετε βάζω τις τιμές σε array: {1,5;2,5;4;6}. Εδώ θα μπορούσαμε να έχουμε ονομασία (defined name) έστω oria={1,5;2,5;4;6} ή από κελιά, και να γράφαμε: =SMALL(IF(oria-F3>=0;oria;10);1) κλπ... πολύ πιο κομψό!! εδώ για παράδειγμα εισαγωγής ονομασμένης λίστας και data validation Η παραπάνω εντολή για να δουλέψει θέλει αφού γραφτεί να πατηθεί το ctrl+shift+enter αντί του απλού enter!!! Το ίδιο μετά από κάθε αλλαγή της.
  3. Χαίρετε, ενημερώνω τους φίλους προγραμματιστές ότι ανέβασα νέα και σαφώς βελτιωμένη GetIf() εδώ Περιλαμβάνει βελτιώσεις για ταχύτητα, επιστροφή θέσεως ελέγχων, περιορισμένη εφαρμογή ελέγχων ανισότητας, και όλα αυτά με εργασία με Arrays και επιστροφή πολλαπλών αποτελεσμάτων
  4. Version v3.00

    264 downloads

    Συνάρτηση για Excel. Βρίσκει και επιστρέφει αντικείμενα από Συλλογή_2 έτσι ώστε να αντιστοιχούν σε αντικείμενα Συλλογής_1 που είναι ίδια με Κριτήριο (ή ανισότητα) Χρήση απλή σε κελί, με επιστροφή του πρώτου αποτελέσματος μόνο, ή σε Array με πληθώρα επιλογών Συντάσσεται αντίστοιχα με την SUMIF(), δηλαδή: GetIf( Range1 ; Criteria ; Range2 ; ArraySize ) πχ: GetIf( {11;12;13;14} ; 12 ; {Μιτσος;Νικος;Πετρος;Μακης} ) = Νικος Range1: εδώ ψάχνει (πχ {11;12;13;14}) Criteria: για αυτό ψάχνει (πχ 12) Range2: (Προαιρετικό) Εδώ ψάχνει σε αντιστοιχία με τη θέση που βρήκε το Criteria στο Range1 (πχ {Μιτσος;Νικος;Πετρος;Μακης}) επιστρέφει: οτι/οσα βρήκε (πχ Νικος). Αν δεν υπάρχει Range2 τότε επιστρέφει τις θέσεις των ταιριασμάτων (ArraySize): (Προαιρετικό) Πόσα αποτελέσματα θα επιστρέψει. Μικραίνοντας τον αριθμό γίνεται πιο γρήγορη η συνάρτηση γιατί μόλις βρεί τα απαραίτητα, σταματάει... Βλέπετε οδηγίες εντός για περισσότερα! Υπάρχουν 2 αρχεία, για Excel 2003 και Excel 2007 Αν δουλεύετε με πολλές αναζητήσεις το Excel και έχετε κουραστεί να παλεύετε με τις Index() Match() Smaller() κλπ τότε πιστεύω θα σας αρέσει. Μην διστάσετε να στείλετε σχόλια/προτάσεις/προβλήματα. ΠΡΟΣΟΧΗ: Για χρήση σε Arrays απαιτεί γνώση Arrays και τοποθέτηση με ctrl+shift+enter ...
  5. apostolos55

    Math Evaluation

    προσθέτουμε μερικά IF και μερικά Replace() ακόμα, και για καλύτερη χρήση και ένα Optional στο κάλεσμα... και ιδού: Public Function EvalMath2(xc As String, Optional FixRegional As Boolean = False) As Double Dim n As Double, lt As Long, I As Long lt = Len(Trim(xc)) If lt > 0 Then xc = LCase(xc) xc = Replace(xc, "χ", "*") xc = Replace(xc, "x", "*") xc = Replace(xc, "π", "pi()") xc = Replace(xc, "[", "(") xc = Replace(xc, "]", ")") xc = Replace(xc, "{", "(") xc = Replace(xc, "}", ")") If FixRegional Then ' remove Thousands separator xc = Replace(xc, Application.International(xlThousandsSeparator), "") ' xc = Replace(xc, ".", "") ' or ' replace Decimal separator from WindowsDeafult to VBA Default "." xc = Replace(xc, Application.International(xlDecimalSeparator), ".") ' xc = Replace(xc, ",", ".") ' or End If n = Evaluate("=" + xc) Else n = 0 End If EvalMath2 = n End Function (σημείωση: το "β) για όποιον έχει περιττά δεδομένα όπως μονάδες" δεν μπλέκει την κατάσταση χωρίς λόγο, οπότε το αφαίρεσα.)
  6. Ενημερώνω ότι ο gvarth επανέφερε το αρχείο Math Evaluation για υπολογισμό συναρτήσεων απευθείας. Επίσης προτείνω ανεπιφύλακτα για οποιονδήποτε θέλει να προχωρήσει στο Excel + VBA το βιβλίο: Excel 2007 VBA Programmer's Reference. Ίσως να υπάρχουν και άλλα εξίσου καλά, το συγκεκριμένο όμως είναι από σχετικά προχωρημένους μέχρι... τα πάντα όλα. Πράγματα που δεν φανταζόμουν καν ότι κάνει το Excel.
  7. apostolos55

    Math Evaluation

    Γιώργο καλημέρα "Math Evaluation" = a blast from the past!!! Ευχαριστούμε για την επαναφορά να σημειώσω ότι σε Excel 2010 χρειάστηκε αλλαγή σε public της function alt+f11 (για άνοιγμα VBA editor) Function EvalMath(xc As String) As Double --> Public Function EvalMath(xc As String) As Double προτείνω α) If xc <> "" Then --> If Trim(xc) <> "" Then έτσι προλαβαίνουμε την περίπτωση xc=" " β) για όποιον έχει περιττά δεδομένα όπως μονάδες προσθήκη της μπλε γραμμής: For I = 1 To lt If Mid$(xc, I, 1) = "×" Or Mid$(xc, I, 1) = "X" Or Mid$(xc, I, 1) = "x" Or Mid$(xc, I, 1) = "χ" Then Mid$(xc, I, 1) = "*" End If If Not InStr("0123456789+-*/.,()^", Mid$(xc, I, 1)) > 0 Then Mid$(xc, I, 1) = " " Next αν και εδώ θέλει προσοχή γιατί αν πχ έχετε "8+5 χιλιάδες" θα αλλάξει το "χ" με "*" και προκύπτει ΛΑΘΟΣ!!! οπότε πρέπει να διαλέξετε... γ) τολμώ να προτείνω μια παραλαγή της EvalMath, ας την πούμε EvalMath2. Την προτείνω αρχικά γιατί χρησιμοποιώντας συναρτήσεις της VBA είναι πολύ πιο απλή προγραμματιστικά, και πιο εύκολη για αλλαγές... κατά τα άλλα νομίζω ότι δουλεύουν το ίδιο. Με τη προσθήκη της επιλεκτίκής αφαίρεσης δεδομένων που δε συμμετέχουν σε πράξεις... ολοκληρωνόμαστε νομίζω. Public Function EvalMath2(xc As String, Optional RemoveStrings As Boolean = False) As Double Dim n As Double, lt As Long, I As Long lt = Len(Trim(xc)) If lt > 0 Then If RemoveStrings = False Then xc = LCase(xc) xc = Replace(xc, "χ", "*") xc = Replace(xc, "x", "*") Else For I = 1 To lt If Not InStr("0123456789+-*/.,()^", Mid$(xc, I, 1)) > 0 Then Mid$(xc, I, 1) = " " Next End If n = Evaluate("=" & xc) Else n = 0 End If EvalMath2 = n End Function αν / όταν κάνετε copy-paste στη VBA διορθώστε τα "χ" που ίσως περαστούν λάθος Προσέξτε καλά την replace, είναι φοβερή διευκόλυνση...
  8. Κάλυψη απαιτήσεων Solver για Office 2010 (ενεργοποίηση): FILE - Options - Add-Ιns - Manage (excel add-ins) ... GO - check Solver Add-in - OK (εφόσον έχει γίνει η αρχική εγκατάσταση) κάποτε (όταν ήμουν φοιτητής) είχα κάνει κάτι παρόμοιο με QB. Εννοείται χωρίς solver κλπ. Μόλις ευκαιρήσω να το μετατρέψω για Excel θα το ανεβάσω. Ευχαριστούμε
  9. Το ξανα-ανέβασα. Νομίζω τώρα είναι ΟΚ και με τα windows... Πείτε μου αν υπάρχει πρόβλημα, ή προμηθευτείτε το 7-zip να ηρεμήσετε...
  10. Το έχω κάνει με το 7-zip που υπάρχει εδώ http://www.7-zip.org/download.html (open source) και υπάρχει και portable (δεν χρειάζεται εγκατάσταση) εδώ http://portableapps.com/apps/utilities/7-zip_portable . Όμως το αρχείο είναι κανονικό zip-ακι και σε εμένα πάλι το βλέπουν και το ανοίγουν και τα windows κανονικά (win7).
  11. Version 1.1a

    2.657 downloads

    Εξέλιξη και τελειοποίηση προγράμματος υπολογισμού και υποβολής μηνιαίων ΑΠΔ Οικοδομοτεχνικών έργων στο ΙΚΑ (παραγωγή αρχείου) Αρχείο Excel με δυνατότητα να υπολογίζει ταχύτατα και να παράγει αρχείο υποβολής για τις μηνιαίες εισφορές για το ΙΚΑ, κάτι που γινόταν μέχρι πρότινος μόνο από τις δύσχρηστες φόρμες της ιστοσελίδας του ΙΚΑ ή με αγορασμένα προγράμματα, κλειστού κώδικα. Και λέω δύσχρηστες γιατί ενώ για λογιστές με σταθερό προσωπικό κάθε μήνα το "Αντιγραφή προηγούμενης περιόδου" δουλεύει μια χαρά, δυστυχώς για μηχανικούς που υποβάλουν ΑΠΔ Οικοδομοτεχνικών έργων τα πράγματα είναι πολύ πιο δύσκολα με το προσωπικό να εμφανίζεται ασυνεχώς στο χρόνο (πχ. Μάρτη και Ιούνιο τα μπετά ενώ ενδιάμεσα χτισίματα). Λόγω περιορισμένης γνώσης του αντικειμένου της ΑΠΔ-Οικοδομοτεχνικών, το πρόγραμμα είναι ακόμα ατελές (ως προς τους αυτοματισμούς, η παραγωγή αρχείου είναι πλήρης σύμφωνα με τις προδιαγραφές του ΙΚΑ). Αναμένω προτάσεις επι της λειτουργίας αλλά και ιδέες επι της δομής από συνάδελφους. Φυσικά ο κώδικας είναι ανοιχτός και τα όποια κλειδώματα θα είναι μόνο για ασφάλεια, χωρίς κωδικούς. Προσοχή: 1) στο πρόγραμμα περιήγησης καθώς επί του παρόντος το ΙΚΑ μπορεί να δεχτεί το αρχείο ως έχει μόνο από Internet Explorer ενώ με ενημέρωσαν από το ΙΚΑ ότι ο Mozilla θέλει κατάληξη ".apd" στο αρχείο 2) στην υποβολή καθώς κάθε υποβολή αρχείου είναι Οριστική και δεν γίνονται αλλαγές. Πολύ καλό έλεγχο από πριν. 3) Διαβάστε τις οδηγίες που το συνοδεύουν!!! Είναι εξαιρετικά εύχρηστο και αυτόματο, αλλά μέχρι να εξοικειωθείτε καλό είναι να ακολουθούνται συγκεκριμένα βήματα. 4) Αν κάτι δε δουλεύει βεβαιωθείτε ότι ακολουθήσατε τις οδηγίες, πάρτε πάλι τα βήματα από την αρχή χωρίς υποθέσεις. Κρατάτε ένα αντίγραφο του αρχικού προγράμματος ώστε να εξαλείψετε σφάλμα λόγω αλλαγών! Αν πάλι δε δουλεύει καλά, εδώ είμαστε για να βοηθήσουμε. 5) Το πρόγραμμα αυτό και την εξέλιξή του τα κάνω εγώ και όσοι συνάδελφοι βοηθήσουν στον ελεύθερο χρόνο μας, δωρεάν. Θα προσπαθούμε για άμεση ανταπόκρισή αλλά ανάλογα και με τον ιδιωτικό φόρτο εργασίας μπορεί να περάσουν και μέρες από τη στιγμή που θα εντοπίσετε κάτι μέχρι να απαντηθεί το ερώτημα. Ποτέ μην αφήνετε κάτι για την τελευταία στιγμή, ειδικά μέχρι να εξοικειωθείτε. Μια μεγάλη ΑΠΔ Ο/Τ με τα στοιχεία των εργατών διαθέσιμα ολοκληρώνεται σε λίγα λεπτά και η παραγωγή αρχείου είναι σχεδόν άμεση, Όμως λάθος χειρισμός μπορεί να σας κολλήσει για ώρες! 6) Το πρόγραμμα έχει 5 αραιό-γραμμένες σελίδες με οδηγίες, ΔΙΑΒΑΣΤΕ ΤΙΣ ΠΡΟΣΕΧΤΙΚΑ!!! Το ξανάπα και το επαναλαμβάνω. Απορίες που επεξηγούνται στα σχόλια θα απαντώνται με παραπομπή στα σχόλια --> άρα άδικο χάσιμο χρόνου δικό σας και δικό μου! *ΑΠΔ Ο/Τ στο παρόν thread θα νοείται ΑΠΔ οικοδομοτεχνικών Ιστορικό: Το πρόγραμμα ξεκίνησε σαν προσπάθεια υπολογισμού και συνοπτικής διαχείρισης των δεδομένων, ώστε να είναι ευκολότερη η χειροκίνητη ενημέρωση των ΑΠΔ Ο/Τ στην ιστοσελίδα του ΙΚΑ. Κατόπιν πολλών χαμένων ωρών προχώρησα στην εξέλιξή του ώστε να δημιουργεί αρχείο έτοιμο για υποβολή.
  12. Καλημέρα, ξεκίνησα από μια απλή αλλαγή για να δουλεύει με πολύπλοκες επιλογές κελιών (πχ γραμμών ή στηλών) που πριν κόλλαγε, και τελικά με λίγες δοκιμές έφτασα στο απίστευτο!!! Υπάρχουν πλέον 2 ρουτίνες, η SimpleVersion και η ExtremeVersion. H απλή κάνει τα παραπάνω με την διόρθωση ώστε να μην κολλάει πλέον. Άλλαξα και την doThings ώστε να μην περιορίζεται στο activeCell αλλά να δουλεύει με το Target. Σημειώνω μόνο ότι οι ρουτίνες SimpleVersion και ExtremeVersion τρέχουν αυτόματα μόνο αν αφαιρεθεί το header από την 1η τους γραμμή (όχι τα σχόλια) και μετονομαστούν σε Workbook_SheetSelectionChange. Αρχικά θα τρέχει η Simple αλλά με την εν-λόγω μετονομασία τρέχεί όποια θέλετε. Ενδέχεται να κολλήσει αν ξεχαστείτε και έχετε 2 Workbook_SheetSelectionChange(...) ταυτόχρονα. Δοκιμάστε την Extreme με επιλογή που έχει πολλά κελιά με σχόλια.... και πείτε μου τα σχόλιά σας... Ιδού ο νέος κώδικας: ' Simple version //HEADER:SimpleVERSION_ Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) Application.DisplayCommentIndicator = xlCommentIndicatorOnly ' Will only work on 1st Cell of any selection-merged ect!!! If Target.Cells.Count > 1 Then Set a = Range(Target.Cells(1, 1).AddressLocal) Else Set a = Target End If If Not (a.Comment Is Nothing) Then doThings Target End Sub ' Extreme Version //HEADER:ExtremeVERSION_ Private Sub ExtremeVERSION_Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) Application.DisplayCommentIndicator = xlCommentIndicatorOnly Dim CountMyComments As Integer ' Fix to work on 1st item or ALL items of any selection of cells!!! If Target.Cells.Count >= 1 Then For Each b In Target If Not (b.Comment) Is Nothing Then doThings Range(b.AddressLocal), CountMyComments CountMyComments = CountMyComments + 1 'Exit For ' Remove Comment at begin for processing of 1st Comment only End If Next End If End Sub ' Uppon click move Comment to center of window (almost center) ' ' Edited to Clarify code, Transfer to Workbook (original worked in sheets only) ' so that same code performs for all sheets... ' ' Send SINGLE-CELL Ranges only for the following to work ' ' Original from www.contextures.com/xlcomments03.html ' Edited by Apostolos Goulandris Sub doThings(ByVal Target As Range, Optional ByVal CmntCount As Integer) Dim cTop As Long, cWidth As Long, HeightAdd As Long, WidthAdd As Long If Not (Target.Comment Is Nothing) Then With ActiveWindow.VisibleRange cTop = .Top + .Height / 2 cWidth = .Left + .Width / 2 End With With Target.Comment.Shape If CmntCount > 0 Then HeightAdd = .Height / 4 * (Int((11) * Rnd - 7)) WidthAdd = .Width / 4 * (Int((11) * Rnd - 6)) End If .Top = cTop - .Height / 2 + HeightAdd .Left = cWidth - .Width / 2 + WidthAdd End With Target.Comment.Visible = True End If End Sub
  13. Βελτίωση κώδικα προβολής Σχολίων όταν υπάρχουν παγωμένα κελιά (show comments ignoring frozen cells) Χαίρετε συνάδελφοι επανέρχομαι με μια βελτίωση προκειμένου να δουλεύει και με merged-cells. Απλά αντικαταστήστε τη ρουτίνα που έχω σε παράθεση με τη παρακάτω: Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) Application.DisplayCommentIndicator = xlCommentIndicatorOnly ' Fix to work on merged cells!!! Dim StrPos As Integer If Target.Cells.Count > 1 Then StrPos = InStr(Target.AddressLocal, ":") - 1 Set a = Range(Left(Target.AddressLocal, StrPos)) Else Set a = Target End If If Not (a.Comment Is Nothing) Then doThings Target End Sub ελπίζω να βοηθηθούν κάποιοι.
  14. Συμφωνώ απόλυτα και επαυξάνω. Συνάδελφοι, δεν χωλαίνει μόνο στους νόμους η πατρίδα μας, αλλά στην εφαρμογή τους. Τι σημασία έχει ποιος θα έχει την ευθύνη αν δεν γίνονται έλεγχοι και δεν τιμωρηθεί ποτέ κανείς.
  15. Μάλιστα εμένα όταν βάλω 11μηδενικά με πάει στανταρ στο Portugal-Numero de Seguranca Social (βλ συνημμενο). Η πλάκα είναι ότι αντίστοιχο το Ελληνικό ΑΦΜ δεν δουλεύει όπως θα έπρεπε... Σιγουρέψου επίσης ότι η GetIf() είναι γραμμένη ως εξής: Public Function GetIf(a, b As String, c, Optional GoRandom As Boolean = False) Ευτυχώς που η ρουτίνα εγγραφής του αρχείου συμπληρώνει μόνη της τα μηδενικά που λείπουν έμπροσθεν, παντού... Σχετικά με Καταλαβαίνεις ότι χρειάζονται αρκετές αλλαγές για κάτι τέτοιο, ίσως και μεγαλύτερο ενδιαφέρον από όσους το χρησιμοποιούν. Πιστεύω ότι μέχρι τώρα ότι είναι να βελτιωθεί γίνεται πολύ εύκολα με τις οδηγίες από εδώ.
  16. Ορθώς παρατήρησες ST2 περί των κωδικών 933110,933120,933130. Ευτυχώς εκεί που είναι όμως μόνο μικρό μπέρδεμα μπορούν να προκαλέσουν καθώς τα σχόλια που εμφανίζονται (Comments) είναι σωστά, και όλοι οι υπολογισμοί είναι σωστοί, μετά από μια πολύ παλαιότερη διόρθωση. Ευπρόσδεκτες κάθε παρατηρήσεις σχετικά με συντελεστές-τιμές κλπ που αφορούν τους υπολογισμούς, από όποιον έχει σωστά-επίσημα στοιχεία. Για λεπτομέρειες όμως καλό είναι να χρησιμοποιείται pm. Επίσης μην ξεχνάτε να αναφέρετε τυχόν βελτιώσεις. Με τη λειτουργικότητα του Excel εμένα μου ήταν πολύ άνετο-βολικό, ίσως όμως να γίνεται και καλύτερο... Ευχαριστώ για τις παρατηρήσεις και τη συμμετοχή σας
  17. Επανέρχομαι με ένα θεματάκι που με είχε ενοχλήσει πολύ στο παρελθόν, αλλά πλέον βρήκα λύση. Το πρόβλημα ήταν τα σχόλια που κρύβονται όταν έχω Frozen Panes κάτω από τις κρυμμένες στήλες . Ο παρακάτω κώδικας φροντίζει τη ρύθμιση ορατότητας των σχολίων γενικά και εμφανίζει το σχόλιο του κελιού που κάναμε κλικ περίπου στο κέντρο του παραθύρου. Απλό και αρκετά βολικό όταν έχουμε frozen panes και τα σχόλιά μας πάνε και κρύβονται κάτω τους. Θα ήθελα να παγιδεύω το χούβερ του ποντικιού ώστε να εφαρμόζεται με την εμφάνιση του σχολίου, αλλά αδύνατον (thanks Microsoft...) ο κώδικας είναι: Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) Application.DisplayCommentIndicator = xlCommentIndicatorOnly If Not (Target.Comment Is Nothing) Then doThings Target End Sub ' Uppon click move Comment to center of window (almost center) ' ' Edited to Clarify code, Transfer to Workbook (original worked in sheets only) ' so that same code performs for all sheets... ' ' Original from www.contextures.com/xlcomments03.html ' Edited by Apostolos Goulandris Sub doThings(ByVal Target As Range) Dim cTop As Long, cWidth As Long If Not (ActiveCell.Comment Is Nothing) Then With ActiveWindow.VisibleRange cTop = .Top + .Height / 2 cWidth = .Left + .Width / 2 End With With ActiveCell.Comment.Shape .Top = cTop - .Height / 2 .Left = cWidth - .Width / 2 End With ActiveCell.Comment.Visible = True End If End Sub !! Οδηγίες !! Αντιγράφουμε τον κώδικα στο workbook στο Excel-VBA. Εκεί πάμε με ανοιχτό Excel και Alt+F11, ως γνωστόν... Μετά την επικόληση ενεργοποιείται αυτόματα με κάθε κλικ και αν υπάρχει σχόλιο... εκτελεί. Μην ξεχάστε οι πιο αρχάριοι ενεργοποίηση μακροεντολών και σώσιμο με υποστήριξη μακροεντολών.
  18. type mismatch: διαφορετικός τύπος μεταβλητής από το αναμενόμενο (εκτίμηση ότι έδωσες αριθμό με , αντί . ή το ανάποδο...) την ώρα που κάνεις debug με χουβερ του ποντικιού πάνω από μία μεταβλητή βλέπεις τη τιμή της, οπότε τσεκάρεις άμεσα αν αυτό που έφτασε ως εκεί είναι αυτό που ήθελες και αυτό που έδωσες. αν εξακολουθεί το πρόβλημα στείλε αντίγραφο να το δω, όμως θα το δώ τη δευτέρα.
  19. Απ' ότι θυμάμαι τα έργα κλειδώνουν τον προϋπολογισμό τους σε κάποιο τρίμηνο και η μετέπειτα πληρωμές ανάγονται στο τρίμηνο εφαρμογής με συντελεστές αναθεώρησης από ΠΕΔΜΕΔΕ http://www.pedmede.gr/index.php?Itemid=118&id=78&option=com_content&sectionid=8&task=category Οπότε η Πολιτεία δεν αγχώνεται με το να βγάζει συνέχεια νέες τιμές, βγάζει όμως (συνήθως αρκετά γρήγορα) τους συντελεστές. Προσοχή όμως γιατί κάποιες τιμές παίρνουν ενίοτε την κατιούσα... αφού ακολουθούν την αγορά!!! Ωστόσο δεν ξέρω αν εφαρμόζεται η αναθεώρηση σε Αναλυτικό προϋπολογισμό, καλύτερα ρωτήστε το ΤΕΕ τι γίνεται / αν γίνεται.
  20. Η εγγραφή του Ονόματος γίνεται και μέσα στο Αρχείο του ΙΚΑ, και παρόλο που δεν ξέρω πόσο μετράει, καλό είναι να αλλάξεις το όνομα στην 1η σελίδα (ΑΠΔ gen) cell(5,2) ώστε να πηγαίνει σωστά παντού... --3-- είναι η θέση του αρχείου (πχ: c:\temp\) --5-- με Yes καλεί το αρχείο ελέγχου από τη θέση --3--. Αν τα έχεις γράψει σωστά δε γίνεται να μην τα βλέπει. Αυτά τα φτιάχνεις 1 φορά και δεν χρειάζονται αλλαγή σχεδόν ποτέ. ορθόν!! γιαυτό μπορείς να κάνεις εκτύπωση τον μήνα σου από τη σελίδα του. Αν κάποιος χρειαστεί βεβαίωση ότι κατέθεσες τα ημερομίσθια του, του δίνεις την εκτύπωση με μια υπεύθυνη δήλωση... Προτείνω να τα κάνεις πάντα εκτύπωση (τον μήνα, το συνοπτικό του ΙΚΑ, το αποδεικτικό παραλαβής και την πληρωμή) αφού είναι υποχρεωτικό να τα κρατήσεις 10 χρόνια και δεν θα εμπιστευόμουν μόνο τους server του ΙΚΑ, σε PDF και σε χαρτί! Τις Προάλλες πήγα στο ΙΚΑ να κλείσω ένα έργο με 100% ηλεκτρονικές υποβολές (70% site 30% αρχείο) και το παλικάρι τα έβγαζε στον υπολογιστή του μήνα μήνα, και έκανε τα αθροίσματα με το χέρι!!! Εγώ βέβαια είχα τις εκτυπώσεις ανά χείρας και τον διόρθωνα όπου χρειαζόταν (και πίστεψέ με χρειάστηκε) αλλά ήθελε να τα κάνει μόνος του. Και να φανταστείς ότι μιλώντας με τους αρμόδιους στο ΙΚΑ τους πρότεινα να το φτιάξουμε το αρχείο δωρεάν (από εμένα) για όλους (όχι μόνο Οικοδομοτεχνικά) και ακόμα περιμένω απάντηση... Ίσως άν μπορούσα να το χρεώσω υπέρογκα... να υπήρχε ενδιαφέρον. Κρίμα πάντως. BAS Manolis gon Παρακαλώ μην υποβάλετε θέματα άσχετα από τη χρήση του προγράμματος και γεμίζουμε το thread... Ευχαριστώ, Απόστολος
  21. Sky is the limit... ή τέλος πάντων όσο αντέχεις μέχρι να μπερδευτείς!! βλ νέο συνημμένο όπου το έχω με 3 επίπεδα lists (το προηγούμενο είχε 2 επίπεδα), αλλά για παραπάνω επίπεδα κάνε τις δοκιμές σου Data Validation Depended.zip
  22. Επανέρχομαι σε ένα πολυσυζητημένο θέμα Data Validation με δυνατότητα επιλογής της λίστας από κάποιες διαθέσιμες. Δηλαδή η λίστα που θα με προτρέπει να επιλέξω να γεμίζει ανάλογα με κάποια προηγούμενη επιλογή μου!! βλ συνημμένο αρχείο για λεπτομέρειες. Τα links που περιέχονται στο αρχείο είναι στα αγγλικά μεν, πολύ κατατοπιστικά δε με πληροφορίες για συναρτήσεις όπως η match, index, vlookup και εμπλοκή τους. ΣΗΜΕΊΩΣΗ: Τα παραπάνω προφανώς και δεν είναι για αρχάριους στο Excel, παρόλο που αν πάνε βήμα-βήμα θα έχουν το επιθυμητό αποτέλεσμα. Ίσως χρειαστεί ανασκόπηση σε απλό DataValidation με ονομασμένες λίστες εδώ: http://www.michanikos.gr/showpost.php?p=237860&postcount=118 Data Validation Depended.zip
  23. Samdreamth: Το πρόβλημα εμφανίστηκε επειδή χρησιμοποίησες data-validation με αναφορά σε κελιά, που εμφανίστηκε σε νεώτερη έκδοση. Χρησιμοποίησε την παλιά-καλή έκδοση με αναφορά σε ονομασμένη λίστα όπως έδειξα παλιότερα εδώ http://www.michanikos.gr/showpost.php?p=237860&postcount=118 και δεν θα έχεις πρόβλημα με λίστες σε άλλα φύλλα...
  24. ΙΚΑ Συνάδελφοι να ενημερώσω ότι για μικρό χρονικό διάστημα ακόμα (ως 05/06/2011), υπάρχει η δυνατότητα-υποχρέωση να διορθωθούν λάθη προηγούμενων ΑΠΔ (01/2002 ως 12/2010). Περισσότερα εδώ: http://www.ika.gr/gr/infopages/news/20110401.cfm ΑΛΛΑΓΗ MODULE Επίσης, με το ανέβασμα ενός module αποφεύγεται η διαδικασία συχνής ενημέρωσης του προγράμματος και ανάγκης να ενημερωθούν ξανά τα φύλλα του καθενός. Η αλλαγή του module, όντας σε περιβάλλον Excel, γίνεται ώς εξης: ALT+F11 (το αριστερό Alt) για άνοιγμα του VBA Editor σε microsoft Visual Basic πλέον: σε Project-VBAProject (αν δε φαίνεται πατάμε Ctrl+R) / σε Modules / Module1 κάνουμε δεξι κλικ -->Import File και επιλέγουμε το αρχειάκι που βρίσκεται μέσα στο συμπιεσμένο παραπάνω, http://www.michanikos.gr/showpost.php?p=289722&postcount=5 (ίσως χρειάζεται προηγουμένως αποσυμπίεση) Το νέο module θα πάρει όνομα με μεγαλύτερη αρίθμηση από το αρχικό Σβήνουμε το αρχικό: δεξί κλικ πάνω στο module1, Remove module1 , No et voila!!! περάστηκαν οι αλλαγές
  25. έχει απαντηθεί και παλιότερα, κρίμα γεμίζουμε το thread με τα ίδια... βλ http://www.michanikos.gr/showpost.php?p=237860&postcount=118
×
×
  • Create New...

Σημαντικό

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