dpaton05
Well-known Member
- Joined
- Aug 14, 2018
- Messages
- 2,375
- Office Version
- 365
- 2016
- Platform
- Windows
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?
VBA Code:
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