我有一个由两张表组成的 Excel 电子表格(Sheet1
and Sheet2
)。
在每张纸上我都有一个Button 1
.
为了将此按钮移动到Range("D9:E11")
在两张表中,我使用以下 VBA 来引用解决方案here https://stackoverflow.com/questions/59422100/multiple-object-expression-in-with-function-vba:
Sub Sample()
MoveButton Sheet2, "Button 1", Sheet1
End Sub
Sub MoveButton(sh As Worksheet, btnName As String, Optional shB As Worksheet)
Dim Range_Position As Range
Set Range_Position = sh.Range("D9:E11")
With sh.Buttons(btnName)
.Top = Range_Position.Top
.Left = Range_Position.Left
.Width = Range_Position.Width
.Height = Range_Position.Height
.Text = "Button"
End With
If Not shB Is Nothing Then
With shB.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
到目前为止,这一切都很完美。
然而,现在这个 Excel 文件会变得更大,我将拥有更多的工作表(例如 30 张工作表),而不是两张工作表。在这种情况下,我必须将所有这些工作表添加到Sub Sample ()
.
我需要在上面的代码中更改什么,以使其独立于纸张数量,以便按钮移动到Range("D9:D11")
在所有床单中,无论我有多少张?
这很简单。遵循相同的逻辑并声明一个Optional
布尔变量说,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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)