告诉宏检查对象是否存在,如果是则执行 A,如果不存在则执行 B。

告诉宏检查对象是否存在,如果是则执行 A,如果不存在则执行 B。

我使用 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(宏)将帮助您在单元格C1D1组/框架中创建。

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

怎么运行的:

  1. 将此代码复制并粘贴为标准模块。
  2. For i = 1 To 1 Step 1确定2 Option Buttons将在中创建Row 1
  3. 如果您需要创建4 Option Buttons它应该是,For i = 1 To 2 Step 1
  4. ActiveSheet.Range(Cells(i, 3)确定iRow value3Column,都是可编辑的。
  5. Lined Cell to Option ButtonsE1,可编辑。

第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

相关内容