2017-07-21 11 views
0

私はこれに対する答えを探しましたが見つかりませんでした。私は動的にボタンに名前を付けるために、次のコードを持っている:「E5」が順番に「A5」にリンクされている「D5」、リンクされている数式が変更されたときにプライベートサブを実行します。

Private Sub Worksheet_Change(ByVal Target As Excel.Range) 
If Not Intersect(Target, Range("E5")) Is Nothing Then _ 
Me.Buttons(1).Caption = Range("E5").Value 
End Sub 

- を経由して、すなわち「A5」の変更「E5」のアップデートを、 "D5"。

ユーザーがA5を変更したときにサブが実行されるようにこのコードを変更するにはどうすればよいですか?このページには動的な名前を必要とする複数のボタンが最終的にあるので、シートに変更が加えられたときにプライベートなサブを実行するのが最善の変更です。

ありがとうございました。本当にありがとうございます。

DDT

答えて

0

あなたはあなたのIf Not Intersect(Target, Range("E5")) Is Nothing Then

Private Sub Worksheet_Change(ByVal Target As Range) 

    ' if the cell being changed is A5 
    If Target.Address = Me.Range("$A$5").Address Then 
     ' if E5 is not blank 
     If Me.Range("$E$5").Value2 <> vbNullString Then 
      ' change the buttons Name 
      Me.Buttons(1).Name = Me.Range("$E$5").Value2 
     End If 
    End If 

End Sub 

は、あなたの変更の範囲とRange("E5")の交差点を取得して使用する必要があります。 Range("A5")Range("E5")と決して交差しないので、コードは常にNothingを返し、常に失敗します。

ボタンの名前がに変更されますが、ボタンに表示されるテキストは変更されないことに注意してください。ボタンに異なるテキストを表示させるには、ボタンを選択し、数式バーで数式を=$E$5に設定します。

+0

ありがとう@TheFizh - 完璧な答え。 – DDT

関連する問題