Excel 中的多对象表达式,函数在所有工作表中循环
我有一个Excel电子表格,由两张表组成(Excel 中的多对象表达式,函数在所有工作表中循环,excel,vba,Excel,Vba,我有一个Excel电子表格,由两张表组成(Sheet1和Sheet2)。 在每张纸上我都有一个按钮1 为了在两张图纸中将此按钮移动到范围(“D9:E11”),我使用以下VBA参考解决方案: 到目前为止,所有这些都非常有效 然而,现在这个Excel文件将变得更大,而不是两张表,我将有更多的表(例如30张)。在这种情况下,我必须将所有这些工作表添加到子示例() 我需要在上面的代码中做什么更改才能使其独立于图纸数量,这样无论我有多少张图纸,按钮都会在所有图纸中移动到范围(“D9:D11”)。这非常简
Sheet1
和Sheet2
)。
在每张纸上我都有一个按钮1
为了在两张图纸中将此按钮移动到
范围(“D9:E11”)
,我使用以下VBA参考解决方案:
到目前为止,所有这些都非常有效
然而,现在这个Excel文件将变得更大,而不是两张表,我将有更多的表(例如30张)。在这种情况下,我必须将所有这些工作表添加到
子示例()
我需要在上面的代码中做什么更改才能使其独立于图纸数量,这样无论我有多少张图纸,按钮都会在所有图纸中移动到
范围(“D9:D11”)
。这非常简单。遵循相同的逻辑并声明一个可选的
布尔变量,比如说,AllSheets
Sub Sample()
MoveButton Sheet1, "Button 1", True
End Sub
Sub MoveButton(sh As Worksheet, btnName As String, Optional AllSheets As Boolean)
Dim Range_Position As Range
Dim ws As Worksheet
Set Range_Position = sh.Range("D9:E11")
If AllSheets = True Then
For Each ws In ThisWorkbook.Sheets
With ws.Buttons(btnName)
.Top = Range_Position.Top
.Left = Range_Position.Left
.Width = Range_Position.Width
.Height = Range_Position.Height
.Text = "Button"
End With
Next ws
Else
With sh.Buttons(btnName)
.Top = Range_Position.Top
.Left = Range_Position.Left
.Width = Range_Position.Width
.Height = Range_Position.Height
.Text = "Button"
End With
End If
End Sub
对于代码,我在ws.Buttons(btnName)上出现运行时错误1004,可能是因为没有具有该名称的按钮?调试代码并检查在eOri发现问题时的工作表名称。原因是有一张纸没有这个按钮1。我想知道是否也有办法从代码中排除这一页。是的,有。用ws.Buttons(btnName)检查该按钮是否存在于行
之前。试一试,如果你被卡住了,那么把你试过的代码贴出来,我们会从那里拿走吗?
Sub Sample()
MoveButton Sheet1, "Button 1", True
End Sub
Sub MoveButton(sh As Worksheet, btnName As String, Optional AllSheets As Boolean)
Dim Range_Position As Range
Dim ws As Worksheet
Set Range_Position = sh.Range("D9:E11")
If AllSheets = True Then
For Each ws In ThisWorkbook.Sheets
With ws.Buttons(btnName)
.Top = Range_Position.Top
.Left = Range_Position.Left
.Width = Range_Position.Width
.Height = Range_Position.Height
.Text = "Button"
End With
Next ws
Else
With sh.Buttons(btnName)
.Top = Range_Position.Top
.Left = Range_Position.Left
.Width = Range_Position.Width
.Height = Range_Position.Height
.Text = "Button"
End With
End If
End Sub