リアは、マクロが割り当てられたフローティングボタンを望んでいます。したがって、彼女が左、右、上、または下に移動しても、ボタンは彼女が作業しているセルの近くにとどまります。リアは、Excelにそのようなボタンを追加する方法があるかどうか疑問に思います。

ボタンの配置を制御するマクロを使用せずにこれを行う方法はありません。 (ブック内で少なくとも1つのマクロ(フローティングボタンがトリガーするマクロ)を既に使用しているため、これは大きな問題にはなりません。)

これを行う方法の詳細に入る前に、本当にこのアプローチを使用したいかどうかを検討する必要があります。たとえば、マクロをショートカットキーまたはクイックアクセスツールバーのボタンに割り当てることができます。どちらのアプローチでも、フローティングボタンを常に再配置する必要がなくなります。

どうしてもボタンルートに行きたい場合は、先に進んで画面上のボタンを作成し、それをマクロにリンクしてください。次に、選択したセルを変更するたびにボタンの位置を変更するイベントハンドラーを作成するだけです。たとえば、ボタンの名前が「ボタン1」であると仮定します。その場合、次のマクロを使用できます:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

With ActiveSheet.Shapes("Button 1")

.Top = Target.Offset(1).Top         .Left = Target.Offset(, 1).Left     End With End Sub

これはイベントハンドラーであるため、適用するワークシートのコードウィンドウに配置する必要があることに注意してください。その結果、ボタンは常に選択したセルの右下隅の近くに移動します。

マクロボタンを作成するには、Active Xコントロールとして、または従来の非ActiveXコントロールとして2つの方法があることにも注意してください。上記のアプローチは、レガシータイプのボタンを使用している場合にうまく機能します。ただし、Active Xコントロールを使用している場合は、マクロを少し変更する必要があります。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

With ActiveSheet.OLEObjects("CommandButton1")

.Top = Target.Offset(1).Top         .Left = Target.Offset(, 1).Left     End With End Sub

唯一の変更は、参照されているオブジェクトにあることに注意してください。適切なイベントハンドラーを配置すると、画面で選択したセルを変更するたびに、ボタンが選択したセルの右下に配置されます。したがって、それは真の「フローティング」ではありません

常に同じ場所にホバリングするボタン。リアの状況では、これは問題ありません。ボタンを、表示しているセル(スクロールバーを使用してスクロールするときなど)ではなく、作業しているセル(選択したセル)の近くに配置したかったからです。

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

link:/ excelribbon-ExcelTipsMacros [ここをクリックして、新しいブラウザタブでその特別なページを開きます]

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(13544)は、Microsoft Excel 2007、2010、2013、2016、2019、およびOffice365のExcelに適用されます。