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,但我认为这可以满足您的需求(?)。如果没有,让我们继续努力!

现在,如果我能弄清楚如何获取所选项目的实际名称,我会很好 - 但我似乎无法理解。