View Single Post
 
Old 02-19-2024, 11:37 PM
Guessed's Avatar
Guessed Guessed is offline Windows 10 Office 2016
Expert
 
Join Date: Mar 2010
Location: Canberra/Melbourne Australia
Posts: 4,176
Guessed has a brilliant futureGuessed has a brilliant futureGuessed has a brilliant futureGuessed has a brilliant futureGuessed has a brilliant futureGuessed has a brilliant futureGuessed has a brilliant futureGuessed has a brilliant futureGuessed has a brilliant futureGuessed has a brilliant futureGuessed has a brilliant future
Default

On my machine I tested it with consistently sized text (first word same as rest of paragraph). Since your document has a differently sized first word you are getting an offset. Therefore the code would need to be adapted to position the frame higher and the size of this offset will vary depending on the relative size difference of first/rest of paragraph.

This is my attempt to show what might work. I've included a line so it is easier to see where the frame is. That line could be disabled/removed once you have it working correctly. You may need to fiddle with parameters to get the offset that works for your specific sizes and typefaces.
Code:
Sub DropCapMeHebrew()
  Dim aFrame As Frame, aPara As Paragraph, aWord As Range, iOffset As Integer
  For Each aPara In Selection.Range.Paragraphs
    If aPara.Range.Frames.Count = 0 Then
      Set aWord = aPara.Range.Words.First
      iOffset = aWord.Font.Size - aPara.Range.Words.Last.Font.Size
      Set aFrame = ActiveDocument.Frames.Add(Range:=aWord)
      With aFrame
        .Borders.OutsideLineStyle = wdLineStyleNone
        .HorizontalDistanceFromText = 2
        .Shading.ForegroundPatternColor = wdColorAqua
        .RelativeVerticalPosition = wdRelativeVerticalPositionParagraph
        .VerticalPosition = .VerticalPosition - iOffset
      End With
    End If
  Next aPara
End Sub
__________________
Andrew Lockton
Chrysalis Design, Melbourne Australia
Reply With Quote