ALEXANDAR_GEORGIEV

Untitled

Oct 20th, 2026
12
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.01 KB | None | 0 0
  1. Sub OSK() 'Êîëîíè 3, 5, 7, 9, 11, 13, 15, 17, 19, 21
  2. Dim wsf As Object 'Ïðîâåðÿâàìå ñìåòêèòå íà ðåä 10 îò "OSK" äàëè ãè èìà â "podrOV" (col 1) -> Ako Ìàñèâà å ïðàçåí Çàáèâà.
  3. Set wsf = Application.WorksheetFunction 'Àêî ãè èìà -> ïðîâåðÿâàìå äàëè èìà äåáèòåí (col 5) èëè êðåäèòåí îáîðîò (col 6). -> Ako Ìàñèâà å ïðàçåí Çàáèâà.
  4. Dim ws As Object 'Àêî èìà ÄÎ -> çàïèñâàìå íÿêúäå ñ-êàòà è ÄÎ
  5. Set ws = Worksheets 'Àêî èìà ÊÎ -> çàïèñâàìå íÿêúäå ñ-êàòà è ÊÎ
  6. Dim c As Variant
  7. Dim colArr As Variant 'Àêî íÿìà òàêàâà ñìåòêà èëè èìà ñìåòêà, íî íÿìà íèòî ÄÎ, íèòî ÊÎ, òîãàâà:
  8. colArr = Array(3, 5, 7, 9, 11, 13, 15, 17, 19, 21) '1. ïîñëåäíèÿ ðåä 30 íà òàáë. â "OSK" ïî êîëîíè å ðàâåí íà ñóìàòà íà ðåä 13.
  9. Dim d, k As Byte '2. ñóìèòå, êîèòî ñå ïðåíàñÿò íà ðåä 30 â "OSK" ñå ïðåíàñÿò óìíîæåíè ïî 1000 è â "Balance", col 6 îò ðåä 15 äî ðåä 29
  10. Dim r, lastRtargetSheet As Long 'òîâà ñà ðåäîâå: 15, 16, 17, 19, 20, 21, 22, 25, 26, 28, 29
  11. lastRtargetSheet = findLastRow("podrOV")
  12. Dim activeAccDO(), activeAccKO() As Variant
  13. Dim acc1, accFlag1 As Variant
  14. Dim colCopyInitAmountToFinal As Boolean
  15. Dim accCopyInitAmountToFinal As Boolean
  16. Dim accRow As Long
  17. Dim hasKredit, hasDebit As Boolean
  18. Dim balanceRow As Long
  19. Dim copyInitAmountToFinal As Boolean
  20.  
  21. 'dict prrwryshta kolonite na OSK w redowe na Balance
  22. Dim dict As Object
  23. Set dict = CreateObject("Scripting.Dictionary")
  24. Dim keys As Variant, vals As Variant
  25. Dim i As Long
  26. Dim debitFinalSaldo As Double
  27. Dim kreditFinalSaldo As Double
  28. Dim hasDebitOborot As Boolean
  29. Dim hasKreditOborot As Boolean
  30.  
  31. keys = Array(3, 5, 7, 9, 11, 13, 15, 17, 19, 21)
  32. vals = Array(15, 16, 17, 19, 20, 21, 22, 25, 26, 28)
  33.  
  34. For i = LBound(keys) To UBound(keys)
  35. dict.Add keys(i), vals(i)
  36. Next i
  37.  
  38. ' 1. DENY VISUALIZATION & ALERTS
  39. Application.ScreenUpdating = False
  40. Application.DisplayAlerts = False
  41.  
  42. With ws("OSK")
  43. d = 1: k = 1
  44. ' accFlag1 = Split(.Cells(10, 3).Value, ",")
  45. ' For Each acc1 In accFlag1
  46.  
  47. For Each c In colArr 'Array(3, 5, 7, 9, 11, 13, 15, 17, 19, 21)
  48. copyInitAmountToFinal = False
  49.  
  50. If .Cells(10, c) = "" Then
  51. 'W OSK nqma smetki za tazi kolona, mozhem da prenesem
  52. colCopyInitAmountToFinal = True
  53. Else
  54. colCopyInitAmountToFinal = True
  55. 'Smetki ima, razbiwame gi
  56. accFlag1 = Split(.Cells(10, c).Value, ",")
  57. debitFinalSaldo = 0
  58. kreditFinalSaldo = 0
  59. For Each acc1 In accFlag1
  60. For r = 2 To lastRtargetSheet
  61. accRow = FindRowWithText(1, acc1, "podrOV") ' Tyrsim smetkata w sheet podrOV kolona A
  62. If accRow = 0 Then
  63. ' Smetkata ne syshteswtywa w Balance
  64. ' Ne piapme colCopyInitAmountToFinal
  65. ' Ako e true, shte si ostane true
  66. ' Ako e false, shte si ostane false
  67. Else
  68. hasDebitOborot = True
  69. If IsNumeric(ws("podrOV").Cells(5, accRow).Value) And Val(ws("podrOV").Cells(5, accRow).Value) = 0 Then hasDebitOborot = False
  70. hasKreditOborot = True
  71. If IsNumeric(ws("podrOV").Cells(6, accRow).Value) And Val(ws("podrOV").Cells(6, accRow).Value) = 0 Then hasKreditOborot = False
  72.  
  73. If hasDebitOborot Or hasKreditOborot Then
  74. 'Dori samo 1 ot smetkite za kolonata da ima debit, znachi ne mozhem prosto da prenesem
  75. colCopyInitAmountToFinal = False
  76. ' Ako debit
  77. ' * Ako w kol 7 (debitno krajno saldo) ima > 0, umnozhamwae po -1 i go trupame w debitFinalSaldo
  78. If IsNumeric(ws("podrOV").Cells(7, accRow).Value) And Val(ws("podrOV").Cells(7, accRow).Value) > 0 Then
  79. debitFinalSaldo = debitFinalSaldo - Val(ws("podrOV").Cells(7, accRow).Value)
  80. End If
  81. ' Ako w kol 8 (kreditno krajno saldo) ima > 0, go trupame w kreditFinalSaldo
  82. If IsNumeric(ws("podrOV").Cells(8, accRow).Value) And Val(ws("podrOV").Cells(8, accRow).Value) > 0 Then
  83. kreditFinalSaldo = kreditFinalSaldo + Val(ws("podrOV").Cells(8, accRow).Value)
  84. End If
  85. Else
  86. ' Smetkata syshetswuwa w Balance, no nqma nito debitni, nito kreditni salda
  87. ' Ne piapme colCopyInitAmountToFinal
  88. ' Ako e true, shte si ostane true
  89. ' Ako e false, shte si ostane false
  90. End If
  91. ' If IsNumber(ws("podrOV").Cells(5, accRow).Value) And Val(ws("podrOV").Cells(5, accRow).Value) > 0 Then
  92. ' ReDim Preserve activeAccDO(d) 'Ñëàãàìå ñìåòêèòå, â ÷èéòî Äåáèòíè îáîðîòè èìà äâèæåíèå ïðåç ãîäèíàòà
  93. ' activeAccDO(d) = .Cells(10, c).Value
  94. ' d = d + 1
  95. ' End If
  96. ' If IsNumber(ws("podrOV").Cells(6, r).Value) And Val(ws("podrOV").Cells(6, r).Value) > 0 Then
  97. ' ReDim Preserve activeAccKO(k) 'Ñëàãàìå ñìåòêèòå, â ÷èéòî Êðåäèòíè îáîðîòè èìà äâèæåíèå ïðåç ãîäèíàòà
  98. ' activeAccKO(k) = .Cells(10, c).Value
  99. ' k = k + 1
  100. ' End If
  101. End If 'Array (3, 5, 7, 9, 11, 13, 15, 17, 19, 21) -> red 30
  102. Next r 'Balance(15, 16, 17, 19, 20, 21, 22, 25, 26, 28) -> kolona 6
  103. Next acc1
  104. ' Zapazwame natrupanite krajni salda w sheet Balance
  105. balanceRow = dict(c)
  106. ws("Balance").Cells(balanceRow, 6) = debitFinalSaldo + kreditFinalSaldo
  107. End If
  108.  
  109. If colCopyInitAmountToFinal Then
  110. 'W kolonata nqma niakwi krediti/debiti i mozgem da prenesem nachalnata suma w krajnata
  111. ' .Cells(30, c).Value = .Cells(13, c).Value
  112. balanceRow = dict(c)
  113. ws("Balance").Cells(balanceRow, 6) = wsf.Round(.Cells(30, c).Value * 1000, 0)
  114. End If 'Tyrsim èìåòî íà ñìåòêàòà â êîëîíà 1 îò ãîðå íà äîëó
  115. 'Ïðàâèì íîâî òúðñåíå ñ íà÷àëåí ðåä íà ïúðâîòî íàìåðåíî êàòî ñìåòêà - îò ãîðå íàäîëó òúðñèì "Îáùî" !
  116.  
  117. Next c
  118. ' Dim divd As Double
  119. ' divd = InterimDivident(lastRtargetSheet)
  120. ' .Cells(29, 6).Value = divd
  121. End With
Advertisement
Add Comment
Please, Sign In to add comment