excel - 如何在事件单元格中创建组合框?

标签 excel vba vbscript combobox basic

我想创建一个脚本,选择第一个空白行,然后在该行的“A”列中放置一个下拉列表。然后我想使用 .additem("") 添加我需要的项目。我该怎么做?

提前致谢。

最佳答案

试试这个

Sub AddComboBox(Col As Long)
    Dim LastRow As Range

    With ThisWorkbook.ActiveSheet
    Set LastRow = .Cells(.Rows.Count, Col).End(xlUp)
    End With

    With ActiveSheet.OLEObjects.Add(ClassType:="Forms.ComboBox.1", _
                                    Link:=False, _
                                    DisplayAsIcon:=False, _
                                    Left:=0, _
                                    Top:=LastRow.Top + LastRow.Height, _
                                    Width:=100, _
                                    Height:=16)
        With .Object
            .AddItem "Hi"
        End With
    End With
End Sub

15 是默认行高。当您的行具有不同的高度时,所有的赌注都会失败。

编辑 1:根据您的评论,您可以通过从另一个子程序调用它来尽可能多地使用它。我已向第一个名为 Col 的子项添加了一个参数,它是您的列的 ID。

Sub Main()
Dim I As Long
For I = 1 To 3
AddComboBox I
Next
End Sub

编辑 2:我已经合并了 dee 处理可变行高的富有成效的注释。

关于excel - 如何在事件单元格中创建组合框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28517770/

相关文章:

string - 查看是否存在某个字符

html - 无法禁用我的嵌入视频的控件?

vbscript - 本主题是关于用于从文件读取结果的 VBscript

VBA循环遍历两个excel列中的值

javascript - Angularjs 数字过滤器无法与 ui 网格正常工作

vba - 如何制作可调整大小的用户窗体?

excel - 在 VBA for Excel 中使用 SOAP 更新共享点列表中的查找字段

javascript - 在所有窗口上方运行 hta

vba - 我的简单 MsgBox VBA 会停止整个电子表格,除非我单击 "ok"?

excel - 在 R 中,如何找到最佳变量以最大化或最小化两个数据集之间的相关性