我正在为Excel中的一个按钮编写代码,目的是获取单击按钮的行号,在给定行号的情况下复制相应的行,然后在单击按钮的原始行下面插入和移动重复的行。见图片,例如:在按下按钮之前,点击这里获取图片。 按下按钮后,点击这里获取图片。
我尝试过根据我在网上找到的类似问题的解决方案(如这里和这里(以及其他地方))对代码进行几次修订,但我无法找到解决重复出现的错误的解决方案,即无法获得工作表类的按钮属性。根据我在网上收集到的有关此错误的信息,当传递给工作表函数的任何参数都不是正确的类型或根本没有意义时,就会发生这种情况。下面我发布了我的代码的两次迭代;
Private Sub CorrugatedR_Click()
Dim b As Object, RowNumber As Integer
ActiveSheet.Activate
Set b = ActiveSheet.Buttons("CorrugatedR")
With b.TopLeftCell
RowNumber = .Row
Rows(RowNumber + 1).Insert Shift:=xlDown
Rows(RowNumber).Copy Rows(RowNumber + 1)
End With
End Sub另一个版本应该做同样的事情(我已经做了很多次了):
Private Sub CorrugatedR_Click()
Dim b As Object, RowNumber As Integer
ActiveSheet.Activate
ActiveSheet.Buttons("CorrugatedR").Select
ActiveSheet.Buttons("CorrugatedR").Copy
b.Paste
With b.TopLeftCell
RowNumber = .Row
End With
Rows(RowNumber + 1).Insert Shift:=xlDown
Rows(RowNumber).Copy Rows(RowNumber + 1)
End Sub一个重要的提示是,最初没有调用按钮本身的名称:ActiveSheet.Buttons("CorrugatedR"),而是实现了ActiveSheet.Buttons(Application.Caller),因为有几个人提出了这个建议,但这给了我另一个错误Application.Caller = error 2023。在进行了研究之后,我认为这些问题都与ether与打字或一些我不知道的东西有关的问题有关;我尝试实现并使用来自解决方案的信息,以解决发现这里的相同错误,但仍然没有成功。我的直觉是,问题可能在我设置b:Set b = ActiveSheet.Buttons("CorrugatedR")的代码中。
我对VBA和Excel还不熟悉,所以我的整个方法本身可能会出错,我非常感谢任何帮助,我已经在这个问题上被困了一段时间了。
发布于 2017-07-13 19:57:36
如果您的代码位于模块中,则此示例代码将工作(用按钮的名称替换CommandButton1 ):
Private Sub example()
MsgBox ActiveSheet.CommandButton1.TopLeftCell.Row
End Sub如果您的代码位于工作表上,则为
Private Sub CommandButton1_Click()
MsgBox Me.CommandButton1.TopLeftCell.Row
End Subhttps://stackoverflow.com/questions/45089320
复制相似问题