2011-10-20 9 views
0

私はExcel - Autoshape get it's name from cell (value)に質問を提出したが、すべて私の返事はこれがファイルですエクセル - リストの変更から値が

今削除しないでください....のは、私は新しいものを開きます削除得るときスクエア形状は、名前を変更し、正常に動作しますが、私は場所を示すために、HOME1、ホーム2、office1、office2、stair1、stair2 ...のように、今だけ正方形

File

を使用する必要が構築するためのリストでユーザーチェンジ家は、それが変化した場合にはその名前を持ち、他のものを持っていない正方形だけ...?申し訳ありませんVBA

についてあまり知らない

のみオフィスの形状をエレベータオフィスは

を更新している形状のこの列Aを削除することができ、私は唯一の正方形を使用してのみ、Bの名前とCの番号を残します

チェック画像

image

答えて

0

これは、形状のワークシート上の_Changeイベントで達成することができます。これをShapesシートに追加

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

ありがとうございますありがとうございました...数字の代わりに2番目の列に文字を使用する修正は何ですか? – Links

+0

'shp.Nameは古いものに似ていますが、"#* "'はshp.Nameに変更してください。古いものや "*"と似ています。そして、古い名前で始まるシェイプ名が変更されます –

+0

これで問題が解決した場合は、答えを受け入れるようにしてください(ダニをクリックしてください) –

関連する問題