将combobox加载到另一张纸的范围内

时间:2015-09-23 23:18:06

标签: excel excel-vba combobox excel-2010 vba

我在一张名为 Sub Validar_Idades() Dim aba1 As Worksheet Set aba1 = Sheets("IDADE") Dim aba2 As Worksheet Set aba2 = Sheets("EXTRAÇÃO") aba2.ComboBox1.Clear aba2.ComboBox1.List = aba1.range("A2:A" & aba1.range("A" & aba1.Rows.Count).End(xlUp).Row).Value End Sub 的表格中有一个组合框,带有一个组合框,

enter image description here

我写了这段代码:

combobox1

为什么我看不到scrollview

2 个答案:

答案 0 :(得分:0)

Worksheet对象和Sheet对象之间存在重要区别:

  • 工作表只能包含数据(在单元格中)
  • 工作表可以包含数据,以及其他对象,如图表,组合框,列表框等

  • 声明工作表变量使用工作表类型

  • 声明Sheet变量使用其CodeName,它出现在括号中的名称之前:

enter image description here

尝试下面的两个选项之一

Option Explicit

Sub Validar_Idades()

    Dim aba1 As Worksheet           'Worksheet contain only data (no objects)
    Set aba1 = Worksheets("IDADE")

    'To declare a variable of type Sheet you need to use its "CodeName"

    Dim aba2 As Sheet2              'Sheet can contain data and other objects
    Set aba2 = Sheets("EXTRAÇÃO")   'like ListBoxes, Charts, ComboBoxes, etc

    aba2.ComboBox1.Clear
    aba2.ComboBox1.List = aba1.Range("A2:A" & _
                                aba1.Range("A" & aba1.Rows.Count).End(xlUp).Row).Value
End Sub
Sub Validar_Idades2()

    'or simply use its code name instead of a variable

    Sheet2.ComboBox1.Clear
    Sheet2.ComboBox1.List = Sheet1.Range("A2:A" & _
                                Sheet1.Range("A" & Sheet1.Rows.Count).End(xlUp).Row).Value
End Sub

答案 1 :(得分:0)

container.Register(typeof (IUnitOfWork), typeof (EntityFrameworkRepository<>), Lifestyle.Scoped); container.Register(typeof (IEntityWriter<>), typeof (EntityFrameworkRepository<>), Lifestyle.Scoped); container.Register(typeof (IEntityReader<>), typeof (EntityFrameworkRepository<>), Lifestyle.Scoped); 类没有Worksheet属性 - 因为当然不是每个工作表都有对它的控制 - 这就是编译器对您的代码进行反对的原因。除了使用代号之外,正如Paul Bica所建议的那样(虽然没有通用的Sheet对象 - 每个工作表实际上都是它自己的类),你可以简单地将变量声明为combobox1而不是Object所以代码是后期绑定的,编译器不会成为对象。或者,您可以通过Worksheet类的OLEObjects属性访问控件:

Worksheet