在复制/粘贴单元格内容时需要帮助循环选项按钮组

时间:2014-09-06 16:39:54

标签: excel loops excel-vba radio-button vba

我有一个Excel“Sheet1”,带有选项按钮和2个控制按钮(OK,Clear)

本工作表的目的是学习一些带控件的编码。

D6:D14(要复制的内容)

P6:P14(如果选项button1为真,则粘贴此处)

Q6:Q14(如果选项button2为真,则粘贴此处)

同样需要为其余行重复或循环。

这是第6行的代码,选项按钮配对为optionbutton1& 2,3& 4,5& 6等......

Private Sub CommandButton1_Click()

If Sheet1.OptionButton1.Value = True Then
  Range("P6").Select
  ActiveCell.FormulaR1C1 = "=RC[-12]"
  Range("P6").Select
  Range("Q6").Clear

Else

  Range("Q6").Select
  ActiveCell.FormulaR1C1 = "=RC[-13]"
  Range("Q6").Select
  Range("P6").Clear

End If

1 个答案:

答案 0 :(得分:0)

这种方法不够灵活,但使代码更容易。

使用下划线和数字命名每个选项按钮,如下所示:optionButton_1

以相同的方式为每个选项按钮组命名,但数字是单元格所在的行。例如,与单元格D6相关的选项按钮可以是组btnGroup_6

现在,您可以遍历每个选项按钮并使用按钮和组名称轻松确定目标,如下所示:

Private Sub btn_OK_Click()
    Dim oOption As OLEObject
    For Each oOption In Sheet1.OLEObjects
        If oOption.OLEType = 2 Then
            If oOption.Object = True Then
                GroupNumber = Split(oOption.Object.GroupName, "_")(1)
                ButtonNumber = Split(oOption.Name, "_")(1)

                'Test is button is odd or even to determine destination
                If ButtonNumber Mod 2 Then
                    Range("D" & GroupNumber).Copy Destination:=Range("P" & GroupNumber)
                Else
                    Range("D" & GroupNumber).Copy Destination:=Range("Q" & GroupNumber)
                End If
            End If
        End If
    Next oOption
End Sub

测试结果:

enter image description here


enter image description here