כמובן! הנה גרסה מסודרת ומלאה של הקוד המלא של מערכת המאקרו שלך, כולל יצירת הטופס (UserForm) עם כל הפקדים, ועם הקוד שמפעיל אותם — כך שתוכל פשוט להעתיק ולהדביק לעורך ה־VBA של Word.

🧱 שלב 1: יצירת הטופס SmartForm עם פקדים

👇 הפקדים שאתה צריך לגרור מה־Toolbox אל הטופס:

סוג פקד	שם (Name)	Caption / תוכן
Label	lblTitle	הגדרות סימון חכם
TextBox	txtPrefix	(ריק — לשם התחילית)
ComboBox	cmbLength	שורות לפסקה
ComboBox	cmbColor	צבע סימון
CheckBox	chkBold	טקסט מודגש
CheckBox	chkHighlight	סימון רקע
CommandButton	btnApply	סמן פסקאות
CommandButton	btnFindDup	מצא כפילויות
CommandButton	btnDeleteMarked	מחק לפי צבע
CommandButton	btnClose	סגור

שים לב: תוכל לגרור את הפקדים מתוך Toolbox (אם לא מופיע: View > Toolbox)

🧠 שלב 2: קוד הטופס SmartForm

בתוך SmartForm (ה־UserForm שלך), הדבק את הקוד הזה:

Private Sub UserForm_Initialize()

cmbLength.AddItem "שורה אחת"

cmbLength.AddItem "שתי שורות"

cmbLength.AddItem "שלוש שורות"

cmbColor.AddItem "אדום"

cmbColor.AddItem "כחול"

cmbColor.AddItem "ירוק"

cmbColor.AddItem "צהוב"

cmbColor.AddItem "סגול"

End Sub

Private Sub btnApply_Click()

Dim para As Paragraph

Dim regex As Object

Dim prefix As String

Dim linesWanted As Integer

Dim fontColor As Long

prefix = txtPrefix.Text

If prefix = "" Then MsgBox "יש להזין תחילית": Exit Sub

Set regex = CreateObject("VBScript.RegExp")

regex.Pattern = "\b(0?[1-9]|[12][0-9]|3[01])[/-](0?[1-9]|1[0-2])[/-]\d{2,4}\b"

regex.Global = False

Select Case cmbLength.Value

Case "שורה אחת": linesWanted = 1

Case "שתי שורות": linesWanted = 2

Case "שלוש שורות": linesWanted = 3

Case Else: MsgBox "בחר אורך פסקה": Exit Sub

End Select

fontColor = GetColorCode(cmbColor.Value)

For Each para In ActiveDocument.Paragraphs

With para.Range

If Left(Trim(.Text), Len(prefix)) = prefix Then

If CountLines(para) = linesWanted Then

If regex.Test(.Text) Then

If chkHighlight.Value Then .HighlightColorIndex = wdYellow

.Font.Color = fontColor

If chkBold.Value Then .Font.Bold = True

End If

End If

End If

End With

Next para

End Sub

Private Sub btnFindDup_Click()

Dim p1 As Paragraph, p2 As Paragraph

Dim fontColor As Long

fontColor = GetColorCode(cmbColor.Value)

For Each p1 In ActiveDocument.Paragraphs

For Each p2 In ActiveDocument.Paragraphs

If p1.Range.Text = p2.Range.Text And p1.Range.Start <> p2.Range.Start Then

p2.Range.Font.Color = fontColor

End If

Next p2

Next p1

End Sub

Private Sub btnDeleteMarked_Click()

Dim para As Paragraph

Dim fontColor As Long

fontColor = GetColorCode(cmbColor.Value)

For Each para In ActiveDocument.Paragraphs

If para.Range.Font.Color = fontColor Then

para.Range.Delete

End If

Next para

End Sub

Private Sub btnClose_Click()

Unload Me

End Sub

Private Function GetColorCode(colorName As String) As Long

Select Case colorName

Case "אדום": GetColorCode = wdColorRed

Case "כחול": GetColorCode = wdColorBlue

Case "ירוק": GetColorCode = wdColorGreen

Case "צהוב": GetColorCode = wdColorYellow

Case "סגול": GetColorCode = RGB(128, 0, 128)

Case Else: GetColorCode = wdColorAutomatic

End Select

End Function

Private Function CountLines(p As Paragraph) As Integer

Dim rng As Range

Set rng = p.Range

rng.Select

Selection.HomeKey wdLine

Selection.EndKey wdLine, wdExtend

CountLines = Selection.Information(wdFirstCharacterLineNumber) _

- rng.Information(wdStartOfRangeLineNumber) + 1

End Function

🚀 שלב 3: מודול להפעלת הטופס

🚀 שלב 3: מודול להפעלת הטופס

ב־VBA לחץ Insert > Module וכתוב בו:

Sub ShowSmartForm()

SmartForm.Show

End Sub

כעת תוכל להפעיל את הטופס דרך Alt + F8 → ShowSmartForm

אם אתה רוצה שאכין גם קובץ תבנית .dotm מוכן לשימוש או מדריך גרפי עם צילומי מסך של כל שלב — אני יכול להרכיב לך את זה 🔧

רוצה גם סרגל כפתורים אישי שיפעיל את הכלי מהתפריט העליון של Word? אני בונה גם את זה 😎

מה השלב הבא שתרצה שנעשה? 🎯

אם אתה רוצה שאכין גם קובץ תבנית .dotm מוכן לשימוש או מדריך גרפי עם צילומי מסך של כל שלב — אני יכול להרכיב לך את זה 🔧

רוצה גם סרגל כפתורים אישי שיפעיל את הכלי מהתפריט העליון של Word? אני בונה גם את זה 😎

מה השלב הבא שתרצה שנעשה? 🎯