许多按钮(用户窗体)控制单个宏根据选择打开不同的用户窗体
many buttons (userform) control a single macro opens a different userforms depending on selection
我创建了用于更新数据库的小 excel 表单。效果很好,尽管工作人员正在做一些奇怪的事情并且必须每周用干净的版本替换 excel。所以我正在考虑创建更新 excel sheet(DutySelection) 的用户表单。
我有很多按钮(用户窗体)A4:A31 将控制单个宏,该宏根据 B4:B31 下拉列表选择
打开 3 个不同的用户窗体
目前,无论我点击哪个按钮,我的代码都只能在 B4 上运行。
EG:B4选择Start,Start窗体打开。 B6选择Finish,Start窗体打开
Sub Duty()
If Sheets("DutySelection").Range("B4,B31") = "Start" Then
frmStart.Show
ElseIf Sheets("DutySelection").Range("B4,B31") = "Duty Type" Then
ReportUpdate.Show
Else: Sheets("DutySelection").Range("B4,B31") = "Finish" 'Then
frmFinish.Show
End If
End Sub
我想我漏掉了一两行,但就是无法在网上找到我需要的东西
Sheet.Range("B4,B31") return 并不像您想象的那样:它 return 是一个由 2 个区域组成的复合区域,区域 1 是单元格 B4区域 2 是单元格 B31。即,与 select 单元格 B4,然后 Ctrl-Clicked 单元格 B31 时得到的结果相同。
我认为您的意思是 "B4:B31",但这也 return 是其他东西:一个数组,其中填充了 B4 到 B31 范围内的所有单元格(的值)。您不能将它与那样的文本字符串进行比较。
您在这里要做的是遍历 B4 和 B31 之间的所有单元格,然后将它们的值与您感兴趣的文本进行比较。
另一个问题是您的代码只对它匹配的第一个文本起作用。因此,如果单元格 B4 包含 "Start",则永远不会对 ElseIf 求值,即使单元格 B5 包含 "Duty Type" 也是如此。处理此问题的最佳方法取决于您如何在 sheet.
的 B 列中获取这些文本
如果我没理解错的话,在 B 列旁边的每一行中都有一个按钮,单击它会调用在相应行的 B 列中选择的操作,对吗?
在这种情况下,我建议您将 3 个按钮并排放置,以调用 3 个不同的宏。
您好,
增值税
我创建了用于更新数据库的小 excel 表单。效果很好,尽管工作人员正在做一些奇怪的事情并且必须每周用干净的版本替换 excel。所以我正在考虑创建更新 excel sheet(DutySelection) 的用户表单。 我有很多按钮(用户窗体)A4:A31 将控制单个宏,该宏根据 B4:B31 下拉列表选择
打开 3 个不同的用户窗体目前,无论我点击哪个按钮,我的代码都只能在 B4 上运行。 EG:B4选择Start,Start窗体打开。 B6选择Finish,Start窗体打开
Sub Duty()
If Sheets("DutySelection").Range("B4,B31") = "Start" Then
frmStart.Show
ElseIf Sheets("DutySelection").Range("B4,B31") = "Duty Type" Then
ReportUpdate.Show
Else: Sheets("DutySelection").Range("B4,B31") = "Finish" 'Then
frmFinish.Show
End If
End Sub
我想我漏掉了一两行,但就是无法在网上找到我需要的东西
Sheet.Range("B4,B31") return 并不像您想象的那样:它 return 是一个由 2 个区域组成的复合区域,区域 1 是单元格 B4区域 2 是单元格 B31。即,与 select 单元格 B4,然后 Ctrl-Clicked 单元格 B31 时得到的结果相同。
我认为您的意思是 "B4:B31",但这也 return 是其他东西:一个数组,其中填充了 B4 到 B31 范围内的所有单元格(的值)。您不能将它与那样的文本字符串进行比较。
您在这里要做的是遍历 B4 和 B31 之间的所有单元格,然后将它们的值与您感兴趣的文本进行比较。
另一个问题是您的代码只对它匹配的第一个文本起作用。因此,如果单元格 B4 包含 "Start",则永远不会对 ElseIf 求值,即使单元格 B5 包含 "Duty Type" 也是如此。处理此问题的最佳方法取决于您如何在 sheet.
的 B 列中获取这些文本如果我没理解错的话,在 B 列旁边的每一行中都有一个按钮,单击它会调用在相应行的 B 列中选择的操作,对吗?
在这种情况下,我建议您将 3 个按钮并排放置,以调用 3 个不同的宏。
您好, 增值税