- Aug 14, 2018
- Office Version
I am trying to set the .top property of a shape. This is my code. In the line Sh.Top t, I get an invalid use of property with the .top highlighted. Can someone tell me what is wrong it please?
Sub Move_Shape() Dim Total As Range, ws As Worksheet, Sh As Shape, NewShape As Shape, x As Long, t As Long Dim TTop As Long, TLeft As Long, txtMainExists As Boolean, lRow As Long Set ws = ThisWorkbook.Worksheets("ACA_Quoting") x = Cells(Rows.Count, "H").End(xlUp).Row t = Cells(x, "h").Top ' Select Case lRow ' Case Is = 68 ' x = 560.5 ' Case Is = 68 ' x = 627 ' Case Else ' x = 650 'End Select ' If lRow = 68 Then ' x = 560.5 ' Else: x = 645.5 'End If For Each Sh In ws.Shapes Debug.Print Sh.Type Select Case Sh.Name Case "cmdAddRatio", "cmdCustomSign", "cmdGsign", "cmdAsign", "cmdNoSign", "cmdSaveToPdf" Sh.Top t Case "txtMain" 'name your first textbox, the one you want to move, to something unique. I used "txtMain" txtMainExists = True TTop = Sh.Top 'record position TLeft = Sh.Left Sh.Top t Sh.Copy 'make a copy ws.Paste Set NewShape = ws.Shapes(ws.Shapes.Count) 'pasted textbox is the last shape With NewShape .Top = TTop 'move the copy to the previous position of txtMain .Left = TLeft .OLEFormat.Object.Object.Text = .Name & " (a copy of txtMain)" End With End Select Next Sh If Not txtMainExists Then MsgBox "txtMain is missing!", vbCritical End If End Sub