指定相对于放置触发按钮的单元格的范围

问题描述 投票:0回答:1

我正在尝试构建一个模块化表格,可以在令人作呕的工作表周围复制和粘贴。我正在使用一个宏来构建它,该宏将根据与触发宏的按钮相关的引用来执行任务(这将是表格的集成部分)。

范围的设定非常具有挑战性。我一直在使用下面的宏来测试相对于按钮的范围设置。所有变绿线路都不会触发。

X 是位置为 -1,-1 的单元格
A 是位于 (1,-1: 23,-1) 的范围

在下面的代码中,我首先尝试不选择按钮单元。

然后我尝试选择纽扣电池。
选择按钮单元格后,我使用了偏移函数和

offset.resize
选项。

我在这里找到了一些帖子,描述了相对于活动单元格的设置范围,但这些帖子总是包含该范围内的活动单元格,这对此不起作用,因为按钮需要清楚地清除数据。

由于所有这些尝试中的普遍因素是

Application.Caller
,这不是正确的短语吗?

Sub RelateiveBttn()

Dim Arange As Range, XRange As Range
 
'Set Arange = ActiveSheet.Shapes(Application.Caller).Range(Offset(1, -1)): ActiveSheet.Shapes(Application.Caller).Range (Offset(23, -1))

ActiveSheet.Shapes(Application.Caller).TopLeftCell.Select
 
'Set XRange = Range(ActiveCell.Offset(-1, -1))
'Set Arange = ActiveCell.Offset(1, -1).Resize(23, 0)
'Set Arange = Range(ActiveCell.Offset(1, -1), ActiveCell.Offset(23, -1))

Arange.Select

XRange.Select

End Sub
excel vba button
1个回答
2
投票

假设

Sub RelateiveBttn()
被表单按钮调用,请参阅代码中的注释来解释所发生的情况:

Sub RelateiveBttn()
    
    ' get the Button
    Dim shp As Shape
    Set shp = Me.Shapes(Application.Caller)
    
    ' get the Range that the Button is in (top left cell of the range ... you can also do .BottomRightCell)
    Dim rng As Range
    Set rng = shp.TopLeftCell
    
    ' get a Range relative to the Button's top left cell
    Dim rngRelativeToButton
    Set rngRelativeToButton = rng.Offset(1, 1).Resize(2, 2)
    
    ' show it worked!
    Debug.Print rngRelativeToButton.Address
End Sub

...这只会让您获得范围...不会移动任何东西

© www.soinside.com 2019 - 2024. All rights reserved.