Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 在单元格内以编程方式插入组合框_Excel_Combobox_Vba - Fatal编程技术网

Excel 在单元格内以编程方式插入组合框

Excel 在单元格内以编程方式插入组合框,excel,combobox,vba,Excel,Combobox,Vba,我想在活动单元格中插入对象curCombo组合框,而不定义宽度和高度。在我的一些测试中,我运用了这种原理,但我没有得到同样的效果 Set curCombo = ActiveSheet.Shapes.AddFormControl(.Left, .Top, .Width, .Height) 这是我的密码: Sub comboBox1() Dim curCombo As Object '// Main challange is this set procedure here.

我想在活动单元格中插入对象
curCombo
组合框,而不定义宽度和高度。在我的一些测试中,我运用了这种原理,但我没有得到同样的效果

Set curCombo = ActiveSheet.Shapes.AddFormControl(.Left, .Top, .Width, .Height)
这是我的密码:

Sub comboBox1()
    Dim curCombo As Object

    '// Main challange is this set procedure here.
    Set curCombo = ActiveSheet.Shapes.AddFormControl(xlDropDown, _
    Left:=Cells(ActiveCell.Row, 3).Left, _
    Top:=Cells(ActiveCell.Row, 3).Top, Width:=100, Height:=20)

    With curCombo
        .ControlFormat.DropDownLines = 3
        .ControlFormat.AddItem "1", 1
        .ControlFormat.AddItem "2", 2
        .ControlFormat.AddItem "3", 3
        .Name = "myCombo" & ER.Row
        '.OnAction = "myCombo_Change" & ER.row
    End With
End Sub

您的意思是,您指定的任何单元格都应该与该单元格重叠吗?-西德哈特路1小时前


是的,先生。事实就是如此阿拉蒂奥德3分钟前

这就是你想要的吗

Sub comboBox1()
    Dim curCombo As Object
    Dim ws As Worksheet
    Dim rng As Range

    '~~> Change this to the relevant sheet
    Set ws = ActiveSheet

    With ws
        '~~> Change this to the relevant cell where
        '~~> you want the combobox
        Set rng = .Range("B5")

        Set curCombo = .Shapes.AddFormControl(xlDropDown, _
                                              Left:=rng.Left, _
                                              Top:=rng.Top, _
                                              Width:=rng.Width, _
                                              Height:=rng.Height)

        With curCombo
            .ControlFormat.DropDownLines = 3
            .ControlFormat.AddItem "1", 1
            .ControlFormat.AddItem "2", 2
            .ControlFormat.AddItem "3", 3
            .Name = "myCombo" & ER.Row
            '.OnAction = "myCombo_Change" & ER.row
        End With
    End With
End Sub
屏幕截图


您面临什么问题?什么是
ER.row
?ER.row只是excel的一个坐标,当我在工作表中创建新行时,它会增长。我所面临的没有任何错误消息。我只想创建一个100%适合excel单元格的组合框。Set curCombo=ActiveSheet.Shapes.AddFormControl(.Left、.Top、.Width、.Height)这在某种程度上与我以前的测试有效。您的意思是指定哪个单元格应该重叠?是的,先生。是这样的,哇。谢谢你,伙计!这段代码对我帮助很大!很高兴它对你有用。我建议您了解代码的工作原理:)