xlwings:如何从 python UDF 将值写入组合框
xlwings: How to write values to a combo box from python UDF
我是在 excel VBA 编程中使用 xlwings 的新手。
我需要将 python UDF 列表中的值发送到 excel sheet 中的组合框。
我在 Example 2 找到了一个示例,但我无法在我的代码中使用它。
是否有一个简单的示例将列表中的值写入组合框,然后读回一个值并发送到 python UDF?
我想我知道你想做什么 - 这是我在电子表格上填充组合框控件(不是 ActiveX)的方法:
def fill_name_cb():
cb = ct.WS_MAIN.shapes("cbNames").api.ControlFormat
cb.RemoveAllItems()
cb.AddItem("Select Client")
cb.AddItem("Add New Client")
cb.AddItem("Update List")
for name in ct.CLIENT_NAMES:
cb.AddItem(name)
cb.ListIndex = 1
变量ct.CLIENT_NAMES
是一个简单的列表,如["Name 1","Name 2", "etc"]
然后,在 VBA 中,我有这个使用 RunPython
:
运行它的宏
Sub fillComboBox()
RunPython ("import helpers; helpers.fill_name_cb()")
End Sub
helpers
是 Python 模块的名称。所以这并不完全使用 UDF,但我认为这可以满足您的需求(?)。如果没有,让我们继续努力!
现在,如果我能弄清楚如何获取所选项目的实际名称,我会很好 - 但我似乎无法理解。
我是在 excel VBA 编程中使用 xlwings 的新手。
我需要将 python UDF 列表中的值发送到 excel sheet 中的组合框。
我在 Example 2 找到了一个示例,但我无法在我的代码中使用它。
是否有一个简单的示例将列表中的值写入组合框,然后读回一个值并发送到 python UDF?
我想我知道你想做什么 - 这是我在电子表格上填充组合框控件(不是 ActiveX)的方法:
def fill_name_cb():
cb = ct.WS_MAIN.shapes("cbNames").api.ControlFormat
cb.RemoveAllItems()
cb.AddItem("Select Client")
cb.AddItem("Add New Client")
cb.AddItem("Update List")
for name in ct.CLIENT_NAMES:
cb.AddItem(name)
cb.ListIndex = 1
变量ct.CLIENT_NAMES
是一个简单的列表,如["Name 1","Name 2", "etc"]
然后,在 VBA 中,我有这个使用 RunPython
:
Sub fillComboBox()
RunPython ("import helpers; helpers.fill_name_cb()")
End Sub
helpers
是 Python 模块的名称。所以这并不完全使用 UDF,但我认为这可以满足您的需求(?)。如果没有,让我们继续努力!
现在,如果我能弄清楚如何获取所选项目的实际名称,我会很好 - 但我似乎无法理解。