动态组合框基于来自不同工作表的行

时间:2012-05-14 08:03:29

标签: dynamic combobox excel-vba vba excel

我在Excel 2010的工作簿中有2张。第一张有一行名字,如下所示: Jens A. 基督教 彼得 Jens A. 安德斯 Jens A.等。

在第二张纸上,我想制作一个组合框,它显示第一张纸上的所有名称,但没有重复。这可以用VBA代码制作吗?

另外我想让列表动态化,但我想我只需要调用函数:

Private Sub Workbook_Open()

要实现这一目标吗?

提前完成

1 个答案:

答案 0 :(得分:0)

请检查以下宏。它可以在2列上运行,但您可以对其进行调整。

Option Explicit
Sub UniqueRecords()

Dim i As Long
Dim j As Long
Dim k As Long
Dim bDuplicate As Boolean

i = 1
Do Until Cells(i, 1).Value = ""

  'check if record exist
  j = 1
  Do Until Cells(j, 2).Value = ""
    bDuplicate = False
    If Cells(i, 1).Value = Cells(j, 2).Value Then
      bDuplicate = True
      Exit Do
    End If
  j = j + 1
  Loop

  'add record if no duplicate
  If bDuplicate = False Then
    For k = 1 To ActiveSheet.Rows.Count
      If Cells(k, 2).Value = "" Then
        Cells(k, 2).Value = Cells(i, 1).Value
        Exit For
      End If
    Next k
  End If

i = i + 1
Loop

End Sub