我有一个包含三个组合框和一个文本框的用户表单,我想用命名范围或公共变量填充。我在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命令来显示用户表单。
答案 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