web-dev-qa-db-ja.com

Excel VBA:クリックされたボタンの行を取得する

アクティブブックから別のブックに特定の範囲のセルをコピーするボタンをExcelで作成しようとしています。この範囲のコピーは、固定範囲を指定すると完全に機能しますが、クリックされたボタンの行を把握する方法に困惑しています。

すべての行には7個程度のセルが含まれ、8番目のセルにはマクロがアタッチされた図形(ボタン)が含まれます。ユーザーがこのボタンを押すと、押されたボタンを含む行と同じ行にある7つのセルがコピーされる必要があります。

ボタンを押しても実際にはそのセルがアクティブに設定されないため、ActiveCellを使用しても意味がありません。何度も検索しましたが、この値を取得する方法を見つけることができません。クリックしたボタンの行番号がわかれば、残りを自分で把握できます。

16
Jort

ShapeにはTopLeftCellプロパティがあります。これには、形状の左上隅が存在するセルが含まれます。

22
GSerg

ここで言及されている素晴らしい解決策があります: http://www.ozgrid.com/forum/showthread.php?t=33351&p=167317#post167317

上記の投稿からコピーされたゴールデンコード:

Sub Mainscoresheet() 
     ' Mainlineup Macro
    Dim b As Object, cs As Integer 
    Set b = ActiveSheet.Buttons(Application.Caller) 
    With b.TopLeftCell 
        cs = .Column 
    End With 
    MsgBox "Column Number " & cs 
End Sub 
19
FraggaMuffin

すばらしい答えです。ところで、これはRownumberでも機能します!

'Same for rownumbers!
Sub Mainscoresheet() 
     ' Mainlineup Macro
    Dim b As Object, RowNumber As Integer 
    Set b = ActiveSheet.Buttons(Application.Caller) 
    With b.TopLeftCell 
        RowNumber = .Row
    End With 
    MsgBox "Row Number " & RowNumber 
End Sub
6