我的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
然而,这种方法不起作用。
答案 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