2011-10-20 45 views
0

我已经提交的问题上Excel - Autoshape get it's name from cell (value)但每次我的回答得到的删除,我会打开新的....请不要立即删除Excel中 - 方形更改名称时,从列表改变价值

这是文件和工作正常,但我现在只使用方形

File

的方式和home1,HOME2,OFFICE1,office2,stair1,stair2 ..指示的位置,如果用户改变家中的列表构建它的变化只有那个有这个名字而不是其他人的广场......?或办公室到电梯只有办公室的形状更新

与形状此列中可以被删除,只留下B产品名称和C号我只用正方形

遗憾不知道这么多关于VBA

支票影像

image

回答

0

这可以在形状工作表_Change事件来实现。将此添加到Shapes工作表vba

Private Sub Worksheet_Change(ByVal Target As Range) 
    Dim rng As Range 
    Dim shp As Shape 
    Dim nw As Variant 
    Dim old As Variant 

    ' in case there is an error... 
    On Error GoTo CleanUp 
    Set rng = Intersect(Target, [Shape]) 
    If Not rng Is Nothing Then 
     ' Save new name 
     nw = Target 
     ' Prevent events firing while we change sheet values 
     Application.EnableEvents = False 
     ' Get previous name 
     Application.Undo 
     old = Target 
     ' Restore new name 
     Target = nw 
     ' Rename selected Shapes 
     For Each shp In Me.Shapes 
      If shp.Name Like old & "#*" Then 
       shp.Name = nw & Mid(shp.Name, Len(old) + 1) 
      End If 
     Next 
    End If 
CleanUp: 
    ' Re-enable events 
    Application.EnableEvents = True 
End Sub 
+0

谢谢,这真是太棒了...将修改使用第二列而不是数字字母? – Links

+0

只需更改'shp.Name像旧的&##“'shp.Name像旧的&”*“。然后任何以旧名称开头的形状名称将被更改 –

+0

如果这解决了您的问题,您应该接受答案(请单击打勾) –