📌 מה התחדש כאן: אתה בוחר אם לשנות בעמוד אחד, טווח עמודים, או בכל המסמך. בוחר תיבה (עליון או אמצעי). קובע אם להוסיף או להוריד שורות – וזה מתעדכן אוטומטית גם עם התיבה התחתונה עד השוליים. Sub ResizeTextboxFlexible() Dim doc As Document Dim lineHeight As Single Dim linesCount As Integer Dim action As String Dim delta As Single Dim startPage As Integer, endPage As Integer, pageNum As Integer Dim shp As Shape, lastShape As Shape Dim bottomMargin As Single, pageHeight As Single Dim answer As String Dim i As Integer Set doc = ActiveDocument lineHeight = 18 ' גובה שורה (נקודות) – לשנות לפי הפונט ' בחירת טווח עמודים answer = InputBox("על איזה עמודים להחיל?" & vbCrLf & _ "1 = עמוד אחד" & vbCrLf & _ "2 = טווח עמודים" & vbCrLf & _ "3 = כל המסמך", "בחירת טווח") If answer = "1" Then startPage = InputBox("מספר עמוד להתחלה", "בחירת עמוד") endPage = startPage ElseIf answer = "2" Then startPage = InputBox("עמוד ראשון", "טווח עמודים") endPage = InputBox("עמוד אחרון", "טווח עמודים") ElseIf answer = "3" Then startPage = 1 endPage = doc.ComputeStatistics(wdStatisticPages) Else MsgBox "לא נבחרה אפשרות חוקית" Exit Sub End If ' בחירת תיבה Dim boxIndex As Integer boxIndex = InputBox("איזו תיבה בעמוד? (1=עליון, 2=אמצעי)", "בחירת תיבה") ' פעולה action = InputBox("רשום + כדי להוסיף שורות, או - כדי להוריד שורות", "פעולה") linesCount = InputBox("כמה שורות לשנות?", "מספר שורות") delta = lineHeight * linesCount ' מעבר על העמודים For pageNum = startPage To endPage pageHeight = doc.PageSetup.PageHeight bottomMargin = doc.PageSetup.BottomMargin ' התיבה שנבחרה Set shp = doc.GoTo(What:=wdGoToPage, Which:=wdGoToAbsolute, Count:=pageNum).Shapes(boxIndex) Set lastShape = doc.GoTo(What:=wdGoToPage, Which:=wdGoToAbsolute, Count:=pageNum).Shapes(3) ' התחתונה If action = "+" Then shp.Height = shp.Height + delta ' להזיז את האמצעית אם שינית את העליונה If boxIndex = 1 Then doc.GoTo(What:=wdGoToPage, Which:=wdGoToAbsolute, Count:=pageNum).Shapes(2).Top = _ doc.GoTo(What:=wdGoToPage, Which:=wdGoToAbsolute, Count:=pageNum).Shapes(2).Top + delta End If ElseIf action = "-" Then shp.Height = shp.Height - delta If boxIndex = 1 Then doc.GoTo(What:=wdGoToPage, Which:=wdGoToAbsolute, Count:=pageNum).Shapes(2).Top = _ doc.GoTo(What:=wdGoToPage, Which:=wdGoToAbsolute, Count:=pageNum).Shapes(2).Top - delta End If End If ' עדכון התיבה התחתונה עד לשוליים lastShape.Top = doc.GoTo(What:=wdGoToPage, Which:=wdGoToAbsolute, Count:=pageNum).Shapes(2).Top + _ doc.GoTo(What:=wdGoToPage, Which:=wdGoToAbsolute, Count:=pageNum).Shapes(2).Height + 0.5 * 28.35 lastShape.Height = pageHeight - bottomMargin - lastShape.Top Next pageNum MsgBox "בוצע! כל התיבות עודכנו בהתאם." End Sub