2017-03-11 12 views
0

このコードは、シートが存在するかどうかをチェックし、ブール値を返す関数を定義しています。 Subはブックをアクティブ化しようとしています。次に、シート(DataEntry)をチェックして行を繰り返し、チーム名が既にシートであるかどうかをチェックし、その名前の新しいシートを作成せずにそのシートにデータを貼り付ける。シートが存在する場合、シートは既存のシートにコピーされます。それから、マッチ番号に1を加えて、データをペーストする行を決定するときにペーストするようにします。しかし、シート上のボタンで実行しようとすると、byref引数の型不一致エラーが出ます。コンパイルエラー:ByRef引数の型の不一致が新しいシートの作成

何が間違っている可能性について考えていますか?

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 

答えて

3

teamnameStringときFunction shtexists(shtname As Worksheet) As Booleanshtname As Worksheet、これは実行時エラーが発生しますしているときは、If shtexists(teamname) Thenを呼んでいます。 shtnameStringである必要があります。

にご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 
+1

またはその他の方法 - ()(ワークシート "TEAMNAME")をこの 'shtexistsようにそれを呼び出すには、' – Wujaszkun

+0

@Wujaszkunは、他の "タイプミス" ことを逃した、ありがとう –

関連する問題