2016-12-21 7 views
0

これは明白なことですが、マクロで変数として押されたコマンドボタンの名前を使用したいと思います。マクロは、ボタンの名前にセルの値を設定するだけで簡単です。したがって、ボタンキャプション「10」が押されると、セルの値は「10」になります。同じマクロがすべての数字ボタンのキャプション/名前で機能する必要があります。 もう一度、これが明らかな場合はごめんなさい!ボタンのキャプションを変数として使用

+0

Application.Callerはここで役立ちますが、フォームボタンでなければなりません。 –

+0

@EEM何もありません、ウェブを検索しようとしましたが、これでどこにも行けませんでした – Jokru

答えて

1

これは、フォームボタンでは動作しますが、ActiveXボタンでは動作しません。

Sub Button1_Click() 

    If Not IsError(Application.Caller) Then 

     Dim obj2 As Object 
     Set obj2 = ActiveSheet.Shapes.Item(Application.Caller) 
     Debug.Print obj2.AlternativeText 
    End If 
End Sub 

が、あなたの質問には、コマンドボタン(ActiveXの品種)について尋ね、これはより複雑である、我々は形を見つけ、その後、コマンドボタンへの参照を取得するためにOLEFormatとのIDispatchの二つの層を経由でドリルダウンする必要がありますその後、WithEventsを使用してイベントハンドラを起動します。

Option Explicit 

'* Inside Sheet module 

Private WithEvents mcmd As MSForms.CommandButton 

Private Sub Initialise() 
    Dim obj As Object 
    Set obj = Me.Shapes.Item("CommandButton1") 
    Set mcmd = obj.OLEFormat.Object.Object 

End Sub 

Private Sub mcmd_Click() 

    Debug.Print mcmd.Caption 

End Sub 

悲しいことに、悲しいことに、私が思うすべてのコマンドボタンでこのようなコードを初期化する必要があります。

+0

私の謝罪はフィンランド語で、違いは分かりませんでしたが、非ActiveXボタン、それは完全に動作します。 – Jokru

+0

そして私は明らかに私のコメントを編集できないので、ありがとう! – Jokru

+0

あなたの評判が高くなったらコメントを編集できます。だから、私はあなたがStackOverflowに戻ることを願っています。 –