我使用 MS Excel 2007。
我在宏中有以下代码,它在 Cell 中创建两个选项按钮(不是活动的X)B25
。
Range("B25").Select
ActiveSheet.OptionButtons.Add(129.75, 540, 24, 20.25).Select
Selection.Name = " Select1Button "
Range("B25").Select
ActiveSheet.OptionButtons.Add(225.75, 540, 79.5, 21.75).Select
Selection.Name = " Select2Button "
有没有办法让宏检查单元格“B25”中是否已经存在,如果存在则不执行任何操作并完成宏的其余部分,如果不存在则按照上述说明创建它们?
就像是:
In CellB25 does "Select1Button" & "Select2Button" Exist?
Yes = Then ignore the ActiveSheet.OptionButtons.Add code and continue to run
the rest of the macro code.
No - Then run the ActiveSheet.OptionButtons.Add code and continue to run the
rest of the macro code.
我已经在这个问题上呆了好几个小时了!
答案1
我想向您提出两部分解决方案。
第一部分将帮助您在单元格中创建Option Button
。
和第二部分将帮助您确定Option Button
已点击的内容,以执行进一步的操作。
第1部分:
Two Option buttons
这个 VBA(宏)将帮助您在单元格C1
、D1
组/框架中创建。
Sub AddOptionButtons()
Dim btn1 As OptionButton
Dim btn2 As OptionButton
Dim btn3 As OptionButton
Dim grbox As GroupBox
Dim t As Range
Dim s As Range
Dim i As Integer
ActiveSheet.OptionButtons.Delete
ActiveSheet.GroupBoxes.Delete
For i = 1 To 1 Step 1
Set t = ActiveSheet.Range(Cells(i, 3), Cells(i, 3))
Set s = ActiveSheet.Range(Cells(i, 4), Cells(i, 4))
Set btn1 = ActiveSheet.OptionButtons.Add(t.Left, t.Top, t.Width, t.Height)
Set btn2 = ActiveSheet.OptionButtons.Add(s.Left, s.Top, s.Width, s.Height)
Set grbox = ActiveSheet.GroupBoxes.Add(t.Left, t.Top, t.Width + 50, t.Height)
With btn1
.Caption = ""
.Display3DShading = True
.LinkedCell = "E" & i
End With
With btn2
.Caption = ""
.Display3DShading = True
End With
With grbox
.Caption = "My Group"
.Visible = True
End With
Next i
End Sub
怎么运行的:
- 将此代码复制并粘贴为标准模块。
For i = 1 To 1 Step 1
确定2 Option Buttons
将在中创建Row 1
。- 如果您需要创建
4 Option Buttons
它应该是,For i = 1 To 2 Step 1
。 ActiveSheet.Range(Cells(i, 3)
确定i
是Row value
且3
是Column
,都是可编辑的。Lined Cell to Option Buttons
是E1
,可编辑。
第2部分:
此宏将帮助您确定Option Button
已点击的内容以采取进一步的操作。
Sub TheSelectCase()
Select Case Range("E1").Value
Case 1
Your Code for further action.
Case 2
Your Code for further action.
End Select
End Sub
答案2
草稿代码:
public sub createoptionbutton(xname,a,b,c,d)
dim obj as object
xname=trim(xname)
for each obj in activesheet.optionbuttons
if obj.name=xname then exit sub
next
activesheet.optionbuttons.add(a,b,c,d).select
selection.name=xname
end sub
根据需要进行编辑。
PS. 在创建选项框之前,您不需要选择任何单元格 - 没关系。只需指向特定工作表而不是 ActiveSheet。我建议另外设置 GroupBox 属性。
PPS。应要求拉杰什·S- 仅检查选项按钮存在的函数:
public function optionbuttonexists(xname) as boolean
dim obj as object
xname=trim(xname)
for each obj in activesheet.optionbuttons
if obj.name=xname then
optionbuttonexists = true
exit sub
end if
next
end function
...和后向函数
public function optionbuttonabsent(xname) as boolean
dim obj as object
xname=trim(xname)
for each obj in activesheet.optionbuttons
if obj.name=xname then exit sub
next
optionbuttonabsent=true
end function
最后一个函数可以解决作者的任务
if optionbuttonabsent(" Select2Button ") then
ActiveSheet.OptionButtons.Add(225.75, 540, 79.5, 21.75).Select
Selection.Name = " Select2Button "
end if