根据OptionButton选项自动调整公式

时间:2015-04-07 07:29:03

标签: vba radio-button

我的Excel模型允许用户计算不同国家/地区不同产品类别的交付成本。通过用户表单上的选项按钮进行选择: 第1帧:美国,英国或德国 第2帧:书籍,时装或杂货

让我们说用户选择美国作为国家,书籍作为产品类别。 我现在使用公式,例如salary_USA / 365,而" salary_USA"是预定义的范围名称。 我还复制并粘贴了一个假设表中的某些值:工作表(" Assumptions Books")。范​​围(" E34:J34")。复制

如果用户选择英国,则公式将更改为salary_UK / 365.如果选择德国,则公式将更改为salary_Germany / 365.

同样,如果所选的产品类别是Fashion,则应该是Worksheets(" Assumptions Fashion")。范​​围(" E34:J34")。复制等。

如何使这些命令更灵活,即响应用户的选择?

我想避免为每个组合(USA-Books,USA-Fashion,USA-Grocery,UK-Books,UK-Fashion等)编写一个sub。


我考虑过如下定义变量:

Public Country As String

Private Sub optUSA_Click()

If optUSA.Value = True Then
Country = "USA"

然后在相应的公式中使用此变量:

Sub CalculateCosts()

"salary_" & Country / 365

然而,这种方法不起作用。

1 个答案:

答案 0 :(得分:0)

您可以使用所有按钮调用同一个宏,然后在其中显示用户选择。请查看下面的代码并在您的应用中进行测试。它会告诉您单击了哪个按钮。

  'Procedure to display which button was pressed.
  Sub WhichButton()

     ' Assign the calling object to a variable.
     ButtonName = Application.Caller

     ' Display the name of the button that was clicked.
     Select Case ButtonName

        ' NOTE: When you type the name of the button, note that
        ' Visual Basic is case and space sensitive when comparing                                                
        ' strings. For example, "Button 6" and "button6" are not the 
        ' same.
        Case "Button 6"
        MsgBox Application.Caller & "  was Clicked"

        Case "Button 7"
        MsgBox Application.Caller & " was clicked."

        Case "Button 8"
        MsgBox Application.Caller & " was clicked."

     End Select

  End Sub

您可以在此处找到包含完整信息的代码:http://support.microsoft.com/en-us/kb/143345