Userform组合框在初始化时不填充

时间:2013-12-18 15:06:17

标签: excel-vba userform vba excel

我有一个包含三个组合框和一个文本框的用户表单,我想用命名范围或公共变量填充。我在Windows上使用Excel 2010。这是我有的: 首先,我运行一些将一个工作表转换为新配置的代码。然后我调用userform,它将设置进一步更新工作表所需的变量。我在Mac上完成了这项工作并且它可以工作,但我正在将其从mac转换为Windows服务器。我认为这将是一个简单的部分,但由于某种原因它不起作用。

以下是userform的代码。

Public KorS As String
Public ActivityID As String
Public Stage As String
Public varsaveme As String


Private Sub ufStageDt_Initialize()

AD = varsaveme & ".xls"
duh = KorS

Set Me.tbAdName.Text = duh
Set UserForm1.Caption = AD

'Set Me.cmbLowDt.List = "AnnDt"
Set Me.cmbHighDt.List = "AnnDt"
Set Me.cmbStage.List = "Stage"
Me.cmbLowDt.List = "AnnDt"

End Sub

公共变量出现在工作表的代码中。

以下是我在Mac上使用的代码。

Private Sub UserForm_Initialize()

Ad = varsaveme & ".xls"

duh = KorS

tbAdName.Text = varsaveme
UserForm.Caption = Ad


cmbLowDt.List = Range("AnnDt").Value
cmbHighDt.List = Range("AnnDt").Value
cmbStage.List = Range("Stage").Text

End Sub

非常感谢任何帮助。我在vba脚本中使用ufStageDt.Show命令来显示用户表单。

1 个答案:

答案 0 :(得分:5)

Set不起作用,所以消除它。此外,List需要一个数组。对于单个硬编码项目,请使用Additem

Me.cmbHighDt.Additem "AnnDt"

编辑:“AnnDt”是一个命名范围:

Me.cmbHighDt.List = Application.Transpose(ActiveSheet.Range("AnnDt"))

EDIT2:日期:

Private Sub UserForm_Initialize()
Dim i As Long
With Me.cmbHighDt
    .List = Application.Transpose(ActiveSheet.Range("AnnDt"))
    For i = 0 To .ListCount - 1
        .List(i) = Format(.List(i), "yyyy-mm-dd")
    Next i

    'to get it back to a date
    ActiveSheet.Range("B1") = DateValue(.List(0))
End With

End Sub