从工作表中读取列和行并绑定到组合框VB​​A

时间:2018-02-04 11:27:58

标签: vba excel-vba excel

我是VBA的初学者。我有一个场景来决定在同一工作簿上的另一个工作表中设计的自定义表单中绑定和操作来自不同工作表的数据的完美方式。

有两张不同年份的水果名称,另一张每年的数量。

这是Sheet 1数据。

enter image description here

基于此,我需要将这些年份绑定到一个下拉列表,结果是另一个下拉列表(基于它应该动态加载的年份)。由于我以前在.NET中的经验,所以如果我们将所有数据都视为数据表,那么使用某些过滤器或仅使用某些循环或使用LINQ就可以轻松操作。但是在VBA中,我们如何根据这些数据处理这些绑定和操作。此外,如果行不能始终在特定的单元格范围内,则可能会有更多。那么我们如何处理动态数据呢。

我尝试进行绑定的内容基于this link

Dim vArr as Variant
Dim i as Integer
vArr = WorksheetFunction.Transpose(Sheets(2).Range("A2:A10").value)
With Sheets(1).OLEObjects("ComboBox1").Object
     .Clear
     For i = Lbound(vArr) to Ubound(vArr)
        .AddItem vArr(i)
     Next i
End With 

1 个答案:

答案 0 :(得分:0)

你真的不应该在同一个问题中提出两个问题......但是因为你做了,我至少可以回答你的第二个问题:

  

“......如果行不能总是在特定的单元格范围内,可能会有更多。那么我们如何处理动态数据”

您可以使用此功能抓取最后一行:

Public Function lastRow(ByVal ws As Worksheet, Optional ByVal col As Variant = 1) As Long
    lastRow = ws.Cells(ws.Rows.Count, col).End(xlUp).Row
End Function

您可以使用:

Range("A2:A" & lastRow(Worksheets(2)))

现在,当你提出第一个问题时,我会更新我的答案。

相关问题