2011-10-20 62 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

如果這解決了您的問題,您應該接受答案(請單擊打勾) –