Vba 范围。左V/s形状。左

Vba 范围。左V/s形状。左,vba,excel,Vba,Excel,我有一本五页的工作簿。每张纸都定义了一个打印区域,我想在打印区域的右上角插入word art。我正在使用下面的代码。 问题是形状出现在图纸的任何位置,而不是打印区域的右上角。 有什么建议吗 Sub test() Dim col As String, row As Long, rng As Range Dim sht As Worksheet, str_val As String Dim shp As Shape For Each sht In ThisWorkboo

我有一本五页的工作簿。每张纸都定义了一个打印区域,我想在打印区域的右上角插入word art。我正在使用下面的代码。 问题是形状出现在图纸的任何位置,而不是打印区域的右上角。 有什么建议吗

Sub test()

    Dim col As String, row As Long, rng As Range
    Dim sht As Worksheet, str_val As String
  Dim shp As Shape
    For Each sht In ThisWorkbook.Sheets
       str_val = sht.Name & vbNewLine & "YM" & vbNewLine & Date
       sht.Activate

       If ActiveSheet.PageSetup.PrintArea <> vbNullString Then
         col = Split(ActiveSheet.PageSetup.PrintArea, "$")(3)
         row = Range(ActiveSheet.PageSetup.PrintArea).Cells(1).row
         str_val = sht.Name & vbNewLine & "YM" & vbNewLine & Date
         Set rng = Cells(row, col)
         Set shp = ActiveSheet.Shapes.AddTextEffect(msoTextEffect28, str_val, "+mn-lt", 20, msoTrue, msoFalse, rng.Left, rng.Top)

       End If
    Next

End Sub
子测试()
Dim col作为字符串,row作为长度,rng作为范围
以工作表的形式标注sht,以字符串的形式标注str_val
将shp变暗为形状
对于此工作簿中的每个sht。工作表
str_val=sht.Name&vbNewLine&YM&vbNewLine&Date
短促激活
如果ActiveSheet.PageSetup.PrintArea vbNullString,则
col=拆分(ActiveSheet.PageSetup.PrintArea,“$”)(3)
行=范围(ActiveSheet.PageSetup.PrintArea).单元格(1).行
str_val=sht.Name&vbNewLine&YM&vbNewLine&Date
设置rng=单元格(行、列)
设置shp=ActiveSheet.Shapes.AddTextEffect(msoTextEffect28,str_val,“+mn lt”,20,msoTrue,msoFalse,rng.Left,rng.Top)
如果结束
下一个
端接头
谢谢你的调查

这对我很有用:

Sub Tester()

Dim shp As Shape, rngTR As Range, pa As Range
Dim t, l

    Set pa = ActiveSheet.Range(ActiveSheet.PageSetup.PrintArea)
    Set rngTR = pa.Rows(1).Cells(pa.Columns.Count)

    Set shp = ActiveSheet.Shapes.AddTextEffect(msoTextEffect28, _
                     "Hello World", "+mn-lt", 20, msoTrue, _
                     msoFalse, rngTR.Left, rngTR.Top)

     'adjust for shape width
    shp.Left = shp.Left - (shp.Width - rngTR.Width)

End Sub

为什么要将文本添加为形状?使用
单元格(行,列)=str_val
@d-stroyer将文本直接添加到单元格中不是更简单吗?这是项目中的一项要求。记录将形状移动到正确的位置时,您会得到什么样的代码?