我有一个选择不同国家/地区的验证列表。每个国家都有不同的卖家,我也必须为他们制作验证清单。问题是我每次选择不同的国家时都必须手动(带按钮)运行宏。我希望每次使用国家验证列表时都运行/激活宏,而不是手动(按钮)。
我不认为我正在使用的任何代码都需要解决我的问题。无论如何,我会发布最后一部分。
Dim strFormula1 As String
strFormula1 = "=$z$1:" & Worksheets("graficos").Range("z1").End(xlDown).Address()
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=strFormula1
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
答案 0 :(得分:3)
在工作表类模块中的 Worksheet_Change 事件处理程序中调用宏。
在底部的工作表标签上,右键单击并选择查看代码。这将打开VB编辑器,显示工作表的代码窗格。
在那里,从左上角的对象下拉列表中选择工作表,从右上角的事件下拉列表中选择更改。
在事件处理程序中,粘贴代码以调用宏
答案 1 :(得分:3)
不确定这是否与您相关,但您是否可以使用INDIRECT公式创建验证列表,根据框1中的选择而不是使用宏来返回结果?例如:
清单1包含英格兰,苏格兰,威尔士和爱尔兰
再制作4个名为英格兰,苏格兰,威尔士和爱尔兰的名单,并在每个名单中列出每个国家的相关选项。将每个范围命名为英格兰,苏格兰等......
然后创建新的数据验证列表,其源为= INDIRECT(英格兰)= INDIRECT(苏格兰)等。
道歉,如果这不是很清楚。我在下面列举了一个汽车车身修理厂的例子,他们首先从TYPE列表中选择,第二个列表根据类型选择的内容而改变。所有粗体项都是范围名称
<强> TYPE 强> ? 合金 保险杠 面板 质地 内部
<强>合金强> ? N / S / F N / S / R O / S / F O / S / R
<强>杠强> ? N / S / F角落 O / S / F角落 N / S / F插入 O / S / F插入 前中心 全面 N / S / R角落 O / S / R角落 N / S / R插入 O / S / R插入 后方中心 全后方
<强> PANEL 强> ? N / S Wing N / S / F门 N / S / R门 N / S季度 N / S车顶轨道 N / S Sill N / S镜帽 N / S / F门把手 N / S / R门把手 N / S / F门模塑 N / S / R门模塑 O / S翼 O / S / F门 O / S / R门 O / S Quarter O / S车顶导轨 O / S Sill O / S镜帽 O / S / F门把手 O / S / R门把手 O / S / F门模塑 O / S / R门模塑 邦尼特 尾门 屋顶 全波兰语
<强>织构强> ? N / S / F保险杠角 O / S / F保险杠角 N / S / F保险杠插件 O / S / F保险杠插件 前保险杠中心 全前保险杠 N / S / R保险杠角 O / S / R保险杠角 N / S / R保险杠插件 O / S / R保险杠插件 后保险杠中心 全后保险杠 N / S镜帽 N / S成型 O / S镜帽 O / S成型
<强> INTERIOR 强> ? N / S / F座位 O / S / F座位 N / S / R座位 O / S / R座椅 N / S / F地毯 O / S / F地毯 N / S / R地毯 O / S / R地毯 仪表板 屏幕芯片