VBA Excel中的子对象或函数

VBA Excel中的子对象或函数,vba,excel,Vba,Excel,我正在尝试创建一个函数或子函数,以便在VBA Excel中创建报表。我希望用户在两个单独的文本框中输入两个日期。然后,当单击submit按钮时,它会检查文本框是否为空,如果不是,则会执行CreateReport()子或函数,该子或函数将创建一个新工作表并向其添加数据。这是我的密码: 用户表单2: Private Sub Cancel_Click() Unload Me End Sub Private Sub Submit_Click() If UserForm2.Date1.Value =

我正在尝试创建一个函数或子函数,以便在VBA Excel中创建报表。我希望用户在两个单独的文本框中输入两个日期。然后,当单击submit按钮时,它会检查文本框是否为空,如果不是,则会执行CreateReport()子或函数,该子或函数将创建一个新工作表并向其添加数据。这是我的密码:

用户表单2:

Private Sub Cancel_Click()
 Unload Me
End Sub

Private Sub Submit_Click()

If UserForm2.Date1.Value = "" & UserForm2.Date2.Value = "" Then

Value1 = UserForm2.Date1.Value
Value2 = UserForm2.Date2.Value
CreateReport(Value1,Value2)

End If

End Sub

Private Sub UserForm_Initialize()
Date1.SetFocus
Dim Value1 As String
Dim Value2 As String
End Sub
模块1:

Option Explicit
Public Function CreateSheet(Name1 As String, Name2 As String)
Dim WS As Worksheet
Dim FullName As String
FullName = Name1 & "-" & Name2
Set WS = Sheets.Add.Name = FullName
End Function

Public Sub CreateReport(Date1 As String, Date2 As String)

End Sub

当没有输入日期时,您正在调用
CreateReport

应该是

CreateReport Value1, Value2
除非调用函数或使用Call关键字,否则不要使用括号

应该是

Set WS = Sheets.Add()
WS.Name = FullName

您对此代码有问题吗?如果是,在哪里?是否存在错误,或者它只是不能产生您期望的结果?唯一的错误是CreateReport()在userforum中是红色的。如果不返回值,不要使用
函数
,而是使用
Sub
/过程。好的,但它仍然是红色的,我将代码放入Sub,并且仍然是红色的。重点是
函数
返回值,而
Sub
不返回值。此外,在编写代码时,请考虑正确地缩进代码,然后在阅读时感谢自己。非常感谢。我非常习惯用C++和其他语言编码,我认为你必须使用括号来完成这个调用。
Set WS = Sheets.Add.Name = FullName
Set WS = Sheets.Add()
WS.Name = FullName