2017-06-02 11 views
1

ワークシートに複数のボタンがあり、それぞれにキャプションが設定されています。私はこのような機能を実装したい:ボタンをクリックすると、マクロが実行され、特定の行がキャプションを持つ行にフィルタリングされるので、プロパティのキャプションを取得する必要があります。マクロの内側。VBAが今クリックしたボタンのプロパティを取得できません

このような私の擬似コード:

Sub filterPM() 
    Dim capBt as String 
    'get button caption as capBt 
    ActiveSheet.Range(...).Autofilter(...,criterial=capBt,...) 
End Sub 

私は一つの解決策はApplication.Callerを使用することです見つけることが起こったが、私はそれから適切なキャプションを取得することはできません、オブジェクトがbutton134のようなものですデフォルトのキャプションを返しますが、ボタンを作成したときに設定したキャプションではありません。

どうすればいいですか?

答えて

1

代替テキストを使用できます。 Application.Callerによって返される図形の名前を使用して、最初にShapeオブジェクトを取得してみてください。その後、あなたは簡単にその形状のaltテキストにアクセスすることができます。

Sub ButtonClick() 
    Dim btn As Shape 
    Dim altText As String 

    Set btn = ThisWorkbook.Worksheets("Sheet1").Shapes(Application.Caller) 

    altText = btn.AlternativeText 
    ActiveSheet.Range(...).Autofilter(...,criterial=altText,...) 
End Sub 
0

はこれを試してみてください:

capBt = Worksheets("Sheet1").Buttons("Button 1").Text 
+0

OPが特別に質問しない限り、理想的には、「選択」を使用するソリューションは提供しません – CallumDA

0

シェイプは、キャプションプロパティを持っていません。 .Captionプロパティを持つActiveSheet.Buttonsオブジェクトを使用してアクセスする必要があります。

capBt = Sheet1.Buttons(Application.caller).Caption 

ただし、このマクロはボタンにのみ割り当てられ、他の種類の図形には割り当てられません。

関連する問題