ddiid Δημοσ. 7 Αυγούστου 2017 Δημοσ. 7 Αυγούστου 2017 Καλησπέρα έχω κολλήσει στο εξής ,προσπαθώ να φτιάξω στο excel με vba ηλεκτρονική τιμολόγηση .Το έχω ρυθμίσει να μετατρέπει το αριθμητικό ποσό σε ολογράφως ,να το τυπώνει και να το αποθηκεύει σε μορφή excel στον υπολογιστή. Αλλά όταν το τυπώνω δεν εμφανίζει το ολογράφως(#ονομα?) και όταν πηγαίνω να ανοίξω το αποθηκευμένο παρατηρώ ότι δεν κρατάει τη συνάρτηση που το μετατρέπει στο ολογράφως και θα πρέπει να το ξανα ορισω. Υπάρχει τρόπος να το κρατάει και στην αρχική φόρμα και στο αποθηκευμένο αρχειο. Σας επισυνάπτω μέρος του κώδικα.Sub NextInvoice()Range("I5").Value = Range("I5").Value + 1Range("G26").Value = Range("G34")Range("G30").Value = Range("G34")Range("G31").MergeArea.ClearContentsRange("G34").MergeArea.ClearContentsRange("G38").MergeArea.ClearContentsRange("G34").Formula = "=G30-G31"End SubSub SaveInvWithNewName()Dim NewFN As VariantActiveSheet.CopyNewFN = "C:\invoice" & Range("I5").Value & Range("H5").Value & Range("I49").Value & Range("F16").Value & ".xlsm"ActiveSheet.SaveAs NewFN, FileFormat:=xlOpenXMLWorkbookMacroEnabledApplication.DisplayAlerts = TrueActiveWorkbook.PrintOut copies:=2ActiveWorkbook.Close SaveChanges:=FalseNextInvoiceEnd SubΣΥΝΑΡΤΗΣΗ ΓΙΑ ΟΛΟΓΡΑΦΩΣPrivate Const zero As String = "Μηδέν "Function TextNumber(number As Variant, _Optional NegativeText As String = "-", _Optional IntGender As Integer = 3, _Optional IntMeasurePlural As String, _Optional IntMeasureSingular As String, _Optional Separator As String = "και", _Optional DecCount As Integer = -1, _Optional DecGender As Integer = 3, _Optional DecMeasurePlural As String, _Optional DecMeasureSingular As String, _Optional DecNoZero As Boolean = False, _Optional IntNoZero As Boolean = False, _Optional NoSpace As Boolean = False) As StringApplication.Volatile TrueIf Application.Version < 9 Then GoTo myEndIf IsDate(number) ThenTextNumber = DateText(number)GoTo myEndEnd IfSelect Case TrueCase VBA.IsEmpty(number): GoTo myEndCase Not VBA.IsNumeric(number): TextNumber = CVErr(xlErrValue): GoTo myEndCase Application.IsLogical(number): TextNumber = CVErr(xlErrValue): GoTo myEndCase VBA.IsError(number): TextNumber = CVErr(xlErrValue): GoTo myEndEnd SelectDim R(0 To 14) As VariantDim HD As VariantDim Y As VariantDim numberDEC As Variant: numberDEC = numberDim M As IntegerDim j As IntegerDim IntPart As StringDim DecPart As StringDim dekata As String: dekata = "Δέκατα"Dim dekato As String: dekato = "Δέκατο"Dim sta As String: sta = "στά"Dim sto As String: sto = "στό"HD = VBA.Array("", "Δέκατα", _"Εκατοστά", "Χιλιοστά", _"Δεκάκις Χιλιοστά", "Εκατοντάκις Χιλιοστά", _"Εκατομμυριοστά", "Δεκάκις Εκατομμυριοστά", _"Εκατοντάκις Εκατομμυριοστά", "Δισεκατομμυριοστά", _"Δεκάκις Δισεκατομμυριοστά", "Εκατοντάκις Δισεκατομμυριοστά", _"Τρισεκατομμυριοστά", "Δεκάκις Τρισεκατομμυριοστά", _"Εκατοντάκις Τρισεκατομμυριοστά", "Τετράκις Εκατομμυριοστά")If Int(Abs(number)) = 1 And IntMeasureSingular <> "" _Then IntMeasurePlural = IntMeasureSingularIntPart = IntText(number, NegativeText, IntGender) & IntMeasurePluralnumberDEC = Abs(numberDEC)numberDEC = Format(numberDEC, "0.000000000000000")For j = 14 To 0 Step -1R(j) = Mid(numberDEC, Len(numberDEC) - 14 + j, 1)NextnumberDEC = VBA.Join(R, "")Select Case TrueCase DecCount = -1 And numberDEC = 0DecCount = 0DecMeasurePlural = ""DecMeasureSingular = ""Case DecCount = -1 And numberDEC <> 0Y = numberDECDoY = Y / 10M = M + 1Loop While Y = Int(Y)DecCount = 15 - M + 1DecMeasurePlural = ""DecMeasureSingular = ""DecGender = 3End SelectnumberDEC = VBA.Left(numberDEC, DecCount)If numberDEC = 1 And DecMeasureSingular <> "" Then DecMeasurePlural = DecMeasureSingularSelect Case TrueCase DecCount = 0Case DecMeasurePlural <> ""DecPart = IntText(numberDEC, "", DecGender) & DecMeasurePluralCase DecMeasurePlural = ""DecPart = IntText(numberDEC, "", DecGender) & HD(DecCount)If numberDEC = 1 And DecMeasureSingular = "" ThenDecPart = Replace(DecPart, dekata, dekato)DecPart = Replace(DecPart, sta, sto)End IfEnd SelectSeparator = ChrW(32) & Separator & ChrW(32)If DecCount = 0 Then Separator = ""If DecNoZero = True ThenIf VBA.Left(DecPart, 5) = RTrim(zero) Then Separator = "": DecPart = ""End IfIf IntNoZero = True ThenIf IntPart = NegativeText & zero Then Separator = "": IntPart = NegativeTextEnd IfTextNumber = Application.WorksheetFunction.Trim(IntPart & Separator & DecPart)If NoSpace = True Then TextNumber = _Application.WorksheetFunction.Substitute(TextNumbe r, " ", "")myEnd:End FunctionPrivate Function IntText(numberINT As Variant, _Optional NegativeText As String = "-", _Optional GenderINT As Integer = 3) As StringDim Tm As VariantDim Am As VariantDim Fm As VariantDim tt As VariantDim AFt As VariantDim TAFd As VariantDim Te As VariantDim Ae As VariantDim Fe As VariantTm = VBA.Array("", "Ένα ", "Δύο ", "Τρία ", "Τέσσερα ", _"Πέντε ", "Έξι ", "Επτά ", "Οκτώ ", "Εννέα ")Am = VBA.Array("", "Ένας ", "Δύο ", "Τρεις ", "Τέσσερις ", _"Πέντε ", "Έξι ", "Επτά ", "Οκτώ ", "Εννέα ")Fm = VBA.Array("", "Μία ", "Δύο ", "Τρεις ", "Τέσσερις ", _"Πέντε ", "Έξι ", "Επτά ", "Οκτώ ", "Εννέα ")tt = VBA.Array("Δέκα ", "Έντεκα ", "Δώδεκα ", "Δεκατρία ", "Δεκατέσσερα ", _"Δεκαπέντε ", "Δεκαέξι ", "Δεκαεπτά ", "Δεκαοκτώ ", "Δεκαεννέα ")AFt = VBA.Array("Δέκα ", "Έντεκα ", "Δώδεκα ", "Δεκατρείς ", "Δεκατέσσερις ", _"Δεκαπέντε ", "Δεκαέξι ", "Δεκαεπτά ", "Δεκαοκτώ ", "Δεκαεννέα ")TAFd = VBA.Array("", "Δέκα ", "Είκοσι ", "Τριάντα ", "Σαράντα ", _"Πενήντα ", "Εξήντα ", "Εβδομήντα ", "Ογδόντα ", "Ενενήντα ")Te = VBA.Array("", "Εκατόν ", "Διακόσια ", "Τριακόσια ", "Τετρακόσια ", _"Πεντακόσια ", "Εξακόσια ", "Επτακόσια ", "Οκτακόσια ", "Εννιακόσια ")Ae = VBA.Array("", "Εκατόν ", "Διακόσιοι ", "Τριακόσιοι ", "Τετρακόσιοι ", _"Πεντακόσιοι ", "Εξακόσιοι ", "Επτακόσιοι ", "Οκτακόσιοι ", "Εννιακόσιοι ")Fe = VBA.Array("", "Εκατόν ", "Διακόσιες ", "Τριακόσιες ", "Τετρακόσιες ", _"Πεντακόσιες ", "Εξακόσιες ", "Επτακόσιες ", "Οκτακόσιες ", "Εννιακόσιες ")Dim ekato As String: ekato = "Εκατό "Dim ekaton As String: ekaton = "Εκατόν "Dim Tx As String: Tx = "Χίλια "Dim Ax As String: Ax = "Χίλιοι "Dim Fx As String: Fx = "Χίλιες "Dim xx As String: xx = "Χιλιάδες "Dim mill As String: mill = "Ένα Εκατομμύριο "Dim mills As String: mills = "Εκατομμύρια "Dim billion As String: billion = "Δις "Dim trillion As String: trillion = "Τρις "Dim V(0 To 14) As VariantDim apart As String, bpart As String, cpart As StringDim dpart As String, epart As String, totalpart As StringDim oSgn As Integer, oLen As Integer, i As IntegeroSgn = Sgn(numberINT)numberINT = Abs(numberINT)numberINT = Format(numberINT, "0.000000000000000")numberINT = Int(numberINT)oLen = Len(numberINT)If oLen > 15 Then IntText = CVErr(xlErrValue): GoTo myEndFor i = 0 To oLen - 1V(15 - oLen + i) = Mid(numberINT, i + 1, 1)NextIf V(1) + V(2) = 0 Then Te(1) = ekatoSelect Case TrueCase V(0) + V(1) + V(2) = 0Case V(1) = 1epart = Te(V(0)) & tt(V(2)) & trillionCase Elseepart = Te(V(0)) & TAFd(V(1)) & Tm(V(2)) & trillionEnd SelectTe(1) = ekatonIf V(5) + V(4) = 0 Then Te(1) = ekatoSelect Case TrueCase V(3) + V(4) + V(5) = 0Case V(4) = 1dpart = Te(V(3)) & tt(V(5)) & billionCase Elsedpart = Te(V(3)) & TAFd(V(4)) & Tm(V(5)) & billionEnd SelectTe(1) = ekatonIf V(7) + V(8) = 0 Then Te(1) = ekatoSelect Case TrueCase V(6) + V(7) + V(8) = 0Case V(6) + V(7) = 0 And V(8) = 1cpart = millCase V(7) = 1cpart = Te(V(6)) & tt(V(8)) & millsCase Elsecpart = Te(V(6)) & TAFd(V(7)) & Tm(V(8)) & millsEnd SelectIf GenderINT = 1 Then Tm = Am: tt = AFt: Te = Ae: Tx = AxIf GenderINT = 2 Then Tm = Fm: tt = AFt: Te = Fe: Tx = FxTe(1) = ekatonIf V(11) + V(10) = 0 Then Fe(1) = ekatoSelect Case TrueCase V(9) + V(10) + V(11) = 0Case V(9) + V(10) = 0 And V(11) = 1bpart = TxCase V(10) = 1bpart = Fe(V(9)) & AFt(V(11)) & xxCase Elsebpart = Fe(V(9)) & TAFd(V(10)) & Fm(V(11)) & xxEnd SelectTe(1) = ekatonIf V(14) + V(13) = 0 Then Te(1) = ekatoIf V(13) = 1 Then apart = Te(V(12)) + tt(V(14)) _Else: apart = Te(V(12)) & TAFd(V(13)) & Tm(V(14))totalpart = epart & dpart & cpart & bpart & apartIf numberINT = 0 Then totalpart = zeroIf oSgn = -1 Then NegativeText = NegativeText & " " Else NegativeText = ""IntText = NegativeText & totalpartmyEnd:End FunctionPrivate Function DateText(mydate As Variant) As StringDim oday As Integer: oday = Day(mydate)Dim omonth As Integer: omonth = Month(mydate)Dim oyear As Integer: oyear = Year(mydate)Dim VMONTH As VariantVMONTH = VBA.Array("", "Ιανουαρίου", "Φεβρουαρίου", "Μαρτίου", _"Απριλίου", "Μαΐου", "Ιουνίου", "Ιουλίου", _"Αυγούστου", "Σεπτεμβρίου", "Οκτωβρίου", _"Νοεμβρίου", "Δεκεμβρίου")DateText = IntText(oday, "", 2) & VMONTH(omonth) & ", " & IntText(oyear, "", 3)End Function
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα