编译错误:ByRef参数types不匹配创build新工作表

这段代码定义了一个函数来检查Sheet是否存在,并返回一个布尔值。 小组试图激活工作簿。 然后检查工作表(DataEntry)并遍历行并检查组名是否已经是工作表,如果不是创build该工作表的新工作表并将数据粘贴到工作表中。 如果工作表存在,则将其复制到现有工作表中。 然后它将匹配号码加1,这样当它再次粘贴时,它决定了哪一行粘贴了数据。但是当我试图通过表单上的button运行它时,它给了我byref参数types不匹配错误。

有什么想法可能是错的?

Function shtexists(shtname As Worksheet) As Boolean Dim sht As Worksheet Set sht = Sheets(shtname) On Error GoTo 0 SheetExists = Not sht Is Nothing End Function Sub AddData() Workbooks("ScoutingDatabseMaster.xlsm").Activate Dim teamname As String Dim countery As Integer Dim matchnumber As Integer matchnumber = 1 countery = 4 teamname = Range("B4", "B" & countery) For countery = 4 To 9 If shtexists(teamname) Then Worksheets("DataEntry").Range("C" & countery, "M" & countery).Copy Worksheets(teamname).Range("A" & matchnumber).Paste If teamname = "" Then MsgBox ("You forgot to Enter a Team Number!") Else Sheets.Add.Name = teamname End If Next countery matchnnumber = matchnumber + 1 countery = 4 End Sub 

你正在调用If shtexists(teamname) Thenteamname是一个String ,而Function shtexists(shtname As Worksheet) As Booleanshtname As Worksheet ,这将引发运行时错误。 shtname应该是String

将您的Function声明更改为:

 Function shtexists(shtname As String) As Boolean Dim sht As Worksheet Set sht = Sheets(shtname) On Error GoTo 0 shtexists = Not sht Is Nothing End Function