1
我目前正在处理几张带有大量复选框的Excel工作表。 当你输入一个复选框时,它的名称为CheckBox1,CheckBox2等,但它可以自动重命名它们吗? 在我的代码中,我现在必须将所有复选框重命名为Rij11_1,Rij11_2等。Excel VBA自动重命名复选框
如果可以自动逐行完成,那将节省大量时间。
有人知道如何做到这一点吗?
非常感谢!
此致 马克
我目前正在处理几张带有大量复选框的Excel工作表。 当你输入一个复选框时,它的名称为CheckBox1,CheckBox2等,但它可以自动重命名它们吗? 在我的代码中,我现在必须将所有复选框重命名为Rij11_1,Rij11_2等。Excel VBA自动重命名复选框
如果可以自动逐行完成,那将节省大量时间。
有人知道如何做到这一点吗?
非常感谢!
此致 马克
假设复选框是薄片用代号Sheet 1上
Sub test()
Dim obj As OLEObject, ChkBoxRow as long
ChkBoxRow = 1 'Only change checkboxes with topleft corner in row 1
With Sheet1
'Loop AX controls
For Each obj In .OLEObjects
'Check for checkbox only
If TypeName(obj.Object) = "CheckBox" Then
'Examples to identify location (as suggested by Dick Kusleika)
'ChkBoxRow = obj.TopLeftCell.Row
'ChkBoxCol = obj.TopLeftCell.Column
'ChkBoxAdd = obj.TopLeftCell.Address
'ChkBoxRow = obj.BottomRightCell.Row
'ChkBoxCol = obj.BottomRightCell.Column
'ChkBoxAdd = obj.BottomRightCell.Address
'etc
if obj.TopLeftCell.Row = ChkBoxRow then
obj.Name = "Rij11_" & Right(obj.Name, Len(obj.Name) - 8)
end if
End If
Next obj
End With
End Sub
我已经更新表示一个很好的方法Dick Kusleika指出一天以定位复选框驻留。你可以测试If obj.TopLeftCell.Row = 1 Then
等
嗨奥斯科夫斯,谢谢你的回复。这绝对是一个好的开始,但它并没有完成这项工作,即复选框从1到...编号,并且它们不一定连续放置在一行中。是否可以选择一行并单独重命名该行中的所有复选框?如果我必须分别选择每一行,对我来说没关系。提前感谢!亲切的问候,马克 – Marc 2011-05-20 11:14:35
您好Osknows,请你输入整个代码,因为它应该是?我本人不是程序员,我的答案和Dick Kusleika的回复之间有点混淆。非常感谢!亲切的问候,马克 – Marc 2011-05-20 12:04:45
嗨Osknows,这完美的作品!非常感谢!我刚刚注意到,编号Rij11_9后,我得到Rij11_0,然后它从1开始到9。不应该包含0,并且计数应该超过9,例如从1到27。这可以做到吗?亲切的问候,马克 – Marc 2011-05-20 12:33:44