[[20230903144633]] 『ByRef引数の型が一致しませんのエラー回避』(勉強中) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『ByRef引数の型が一致しませんのエラー回避』(勉強中)

表題のエラーで理由が分からない事例が2つあります。
アドバイス頂けますと助かります。

<事例1>
モジュール1に下記コードを書いて、
Sub フィルタ掛かっていればクリア(ws As Worksheet)

    If ws.FilterMode = True Then ws.ShowAllData
End Sub

モジュール2にCallで呼び出したいのですがエラーになります。
Sub フィルタクリア()

    Set ws = ThisWorkbook.Worksheets("Sheet1")
    Call フィルタ掛かっていればクリア(ws)
End Sub

※Call フィルタ掛かっていればクリア(ActiveSheet) とすると動きます。
 ActiveSheetでなく、変数で取得したシート名でCallで動かすにはどのように書けばよいのでしょうか。

<事例2>
モジュール1に下記コードを書いて、
Function Get最終行(ws As Worksheet, C As Long) As Long

    Get最終行 = ws.Cells(ws.Rows.Count, C).End(xlUp).Row
End Function

モジュール2でSheet1のA列の最終行を取得する際にGet最終行を使いたいのですがエラーになります。
Sub 最終行取得()

      Set ws = ThisWorkbook.Worksheets("Sheet1")
      MsgBox Get最終行(ws, 1)
End Sub

事例1も2も「ByRef引数の型が一致しません」となります。
CallやFunctionの使い方を勉強し始めたばかりで、引き渡しのルールが調べてもいまいちピンときません。
よろしくお願いいたします。

< 使用 Excel:Microsoft365、使用 OS:Windows10 >


 >事例1も2も「ByRef引数の型が一致しません」となります。

 ならば、型を宣言してください。

(マナ) 2023/09/03(日) 15:20:33


マナ様

ありがとうございました。
呼び出し先にちゃんと型を宣言しないとだめ…という事だったのですね。。。
「Dim ws As Worksheet」と書くことで動きました。

(勉強中) 2023/09/03(日) 16:02:07


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.