これは明白なことですが、マクロで変数として押されたコマンドボタンの名前を使用したいと思います。マクロは、ボタンの名前にセルの値を設定するだけで簡単です。したがって、ボタンキャプション「10」が押されると、セルの値は「10」になります。同じマクロがすべての数字ボタンのキャプション/名前で機能する必要があります。 もう一度、これが明らかな場合はごめんなさい!ボタンのキャプションを変数として使用
0
A
答えて
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
悲しいことに、悲しいことに、私が思うすべてのコマンドボタンでこのようなコードを初期化する必要があります。
Application.Callerはここで役立ちますが、フォームボタンでなければなりません。 –
@EEM何もありません、ウェブを検索しようとしましたが、これでどこにも行けませんでした – Jokru