' ' Component group delta move ' ' (c) JTA 2010-01-28 ' Option Explicit Sub Main Dim comp As Component Dim CurrX As Double, CurrY As Double, deltaX As Double, deltaY As Double Dim sDelta As String, c As String, sTmp As String Dim i As Integer Dim bOk, bIsGlued As Boolean Dim comps As Object Set comps = Document.GetObjects(ppcbObjectTypeComponent, "", True) deltaY = 0 deltaX = 0 If Not comps Is Nothing Then sDelta = InputBox("Enter delta X, delta Y", "Delta value", "0.0 0.0") If sDelta = "" Then Exit Sub End If sDelta = Trim(sDelta) i = 1 i = GetNumber(sDelta, i, deltaX) While Mid(sDelta, i, 1) = " " i = i + 1 Wend i = GetNumber(sDelta, i, deltaY) 'MsgBox "deltaX = " & deltaX & " deltaY = " & deltaY Application.LockServer For Each comp In comps CurrX = comp.PositionX CurrY = comp.PositionY CurrX = CurrX + deltaX CurrY = CurrY + deltaY bIsGlued = comp.Glued If bIsGlued Then comp.Glued = False End If comp.Move(CurrX, CurrY) If bIsGlued Then comp.Glued = True End If Next comp Application.UnlockServer End If End Sub Private Function GetNumber(s As String, i As Integer, ByRef result As Double) As Integer Dim c As String, sTmp As String Dim bOk As Boolean sTmp = "" Do bOk = False c = Mid(s, i, 1) If (i <= Len(s)) And InStr("0123456789+-.,", c) <> 0 Then bOk = True End If i = i + 1 If bOk Then sTmp = sTmp + c End If Loop While bOk sTmp = Replace(sTmp, ".", ",") result = CDbl(sTmp) GetNumber = i End Function