בסייעתא דשמיא
עדכון המאקרו יישור טורים - תוספות ותיקונים
בהמשך להערות וההארות שנכתבו בשרשור זה בסייעתא דשמיא הנני להציע לציבור היקר את מאקרו יישור טורים גרסה 3
א.סודר ענין השגיאה של מרווח פחות מ0
וכמו כן נקבע שמרווח בין פסקאות לא יוכל לחרוג מטווח של 2.5 נקודות מינימום ו25 נקודת מקסימום (וזה לצורך הנראות הבסיסית) ונוסף גם שכשלא מצליח בטור הראשון (שהוא רב בפסקאות לעומת השני) מנסה בטור השני (ואם בשני טורים לא עומד בכללים אז ביישור מסמך שלם או מספר עמודים מדלג באופן אוטומטי לעמוד הבא וביישור עמוד אחד מודיע שלא עומד בכללים שהוצבו)
ב. כמו כן מדלג על מסגרות ותיבות טקסט
(ג. כמו כן מאחר שהוגדר מינימום 2.5 נקודות ממילא לא תהיה בעיה של עובי כתב בכותרת)
ד. נוסף פקודה יישור ממיקום הסמן עד סוף כל המסמך (וטוב במקרה של באג וכו לדלג על המקום הבעייתי)
ה. נוסף פקודה ליישור מכותרת על טור 1 עד כותרת הבאה (דהיינו סימן אחד בקונטרס)
ו. ביישור כל המסמך במקרה שיש כותרת באמצע עמוד מיישר גם את החלק העליון וגם את התחתון
בהצלחה
ואשמח לשמוע אם עובד כמצופה וכן על באגים שלא יהיו וכן הצעות ייעול
נראה שהוא דבר שיכול להועיל להרבה משתמשים ולחסוך זמן לכן אני מקווה לעשות כתוסף לכשיהיה מושלם
וכן בכוונתי להוסיף אפשרות להגדיר את הטווח מינימום ומקסימום ועוד בל"נ
הכל בעזרתו יתברך ובישועתו
מצ"ב הקובץיישור טורים 3.dotm ועודכן בפוסט הראשי
והקוד המתוקן והמשופץ
ליישור עמוד אחד
Dim WRange, Endcol2, Startcol1, Rcol1, Rcol2 As Range
Dim NumLines, WPage, Pcol1, Pcol2, APcol, PPS, a, i, B, C, LM, P, S, V, col1, col2, Acol, Ignore As Double
Public Sub יישור_טורים_עמוד_זה()
'בודק אם יש שני טורים
If Selection.PageSetup.TextColumns.Count <> 2 Then MsgBox ("לא נמצאו 2 טורים"): Exit Sub
'עדכון מסך שקר
Application.ScreenUpdating = False
Dim WRange, Endcol2, Startcol1, Rcol1, Rcol2 As Range
Dim NumLines, WPage, Pcol1, Pcol2, APcol, PPS, a, i, B, C, LM, P, S, V, col1, col2, Acol, Ignore As Double
'שומר תחילת שורה של מיקום נוכחי
Selection.HomeKey Unit:=wdLine
Set My = Selection.Range
'בחר את כל העמוד
Set WRange = ActiveDocument.Bookmarks("\page").Range
'עובר לתחילת עמוד
WRange.SetRange Start:=WRange.Start, End:=WRange.Start + 1
WRange.Select
Set Startpage = Selection.Range
WRange.SetRange Start:=Startpage.End, End:=My.End
'סופר שורות
WRange.Select
SLines = Selection.Range.ComputeStatistics(wdStatisticLines)
'חוזר ומפעיל לולאת בדיקה שאין כותרת'
My.Select
'Startcol1 מגדיר תחילת טור 1
Set Startcol1 = Selection.Range
For S = 1 To SLines - 1
Selection.GoTo What:=wdGoToLine, Which:=wdGoToPrevious, Count:=1, Name:=""
If Selection.PageSetup.TextColumns.Count <> 2 Then
Exit For
Else
Set Startcol1 = Selection.Range
End If
Next
'סוף עמוד
Set WRange = ActiveDocument.Bookmarks("\page").Range
WRange.SetRange Start:=WRange.End - 1, End:=WRange.End
WRange.Select
Set Endpage = Selection.Range
WRange.SetRange Start:=My.Start, End:=Endpage.End
'סופר שורות
WRange.Select
ELines = Selection.Range.ComputeStatistics(wdStatisticLines)
My.Select
'Endcol2 מגדיר סוף טור 2
Set Endcol2 = Selection.Range
For S = 1 To ELines - 1
Selection.GoTo What:=wdGoToLine, Which:=wdGoToNext, Count:=1, Name:=""
If Selection.PageSetup.TextColumns.Count <> 2 Then
Exit For
Else
Set Endcol2 = Selection.Range
End If
Next
'מספר שורות כולל שני טורים
Set WRange = Selection.Range
WRange.SetRange Start:=Startcol1.End, End:=Endcol2.End
WRange.Select
NumLines = Selection.Range.ComputeStatistics(wdStatisticLines)
' - col2 מגדיר גובה טור 2
Endcol2.Select
col2 = Endcol2.Information(wdVerticalPositionRelativeToPage)
Selection.EndKey Unit:=wdLine
Set Endcol2 = Selection.Range
' col1מגדיר גובה טור =1
'Endcol1= סוף טור 1
'Startcol2= תחילת טור2
Startcol1.Select
For i = 1 To NumLines
Selection.GoTo What:=wdGoToLine, Which:=wdGoToNext, Count:=1, Name:=""
If col1 > Selection.Information(wdVerticalPositionRelativeToPage) Then
Set Startcol2 = Selection.Range
Exit For
Else
col1 = Selection.Information(wdVerticalPositionRelativeToPage)
Set Endcol1 = Selection.Range
End If
Next
'סוף טור 1 = סוף שורה
Endcol1.Select
Selection.EndKey Unit:=wdLine
Set Endcol1 = Selection.Range
'Acol= מגדיר הפרש בין טורים
If col1 > col2 Then Acol = col1 - col2
If col1 < col2 Then Acol = col2 - col1
'בודק אם טורים ישרים
If Acol < 0.05 Then
MsgBox "טורים ישרים"
'אם רווח גדול מידי מוסיף בסוף פסקה מעבר מקטע בטור 1
ElseIf Acol > 30 Then
Endcol2.Select
ActiveDocument.Range(Start:=Selection.Start, End:=Selection.Start). _
InsertBreak Type:=wdSectionBreakContinuous
Selection.Start = Selection.Start + 1
ActiveDocument.Range(Start:=Selection.End, End:=Selection.End).InsertBreak _
Type:=wdSectionBreakContinuous
With Selection.PageSetup.TextColumns
.SetCount NumColumns:=1
.EvenlySpaced = True
.LineBetween = False
End With
Else
'Pcol1 = מספר פסקאות טור 1
WRange.SetRange Start:=Startcol1.Start, End:=Endcol1.End - 2
WRange.Select
Set Rcol1 = Selection.Range
Rcol1.Select
Pcol1 = (Rcol1.ComputeStatistics(wdStatisticParagraphs))
'Pcol2 = מספר פסקאות טור 2
WRange.SetRange Start:=Startcol2.Start, End:=Endcol2.End - 2
WRange.Select
Set Rcol2 = Selection.Range
Rcol2.Select
Pcol2 = (Rcol2.ComputeStatistics(wdStatisticParagraphs))
'טור מרובה פסקאות
If Pcol1 > Pcol2 Then
'עורך טור1
' PPS - מחלק הפרש בין פסקאות
PPS = Acol / Pcol1
'עבור לשורה ראשונה בטור
Startcol1.Select
' 'אם טור 1 ארוך מ2
If col1 > col2 Then
'בודק אם רווח לא קטן מ2.5
If SpaceAfter - PPS > 2.5 Then
'מפעיל פקודת תיקון בלולאה *מס' פסקאות
For P = 1 To Pcol1
'מקטין רווח אחרי פסקה
With Selection
For B = 1 To .Paragraphs.Count
.Paragraphs(B).Format.SpaceAfter = .Paragraphs(B).Format.SpaceAfter - PPS
Next B
End With
'עבור לפסקה הבאה
Selection.MoveDown wdParagraph, 1
Next P
'אחרת עורך טור 2
Else
If Pcol2 = 0 Then
'אחרת עובר עמוד
Endcol2.Select
Selection.MoveDown wdParagraph, 1
MsgBox ("לא עומד בקרטיונים שנקבעו נא נסה לערוך ידנית")
Else
PPS = Acol / Pcol2
'עבור לשורה ראשונה בטור 2
Startcol2.Select
'בודק אם רווח לא גדול מ25
If SpaceAfter + PPS < 25 Then
'מפעיל פקודת תיקון בלולאה *מס' פסקאות
For P = 1 To Pcol2
'מוסיף רווח אחרי פסקה
With Selection
For B = 1 To .Paragraphs.Count
.Paragraphs(B).Format.SpaceAfter = .Paragraphs(B).Format.SpaceAfter + PPS
Next B
End With
'עבור לפסקה הבאה
Selection.MoveDown wdParagraph, 1
Next P
'אחרת עובר עמוד
Else
'עבור לפסקה הבאה
Endcol2.Select
Selection.MoveDown wdParagraph, 1
MsgBox ("לא עומד בקרטיונים שנקבעו נא נסה לערוך ידנית")
End If
End If
End If
'אם טור 2 ארוך מ1
ElseIf col1 < col2 Then
'בודק אם רווח לא גדול מ25
If SpaceAfter + PPS < 25 Then
'מפעיל פקודת תיקון בלולאה *מס' פסקאות
For P = 1 To Pcol1
'מוסיף רווח אחרי פסקה
With Selection
For B = 1 To .Paragraphs.Count
.Paragraphs(B).Format.SpaceAfter = .Paragraphs(B).Format.SpaceAfter + PPS
Next B
End With
'עבור לפסקה הבאה
Selection.MoveDown wdParagraph, 1
Next P
'אחרת שרווח יהיה גדול מ25 עורך טור 2
Else
If Pcol2 = 0 Then
'אחרת עובר עמוד
Endcol2.Select
Selection.MoveDown wdParagraph, 1
MsgBox ("לא עומד בקרטיונים שנקבעו נא נסה לערוך ידנית")
Else
PPS = Acol / Pcol2
'עבור לשורה ראשונה בטור 2
Startcol2.Select
'בודק אם רווח לא קטן מ2.5
If SpaceAfter - PPS > 2.5 Then
'מפעיל פקודת תיקון בלולאה *מס' פסקאות
For P = 1 To Pcol2
'מקטין רווח אחרי פסקה
With Selection
For B = 1 To .Paragraphs.Count
.Paragraphs(B).Format.SpaceAfter = .Paragraphs(B).Format.SpaceAfter - PPS
Next B
End With
'עבור לפסקה הבאה
Selection.MoveDown wdParagraph, 1
Next P
'אחרת עובר עמוד
Else
'עבור לפסקה הבאה
Endcol2.Select
Selection.MoveDown wdParagraph, 1
MsgBox ("לא עומד בקרטיונים שנקבעו נא נסה לערוך ידנית")
End If
End If
End If
End If
'אם טור 2 רב פסקאות או שווה
ElseIf Pcol2 > Pcol1 Or Pcol2 = Pcol1 Then
'עורך טור 2
'מחלק הפרש בין פסקאות
PPS = Acol / Pcol2
'עבור לשורה ראשונה בטור 2
Startcol2.Select
'אם טור 1 ארוך מ2
If col1 > col2 Then
'בודק אם רווח לא גדול מ25
If SpaceAfter + PPS < 25 Then
'מפעיל פקודת תיקון בלולאה *מס' פסקאות
For P = 1 To Pcol2
'מוסיף רווח אחרי פסקה
With Selection
For B = 1 To .Paragraphs.Count
.Paragraphs(B).Format.SpaceAfter = .Paragraphs(B).Format.SpaceAfter + PPS
Next B
End With
'עבור לפסקה הבאה
Selection.MoveDown wdParagraph, 1
Next P
'אחרת עורך טור 1
Else
If Pcol1 = 0 Then
'אחרת עובר עמוד
Endcol2.Select
Selection.MoveDown wdParagraph, 1
MsgBox ("לא עומד בקרטיונים שנקבעו נא נסה לערוך ידנית")
Else
' PPS - מחלק הפרש בין פסקאות
PPS = Acol / Pcol1
'עבור לשורה ראשונה בטור
Startcol1.Select
'בודק אם רווח לא קטן מ2.5
If SpaceAfter - PPS > 2.5 Then
'מפעיל פקודת תיקון בלולאה *מס' פסקאות
For P = 1 To Pcol1
'מקטין רווח אחרי פסקה
With Selection
For B = 1 To .Paragraphs.Count
.Paragraphs(B).Format.SpaceAfter = .Paragraphs(B).Format.SpaceAfter - PPS
Next B
End With
'עבור לפסקה הבאה
Selection.MoveDown wdParagraph, 1
Next P
'אחרת עובר עמוד
Else
'עבור לפסקה הבאה
Endcol2.Select
Selection.MoveDown wdParagraph, 1
MsgBox ("לא עומד בקרטיונים שנקבעו נא נסה לערוך ידנית")
End If
End If
End If
'אם טור 2 ארוך מ1
ElseIf col2 > col1 Then
'בודק אם רווח לא קטן מ2.5
If SpaceAfter - PPS > 2.5 Then
'מפעיל פקודת תיקון בלולאה *מס' פסקאות
For P = 1 To Pcol2
'מקטין רווח אחרי פסקה
With Selection
For B = 1 To .Paragraphs.Count
.Paragraphs(B).Format.SpaceAfter = .Paragraphs(B).Format.SpaceAfter - PPS
Next B
End With
'עבור לפסקה הבאה
Selection.MoveDown wdParagraph, 1
Next P
'אחרת עורך טור 1
Else
If Pcol1 = 0 Then
'אחרת עובר עמוד
Endcol2.Select
Selection.MoveDown wdParagraph, 1
MsgBox ("לא עומד בקרטיונים שנקבעו נא נסה לערוך ידנית")
Else
' PPS - מחלק הפרש בין פסקאות
PPS = Acol / Pcol1
'עבור לשורה ראשונה בטור
Startcol1.Select
'בודק אם רווח לא גדול מ25
If SpaceAfter + PPS < 25 Then
'מפעיל פקודת תיקון בלולאה *מס' פסקאות
For P = 1 To Pcol1
'מגדיל רווח אחרי פסקה
With Selection
For B = 1 To .Paragraphs.Count
.Paragraphs(B).Format.SpaceAfter = .Paragraphs(B).Format.SpaceAfter + PPS
Next B
End With
'עבור לפסקה הבאה
Selection.MoveDown wdParagraph, 1
Next P
'אחרת עובר עמוד
Else
'עבור לפסקה הבאה
Endcol2.Select
Selection.MoveDown wdParagraph, 1
MsgBox ("לא עומד בקרטיונים שנקבעו נא נסה לערוך ידנית")
End If
End If
End If
End If
End If
End If
My.Select
Application.ScreenUpdating = True
End Sub
ליישור כל המסמך
Dim WRange, Endcol1, Startcol1, Endcol2, Startcol2, Rcol1, Rcol2 As Range
Dim NumLines, WPage, Pcol1, Pcol2, APcol, PPS, a, i, B, C, P, R, S, G, col1, col2, Acol, Ignore As Double
Public Sub יישור_טורים_בכל_המסמך_חדש()
'עדכון מסך שקר
Application.ScreenUpdating = False
'מספר פסקאות
'תחילה בסוף מסמך מוסיף תו כטור 1
Selection.WholeStory
Set Whole = Selection.Range
Whole.SetRange Start:=Whole.End, End:=Whole.End
Whole.Select
If Selection.PageSetup.TextColumns.Count = 2 Then
ActiveDocument.Range(Start:=Selection.Start, End:=Selection.Start). _
InsertBreak Type:=wdSectionBreakContinuous
Selection.Start = Selection.Start + 1
ActiveDocument.Range(Start:=Selection.End, End:=Selection.End).InsertBreak _
Type:=wdSectionBreakContinuous
With Selection.PageSetup.TextColumns
.SetCount NumColumns:=1
.EvenlySpaced = True
.LineBetween = False
End With
Else
End If
'עובר לפסקה ראשונה
ActiveDocument.Paragraphs(1).Range.Select
'נכנס לללואה על כל המסמך
For R = 1 To ActiveDocument.Paragraphs.Count / 3
'בודק אם יש שני טורים
If Selection.PageSetup.TextColumns.Count = 2 Then
Application.Run MacroName:="עורך_טורים"
Else
Selection.MoveDown wdParagraph, 1
End If
Next R
Application.ScreenUpdating = True
End Sub
Public Sub עורך_טורים()
'עדכון מסך שקר
Application.ScreenUpdating = False
Dim WRange, Endcol2, Startcol1, Rcol1, Rcol2 As Range
Dim NumLines, WPage, Pcol1, Pcol2, APcol, PPS, LM, a, i, B, C, P, S, col1, col2, Acol, Ignore As Double
'שומר תחילת שורה של מיקום נוכחי
Selection.HomeKey Unit:=wdLine
Set My = Selection.Range
'בחר את כל העמוד
Set WRange = ActiveDocument.Bookmarks("\page").Range
'עובר לתחילת עמוד
WRange.SetRange Start:=WRange.Start, End:=WRange.Start + 1
WRange.Select
Set Startpage = Selection.Range
WRange.SetRange Start:=Startpage.End, End:=My.End
'סופר שורות
WRange.Select
SLines = Selection.Range.ComputeStatistics(wdStatisticLines)
'חוזר ומפעיל לולאת בדיקה שאין כותרת'
My.Select
'Startcol1 מגדיר תחילת טור 1
Set Startcol1 = Selection.Range
For S = 1 To SLines - 1
Selection.GoTo What:=wdGoToLine, Which:=wdGoToPrevious, Count:=1, Name:=""
If Selection.PageSetup.TextColumns.Count <> 2 Then
Exit For
Else
Set Startcol1 = Selection.Range
End If
Next
'סוף עמוד
Set WRange = ActiveDocument.Bookmarks("\page").Range
WRange.SetRange Start:=WRange.End - 1, End:=WRange.End
WRange.Select
Set Endpage = Selection.Range
WRange.SetRange Start:=My.Start, End:=Endpage.End
'סופר שורות
WRange.Select
ELines = Selection.Range.ComputeStatistics(wdStatisticLines)
My.Select
'Endcol2מגדיר סוף טור 2
Set Endcol2 = Selection.Range
For S = 1 To ELines - 1
Selection.GoTo What:=wdGoToLine, Which:=wdGoToNext, Count:=1, Name:=""
If Selection.PageSetup.TextColumns.Count <> 2 Then
Exit For
Else
Set Endcol2 = Selection.Range
End If
Next
'מספר שורות כולל שני טורים
Set WRange = Selection.Range
WRange.SetRange Start:=Startcol1.End, End:=Endcol2.End
WRange.Select
NumLines = Selection.Range.ComputeStatistics(wdStatisticLines)
' - col2 מגדיר גובה טור 2
Endcol2.Select
col2 = Endcol2.Information(wdVerticalPositionRelativeToPage)
Selection.EndKey Unit:=wdLine
Set Endcol2 = Selection.Range
' col1מגדיר גובה טור -1
'Endcol1- סוף טור 1
'Startcol2- תחילת טור2
Startcol1.Select
For i = 1 To NumLines
Selection.GoTo What:=wdGoToLine, Which:=wdGoToNext, Count:=1, Name:=""
If col1 > Selection.Information(wdVerticalPositionRelativeToPage) Then
Set Startcol2 = Selection.Range
Exit For
Else
col1 = Selection.Information(wdVerticalPositionRelativeToPage)
Set Endcol1 = Selection.Range
End If
Next
'סוף טור 1 = סוף שורה
Endcol1.Select
Selection.EndKey Unit:=wdLine
Set Endcol1 = Selection.Range
'Acol מגדיר הפרש בין טורים
If col1 > col2 Then Acol = col1 - col2
If col1 < col2 Then Acol = col2 - col1
'בודק אם טורים ישרים
If Acol < 0.05 Then
'עובר לעמודה הבאה
Endcol2.Select
Selection.MoveDown wdParagraph, 1
Else
'Pcol1 - מספר פסקאות טור 1
WRange.SetRange Start:=Startcol1.Start, End:=Endcol1.End - 2
WRange.Select
Set Rcol1 = Selection.Range
Rcol1.Select
Pcol1 = (Rcol1.ComputeStatistics(wdStatisticParagraphs))
'Pcol2 - מספר פסקאות טור 2
WRange.SetRange Start:=Startcol2.Start, End:=Endcol2.End - 2
WRange.Select
Set Rcol2 = Selection.Range
Rcol2.Select
Pcol2 = (Rcol2.ComputeStatistics(wdStatisticParagraphs))
If Pcol1 > Pcol2 Then
'עורך טור1
' PPS - מחלק הפרש בין פסקאות
PPS = Acol / Pcol1
'עבור לשורה ראשונה בטור
Startcol1.Select
' 'אם טור 1 ארוך מ2
If col1 > col2 Then
'בודק אם רווח לא קטן מ2.5
If SpaceAfter - PPS > 2.5 Then
'מפעיל פקודת תיקון בלולאה *מס' פסקאות
For P = 1 To Pcol1
'מקטין רווח אחרי פסקה
With Selection
For B = 1 To .Paragraphs.Count
.Paragraphs(B).Format.SpaceAfter = .Paragraphs(B).Format.SpaceAfter - PPS
Next B
End With
'עבור לפסקה הבאה
Selection.MoveDown wdParagraph, 1
Next P
'אחרת עורך טור 2
Else
If Pcol2 = 0 Then
'אחרת עובר עמוד
Endcol2.Select
Selection.MoveDown wdParagraph, 1
Else
PPS = Acol / Pcol2
'עבור לשורה ראשונה בטור 2
Startcol2.Select
'בודק אם רווח לא גדול מ25
If SpaceAfter + PPS < 25 Then
'מפעיל פקודת תיקון בלולאה *מס' פסקאות
For P = 1 To Pcol2
'מוסיף רווח אחרי פסקה
With Selection
For B = 1 To .Paragraphs.Count
.Paragraphs(B).Format.SpaceAfter = .Paragraphs(B).Format.SpaceAfter + PPS
Next B
End With
'עבור לפסקה הבאה
Selection.MoveDown wdParagraph, 1
Next P
'אחרת עובר עמוד
Else
'עבור לפסקה הבאה
Endcol2.Select
Selection.MoveDown wdParagraph, 1
End If
End If
End If
'אם טור 2 ארוך מ1
ElseIf col1 < col2 Then
'בודק אם רווח לא גדול מ25
If SpaceAfter + PPS < 25 Then
'מפעיל פקודת תיקון בלולאה *מס' פסקאות
For P = 1 To Pcol1
'מוסיף רווח אחרי פסקה
With Selection
For B = 1 To .Paragraphs.Count
.Paragraphs(B).Format.SpaceAfter = .Paragraphs(B).Format.SpaceAfter + PPS
Next B
End With
'עבור לפסקה הבאה
Selection.MoveDown wdParagraph, 1
Next P
'אחרת שרווח יהיה גדול מ25 עורך טור 2
Else
If Pcol2 = 0 Then
'אחרת עובר עמוד
Endcol2.Select
Selection.MoveDown wdParagraph, 1
Else
PPS = Acol / Pcol2
'עבור לשורה ראשונה בטור 2
Startcol2.Select
'בודק אם רווח לא קטן מ2.5
If SpaceAfter - PPS > 2.5 Then
'מפעיל פקודת תיקון בלולאה *מס' פסקאות
For P = 1 To Pcol2
'מקטין רווח אחרי פסקה
With Selection
For B = 1 To .Paragraphs.Count
.Paragraphs(B).Format.SpaceAfter = .Paragraphs(B).Format.SpaceAfter - PPS
Next B
End With
'עבור לפסקה הבאה
Selection.MoveDown wdParagraph, 1
Next P
'אחרת עובר עמוד
Else
'עבור לפסקה הבאה
Endcol2.Select
Selection.MoveDown wdParagraph, 1
End If
End If
End If
End If
'אם טור 2 רב פסקאות או שווה
ElseIf Pcol2 > Pcol1 Or Pcol2 = Pcol1 Then
'עורך טור 2
'מחלק הפרש בין פסקאות
PPS = Acol / Pcol2
'עבור לשורה ראשונה בטור 2
Startcol2.Select
'אם טור 1 ארוך מ2
If col1 > col2 Then
'בודק אם רווח לא גדול מ25
If SpaceAfter + PPS < 25 Then
'מפעיל פקודת תיקון בלולאה *מס' פסקאות
For P = 1 To Pcol2
'מוסיף רווח אחרי פסקה
With Selection
For B = 1 To .Paragraphs.Count
.Paragraphs(B).Format.SpaceAfter = .Paragraphs(B).Format.SpaceAfter + PPS
Next B
End With
'עבור לפסקה הבאה
Selection.MoveDown wdParagraph, 1
Next P
'אחרת עורך טור 1
Else
If Pcol1 = 0 Then
'אחרת עובר עמוד
Endcol2.Select
Selection.MoveDown wdParagraph, 1
Else
' PPS - מחלק הפרש בין פסקאות
PPS = Acol / Pcol1
'עבור לשורה ראשונה בטור
Startcol1.Select
'בודק אם רווח לא קטן מ2.5
If SpaceAfter - PPS > 2.5 Then
'מפעיל פקודת תיקון בלולאה *מס' פסקאות
For P = 1 To Pcol1
'מקטין רווח אחרי פסקה
With Selection
For B = 1 To .Paragraphs.Count
.Paragraphs(B).Format.SpaceAfter = .Paragraphs(B).Format.SpaceAfter - PPS
Next B
End With
'עבור לפסקה הבאה
Selection.MoveDown wdParagraph, 1
Next P
'אחרת עובר עמוד
Else
'עבור לפסקה הבאה
Endcol2.Select
Selection.MoveDown wdParagraph, 1
End If
End If
End If
'אם טור 2 ארוך מ1
ElseIf col2 > col1 Then
'בודק אם רווח לא קטן מ2.5
If SpaceAfter - PPS > 2.5 Then
'מפעיל פקודת תיקון בלולאה *מס' פסקאות
For P = 1 To Pcol2
'מקטין רווח אחרי פסקה
With Selection
For B = 1 To .Paragraphs.Count
.Paragraphs(B).Format.SpaceAfter = .Paragraphs(B).Format.SpaceAfter - PPS
Next B
End With
'עבור לפסקה הבאה
Selection.MoveDown wdParagraph, 1
Next P
'אחרת עורך טור 1
Else
If Pcol1 = 0 Then
'אחרת עובר עמוד
Endcol2.Select
Selection.MoveDown wdParagraph, 1
Else
' PPS - מחלק הפרש בין פסקאות
PPS = Acol / Pcol1
'עבור לשורה ראשונה בטור
Startcol1.Select
'בודק אם רווח לא גדול מ25
If SpaceAfter + PPS < 25 Then
'מפעיל פקודת תיקון בלולאה *מס' פסקאות
For P = 1 To Pcol1
'מגדיל רווח אחרי פסקה
With Selection
For B = 1 To .Paragraphs.Count
.Paragraphs(B).Format.SpaceAfter = .Paragraphs(B).Format.SpaceAfter + PPS
Next B
End With
'עבור לפסקה הבאה
Selection.MoveDown wdParagraph, 1
Next P
'אחרת עובר עמוד
Else
'עבור לפסקה הבאה
Endcol2.Select
Selection.MoveDown wdParagraph, 1
End If
End If
End If
End If
End If
'עובר לעמודה הבאה
Endcol2.Select
Selection.MoveDown wdParagraph, 1
End If
'עובר לעמודה הבאה
Endcol2.Select
Selection.MoveDown wdParagraph, 1
Application.ScreenUpdating = True
End Sub
ושאר הקודים בקובץ המצ"ב