我对userforms有疑问。目前我有一个设置了宏的论坛按钮,该宏将向用户显示用户表格,用户将在其中输入数据,然后将6张纸中的5张作为新书保存。我想这样做,所以文件名是基于ProjectName(Me.ProjectName.Value)的值,这是userform中的第一个字段。以下是我到目前为止的情况:
Private Sub CommandButton1_Click()
Dim iRow As Long
Dim ws As Worksheet
Set ws = Worksheets("Data List")
'find first empty row in database
iRow = ws.Cells.Find(What:="*", SearchOrder:=xlRows, SearchDirection:=xlPrevious, LookIn:=xlValues).Row + 1
'check for a Name number
If Trim(Me.ProjectName.Value) = "" Then
Me.ProjectName.SetFocus
MsgBox "Please complete the form"
Exit Sub
End If
'copy the data to the database
ws.Cells(iRow, 1).Value = Me.ProjectName.Value
ws.Cells(iRow, 2).Value = Me.ProjectNumber.Value
ws.Cells(iRow, 3).Value = Me.SPVComp.Value
ws.Cells(iRow, 4).Value = Me.Contact.Value
ws.Cells(iRow, 5).Value = Me.ProjMan.Value
ws.Cells(iRow, 6).Value = Me.PODate.Value
ws.Cells(iRow, 7).Value = Me.PONumber.Value
ws.Cells(iRow, 8).Value = Me.PRNumber.Value
ws.Cells(iRow, 9).Value = Me.EstTime.Value
MsgBox "Data added", vbOKOnly + vbInformation, "Data Added"
Sheets(Array("Document Data", "Invoice data", "Hours", "Summary", "Invoice")).Copy
fname = Application.GetSaveAsFilename(Filename:=Me.ProjectName.Value, FileFilter:="Excel Files (*.xlsm), *.xlsm")
ActiveWorkbook.SaveAs Filename:=fname, FileFormat:=52
'clear the data
Me.ProjectName.Value = ""
Me.ProjectNumber.Value = ""
Me.SPVComp.Value = ""
Me.Contact.Value = ""
Me.ProjMan.Value = ""
Me.PODate.Value = ""
Me.PONumber.Value = ""
Me.PRNumber.Value = ""
Me.EstTime.Value = ""
Me.ProjectName.SetFocus
我得到的错误是在Filename:=上找不到名称参数。我对VBA还很新,所以我不确定该怎么做。提前感谢您的帮助!
答案 0 :(得分:1)
方法scope: {
year:'=',
},
不支持参数Application.GetSaveAsFileName
。如果您想为用户建议初始文件名,请改用命名参数FileName
。