有没有办法使用UserForms将数据插入到单元格或电子表格中,而不是直接插入VBA代码。
代码非常简单,它在SQLserver上运行并执行查询。我想让用户可以修改查询(内置在VBA代码中)并每天更改日期。
Set conn = New ADODB.Connection
conn.Open "Driver=Teradata;DBCName=dsnname;Databasename=dbname;Uid=Userid;Pwd=****;"
thisSql = "sel * from customer_db.customer where **Date = '2014-12-31'** "
Set rec1 = New ADODB.Recordset
rec1.Open thisSql, conn
Destination:=Sheet2.Range("A1")
我想用UserForm或类似的东西更改日期,是否可能? 提前谢谢
答案 0 :(得分:0)
为了让用户窗体向宏返回一个值,最简单的选项是在用户选择日期后隐藏它,而不是将其卸载。然后,您可以从代码中检索可在userform上找到的所有值。
例如,如果你有一个简单的表单,只有一个名为dtpDate的日期选择器和两个命令按钮; " OK"和"取消",您在userform代码中输入的内容将是这样的:
Private Sub cmdCancel_Click()
Unload Me
End Sub
Private Sub cmdOK_Click()
Me.Hide
End Sub
Private Sub UserForm_Initialize()
dtpDato = Date
End Sub
在您的宏中,您可以使用此类内容让用户"修改"查询字符串:
Set conn = New ADODB.Connection
conn.Open "Driver=Teradata;DBCName=dsnname;Databasename=dbname;Uid=Userid;Pwd=****;"
ufUserFormName.Show
thisSql = "sel * from customer_db.customer where **Date = '" _
& Format(ufUserFormName.dtpDato, "yyyy-mm-dd") & "'** "
Unload ufUserFormName
Set rec1 = New ADODB.Recordset
rec1.Open thisSql, conn
Destination:=Sheet2.Range("A1")
如果宏在尝试从中读取值时未加载用户窗体,则代码将失败,但如果您决定使用此选项,则不应该检查此内容。例如,您可以找到检查here的函数。