Objetke ausrichten ohne (bzw. mit festem) Abstand
#2
Hallo Andreas,

abru schrieb:...Finde ich die Funktion nicht, gibt es das nicht, oder bin ich durch mein Satzprogramm Calamus nur einfach viel zu verwöhnt?

ich habe die Funktion auch nicht gefunden.
Falls auch kein anderes Forenmitglied die Funktion findet, kannst Du es mit einem Makro versuchen:

[Bild: habstandj0omp.gif]

Code:
Sub HorizontalerAbstand()
    
    Dim PosStID()
    If ActiveSelectionRange.Shapes.Count < 2 Then Exit Sub
    ActiveDocument.Unit = cdrMillimeter

    AbstandS = InputBox("Abstand in Millimeter", "Abstand", "1")
    If AbstandS = "" Then Exit Sub
    Abstand = Val(AbstandS)
    Dim s1 As Shape, s2 As Shape
    i = ActiveSelectionRange.Shapes.Count
    ReDim PosStID(0 To i - 1, 0 To 1)
    i = 0
    For Each s In ActiveSelectionRange.Shapes
        
            PosStID(i, 0) = s.PositionX
            PosStID(i, 1) = s.StaticID
            i = i + 1
      
    Next
    Call QuickSortMultiDim(PosStID)
    ActiveDocument.BeginCommandGroup "Abstand einstellen"
    For i = 1 To UBound(PosStID)
        Set s1 = ActivePage.FindShape(StaticID:=PosStID(i - 1, 1))
        Set s2 = ActivePage.FindShape(StaticID:=PosStID(i, 1))
        s2.LeftX = s1.RightX + Abstand
    Next i
    ActiveDocument.EndCommandGroup
    
End Sub

'Quelle: Dieter Otter
'https://www.vbarchiv.net/tipps/tipp_1881-2-dimensionales-array-nach-beliebiger-spalte-sortieren.html
Public Sub QuickSortMultiDim(vSort As Variant, _
  Optional ByVal index As Integer = 1, _
  Optional ByVal lngStart As Variant, _
  Optional ByVal lngEnd As Variant)

  ' Wird die Bereichsgrenze nicht angegeben,
  ' so wird das gesamte Array sortiert

  If IsMissing(lngStart) Then lngStart = LBound(vSort)
  If IsMissing(lngEnd) Then lngEnd = UBound(vSort)

  Dim i As Long
  Dim j As Long
  Dim h As Variant
  Dim x As Variant
  Dim u As Long
  Dim lb_dim As Integer
  Dim ub_dim As Integer

  ' Anzahl Elemente pro Datenzeile
  lb_dim = LBound(vSort, 2)
  ub_dim = UBound(vSort, 2)

  i = lngStart: j = lngEnd
  x = vSort((lngStart + lngEnd) / 2, index - 1)

  ' Array aufteilen
  Do

    While (vSort(i, index - 1) < x): i = i + 1: Wend
    While (vSort(j, index - 1) > x): j = j - 1: Wend

    If (i <= j) Then
      ' Wertepaare miteinander tauschen
      For u = lb_dim To ub_dim
        h = vSort(i, u)
        vSort(i, u) = vSort(j, u)
        vSort(j, u) = h
      Next u
      i = i + 1: j = j - 1
    End If
  Loop Until (i > j)

  ' Rekursion (Funktion ruft sich selbst auf)
  If (lngStart < j) Then QuickSortMultiDim vSort, index, lngStart, j
  If (i < lngEnd) Then QuickSortMultiDim vSort, index, i, lngEnd
End Sub

Gruß

Koter
Zitieren



Nachrichten in diesem Thema
Objetke ausrichten ohne (bzw. mit festem) Abstand - von koter - 14.07.2018, 12:52

Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Ausrichten an Strecke Boerni 9 1.726 12.10.2024, 12:55
Letzter Beitrag: koter
  Ausrichten von Kurvenobjekten Boerni 7 1.475 19.06.2024, 17:31
Letzter Beitrag: Boerni
  VBA Objekte ausrichten fremoikaner 12 2.375 06.06.2024, 14:30
Letzter Beitrag: koter
  Makro - Text an Rechteck ausrichten benni313 5 1.493 31.01.2024, 09:20
Letzter Beitrag: benni313
  Häkchen bei "An Hilfslinie ausrichten" fixieren martens 15 3.198 16.10.2023, 18:55
Letzter Beitrag: martens
  Mit oder ohne 3 mm Beschnitt? Ramsi 1 738 30.01.2023, 21:38
Letzter Beitrag: mvm
Photo Bogenschrift am Objekt ausrichten ist weg ? panzerauto 6 2.155 08.08.2022, 18:24
Letzter Beitrag: panzerauto
  Objektselektion toleranter einstellen (x Pixel Abstand) coreluser 1 1.144 25.07.2021, 09:13
Letzter Beitrag: norre
  Kästchen mit gleichem Abstand und Größe anorak 3 1.533 13.05.2021, 12:50
Letzter Beitrag: norre
  Objekt Anordnung / Abstand corely 1 1.377 25.04.2021, 14:05
Letzter Beitrag: Piet